项目需求:芯片RT1051,内部RAM512KB,外部Flash32MB,外部SDRAM16MB,基于以上配置,我自设计了一个BootLoader,在里面实现升级检测与升级功能,当没有升级时,从Flash拷贝加载用户代码(约400KB,含芯片驱动和一个实时系统)到SDRAM运行正常,但是系统运行速度较慢,为了提升系统运行速度,现在想把用户代码加载到内部RAM,但是对于链接文件和启动文件不知如何修改,请论坛大牛给予帮助,感谢!
附件包含BootLoader和用户主程序的链接文件,这两个链接文件适应于将用户代码全部加载到SDRAM运行,加载方式很简单,直接从Flash拷贝到SDRAM的0x80000000地址,加载后运行正常。
Hi @coderick ,
请问下你要实现的修改只是将原来运行在SDRAM改为运行在ITCM吗?其他部分功能保持不变是这样吗?你可以先参考下SDK Hello_world这个工程的MIMXRT1052xxxxx_ram_0x1400.icf这个文件
Best regards,
Gavin
Hi,@Gavin,
SDK中MIMXRT1052xxxxx_ram_0x1400.icf链接文件支持的内部RAM空间有限,无法放下400KB的用户程序。我的问题是:从BootLoader如何加载用户程序到内部RAM运行,加载前是不是要重新配置内部RAM,比如把ITCRAM配置为448KB?然后再把用户程序拷贝加载到内部RAM中?这里对启动文件、中断向量表、readonly、readwrite部分如何分散加载?希望您能给我一些解决问题的方向,谢谢,如果需要我提供什么材料,我再提供。
Hi @coderick ,
抱歉这个耽搁很久了。后面和专家讨论了一下,在你的这种应用中,应该只需要通过SCB->VTOR跳转过去就好了,不需要在分散加载文件中更改。然后对于RAM,如果超过你需要的区域,就需要通过FlexRAM进行重配。
这里有一个类似的实现你可以参考:https://www.nxpic.org.cn/module/forum/thread-620172-1-1.html
Best regards,
Gavin
顶一个