我用的板子是sama5d3xek,原來板子內核是linux-at91-3.13,升級使用linux-at91-4.10
首先去官網下載一個linux—at91-4.10壓縮包,然后在ubuntu里解壓,進入源文件目錄,我這里用的是arm板子所以更改Makefile
如下 vi Makefile
使的 ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
改為 ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
然后保存退出
查看arch/arm/configs/sama5_defconfig
輸入命令make ARCH=arm sama5_defconfig
在輸入 make ARCH=arm menuconfig 進行內核相關的配置(注意配置時候盡量把窗口最大化)
然后在 make -j4 ARCH=arm 進行內核編譯生成 zImage
如果要uImage可以執行 (無加載地址時)
LOADADDR=0x20008000
export LOADADDR
make ARCH=arm uImage
有加載地址直接make ARCH=arm uImag
編譯device tree
make ARCH=arm dtbs 就可以了
最終得到 zImage uImage和sama5d3*。dtb
Ⅱ 網卡驅動的添加
我這里需要的是1000M的dp83867網卡驅動,發現linux4.3以上版本都有他的網卡驅動程序,
果斷移植過來,dp83867。c和 ti-dp83867.h文件 然后進行內核配置,出現了一次錯誤,
把4.3內核的phy。h中的
static inline bool phy_interface_is_rgmii(struct phy_device *phydev)
{
return phydev->interface >= PHY_INTERFACE_MODE_RGMII &&
phydev->interface <= PHY_INTERFACE_MODE_RGMII_TXID;
};復制到4.10中,更改Makefile和Kconfig文件
重新配置編譯內核,ok