IAR map文件与外部RAM移植总结


问题背景:stm32F103zd芯片开发代码,内部RAM不足,需要使用外部RAM。

开发工具:IAR集成开发软件。

关键文件:IAR内存分配文件*.icf配置文件;MAP映射文件。

修改目的:同时使用内部RAM和外部RAM。

 

以下为内部RAM内存分配文件:

  

 

图中RAM的地址为:0x20000000-0x20010000,一共64K。

 

修改方案:

  增加一块512kb外部RAM,RAM地址为0x60000000. 这样就有两块RAM,地址为:0x20000000和0x60000000

  参考IAR官方自带的开发手册《IAR C/C++ Development Guide》查询icf中使用的关键字及语法。

  参考MAP文件,查看调整的编译地址结果。

 

难点

  1. 如何定义使用两块RAM:

    

  

   其中同时使用2块RAM的语法有3中“&, |, -”,具体的意义请查阅《IAR C/C++ Development Guide》。

   2.如何保证两块内存同时被使用:

  

  上面两句为指定MAP文件中.bss和.data块的地址。附上definition:

  

   

  这两块内容均属于RAM{readwrite}区域。

  

 

    可以看到MAP中的内存分配确实同时使用到了两块RAM:

  

 

 

  3. 使用外部RAM,代码是否需要修改?   

   如果该代码为app层,且已存在boot层,则代码部分不必修改,因为在boot层中已经对RAM做了相应的初始化。(当然,RAM的初始化需要符合外部RAM的使用条件)

   如果代码为boot+app的集成,则需要配置好SRAM_Init()函数。

 

最后附上修改后的ICF文件:

    

 

 总结:

  从需求的入手到问题的解决,最重要的收获是不要忽视官方提供的帮助文件。

  当然反复实验自己的想法也是非常重要的~

 

最后祝大家身体健康~

 

  

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM