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