arm 通過 uImage + dtb 啓動

之前都是使用 uboot 通過 zImage+dtb的方式來啓動內核。後面需要通過 uImage來啓動。方式如下:

先編譯好 uImage  參考我之前的一篇博客編譯uImage

 uboot傳遞設備樹

uboot從v1.1.3開始支持設備樹,爲了使用設備樹,需要在config文件裏配置

#define CONFIG_OF_LIBFDT

在uboot中可以從nandflash mmc sd tftp 任意介質中讀取.dtb,假設 .dtb文件在內存的地址爲 0x71000000,之後可以再uboot中運行fdt addr 命令設置.dtb的地址
    
Uboot> fdt addr 0x71000000

fdt的其他命令就變得可以使用,如
    
fdt resize
fdt print

 

然後下載 uImage   dtb

對於arm來講,啓動命令的格式

bootm  kernel_addr  initrd_addr  dtb_addr

第一個參數是內核地址,第二個參數是initrd的地址(如果不存在initrd,可以用 “-”代替),第三個參數是設備樹地址


這裏向kernel_addr地址下載的文件是 uImage

編譯 uImage是需要指定loadaddr,loadaddr的值就是這裏的kernel_addr值
編譯uImage的命令如下:
make -j 16 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-  LOADADDR=0x12000000 uImage

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章