一、 配置交叉編譯器:
內核構建世與宿主機相同的體系架構鏡像。嵌入式Linux需要交叉編譯,需要設置兩個變量ARCH和CORSS_COMPILE
1、 ARCH:表明架構,這里世arm架構;
2、 CORSS_COMPILE:交叉編譯器的前綴這里是arm-linux-。在解壓的內核文件了,內核頂層的Makefile里面可以看到如下圖:
二、 內核的一些命令:
1、 “清除“相關的命令”
clean:刪除生成(1)文件,但保留 (2) 配置文件 +(3) 足夠編譯外部模塊的信息文件
mrproper:1+2+3
distclean:~+編譯器文件 + 補丁文件
2、 內核裁剪方法:
xconfig:圖形化—鼠標(需要QT庫的支持,喜歡用鼠標的)
config:一項一項問你(不建議)
nconfig:圖形化,不能用鼠標
menuconfig:菜單配置(使用最廣泛的,只能用鍵盤)
3、 編譯生成zlmage映像命令
make all:編譯所有目標,最終也會生成zlmage
make zlmage:只生產zlmage(模塊不會被編譯,加快了編譯速度)
make ulmage:生成zlmage和ulmage(ulmage世在zlmage前面一個64字節的頭信息),執行這條命令需要u-boot編譯出來的一個工具mkimage,需要cp tools/mkimage /bin/.config ---uimage世u-boot專用引導文件
4、 最終生成的默認位置arch/arm/boot/
三、 內核配置方法:
1、 生成內核zImage文件,.config。
2、 兩方法:
1、 make menuconfig 進行逐項配置, 但是這個太慢, 一般都載入相近配置, 然后再使用 make menuconfig 進行局部修改,具體做法:ls arch/arm/configs/ | grep exynos (查找看有沒有和exynos芯片相關的配置)
make exynos4_defconfig(說明:exynos4_defconfig不是這個文件不對專門針對 Tiny4412 這款開發板的, 所有直接使用它配置編譯出來內核
可能不能在 Tiny4412 上運行, 還需要進一步調整。)
make menuconfig
2、 根據上面方法 1 的原理, 直接把配置文件復制命名為.config.具體做法
cp arch/arm/configs/exynos4_defconfig .config
make menuconfig
這里我直接用友善之臂提供的tiny4412_linux_defconfig 進行配置
3、 配置以下選項:
-> System Type
-> Support TrustZone-enabled Trusted Execution Environment 配置為[n] (按 n 鍵取消選擇)
然后, 退出保存配置。
四、 寫一個類似u-boot的sd_fusing.sh文件
五、 類似u-boot的燒寫步驟燒寫到SD卡
六、使用u-boot引導內核
啟動開發板,進入命令行,設置啟動命令bootcmd環境變量
TINY4412 # setenv bootcmd 'movi read kernel 0 40008000;bootm 40008000'
TINY4412 # printenv bootcmd
bootcmd=movi read kernel 0 40008000;bootm 40008000
movi read kernel 0 40008000 從 SD 卡中讀取 zImage 到內存的 0x40008000 地址
bootm 40008000 到 0x40008000址引導操作系統
注意:0x40008000 地址不是惟一, 但是不是任意, 一般需要在 40008000 之后。 0x8000 這個偏移是最常用的一個
值。 41000000 , 42000000 都是可以的。
七、重啟板子