1.用dd命令是"裸写",只是把文件的数据原始地写到emmc
2.那么读出来时,也只能"裸读",uboot中应该有读取emmc原始数据的命令
3.不应该用fatload,它是读取fat分区里面的文件,你并没有把zImage等放入FAT分区
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加载呢?