3 uboot加载内核

imx6开发板,采用SD卡的方式启动时,根据官方手册指导要将zImage和设备树分别下载到SD卡的不同位置,命令如下:

sudo dd if=<zImageName> of=/dev/sd<partition> bs=512 seek=2048 conv=fsync && sync

sudo dd if=<DevicetreeName>.dtb of=/dev/sd<partition> bs=512 seek=20480 conv=fsync

    而在uboot加载zImage和设备树时,展开bootcmd最终为

fatload mmc 1:1 0x80800000 zImage

fatload mmc 1:1 0x83000000 imx6ull-14x14-evk.dtb

含义为从 mmc1 的分区中读取 zImage 和 设备处 到DDR内存的相应位置处,然后加载内核。烧写zImage和设备树时直接烧写到了SD卡的绝对地址出,加载时却是从mmc的分区1加载的,这个烧写的位置和分区的对应关系在代码的哪里可以体现出来呢?为什么是从分区1加载呢?

请先 登录 后评论

2 个回答

百问网_赵老师
擅长:嵌入式开发

1.用dd命令是"裸写",只是把文件的数据原始地写到emmc

2.那么读出来时,也只能"裸读",uboot中应该有读取emmc原始数据的命令

3.不应该用fatload,它是读取fat分区里面的文件,你并没有把zImage等放入FAT分区

请先 登录 后评论
LZJ

我明白了,老师。还有一个问题为什么我的新的SD卡,接入到ubuntu中,会识别出 /dev/sdb 和 /dev/sdb1 两个设备呢?不应该是一个设备吗?

请先 登录 后评论