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

 

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