本帖最后由 hi我歌月徘徊 于 2020-4-6 11:52 编辑
使用如下uboot指令 可以运行裸机实验 printf.bin(11.6KB)tftp 87800000 printf.bin
go 87800000
然后我就有一些想法,8780 0000这个地址本身也是uboot的运行地址啊,为啥把这个地址的数据改变之后 uboot还可以正常运行呢?
我又反复读了开发指南 总结如下
开发板的DDR(256M)起始地址 0x8000 0000 -- 0x8FFF FFFF uboot和裸机实验的链接地址都为0x8780 0000
以裸机实验生成的led.bin为例, 通过imxdownload下载到SD卡里面的bin文件 在内存里是这样的: 0x0000 0000 | | | IVT+Boot data + DCD = 3k字节 | | |
最终下载到0x8780 0000这个地址的数据为IVT+Boot data + DCD + led.bin 也就是load.imx文件,在DDR的内存里应该是这样的: 0x8000 0000 | | | IVT+Boot data + DCD = 0xC00(3k字节) | | | | | | |
1.87800000这个地址实际上保存的不是uboot,而是IVT的一些数据
2.87801000这个地址上才是uboot的开始
然后还是没有解决我的疑问
虽然8780 0000这个地址保存的不是uboot 但也是IVT的一些指令 覆盖之后也不会破坏uboot
但是如果我tftp下载的文件大于4k 那就超过了0x8780 1000这个地址 也就是覆盖了uboot了 为啥uboot还能正常运行呢?
|