|
发表于 2020-5-10 11:31:31
|
显示全部楼层
楼主您好,本人对这种芯片的启动流程始终不太理解,我现在的理解不知道对不对?
1.keil编译程序生成*.bin文件。
2.mksunxi.exe 添加check sum和SPL部分的长度信息到*.bin。
3.将带有Check sum和SPL长度信息的*.bin烧写到SPI Flash。
4.芯内部bootloader,跟据添加的Check sum和SPL部分长度,将spl部分加载到SRAM_A(0x00010000-0x0001ffff),并从0x00010000开始运行
5.SPL部分初始化好时钟和SDRAM后,运行copyself,将整个*.bin拷贝到SDRAM(0x80080000)
6.然后继续运行到_main(),由keil IDE接管跟据sct文件链接地址将相应的RW,ZI段拷贝到相应地址
5.keil完成相关拷贝后,再调用用户main()函数。
如果是这样的话,我有个疑问,整个*.bin编译链接地址都是在SDRAM(0x8008 0000),也就是说得放在0x8008 0000这个地址时,程序才能正确运行
但是执行到第4步的话,是将spl部分加载到SRAM_A(0x0001 0000),这样程序怎么能在这个位置运行呢? |
|