STM32中stm32f0xx_flash.icf文件的作用详解!
每個芯片開發商都會針對每款芯片來編寫一個.icf文件就是傳說中的鏈接文件。對于基本的應用,這個.icf文件足以滿足你的工程需要。但有時也會需要改動,比如當你的項目要添加外部RAM時就要修改一下icf。
1、Icf到底干了啥呢?
?
當然這些都是最基本的,你也可以設置以下的東西來匹配你的具體項目。
?
2、下面我簡單介紹幾個功能,詳細請參考?EWARM_DevelopmentGuide
2.1 ?添加額外的region
???比如我要添加另一個名為ROM2的ROM區域,大小是256bytes,起始地址是0x80000.
? ??? ?define?region?ROM?=?Mem:[from?0x80000 size?0x100];
2.2 教你怎樣放置SECTION
如果你要把你的只讀常量放置在你指定的域而不是編譯器默認的位置,你就得按如下操作了:
define region CONST_region = Mem:[from 0x100 size 0x100];
place in CONST_region{readonly section .rodata}
2.3 把一個段放置在指定位置
? ? place?at?address?Mem:[0] ?{readonly?section?.intvec}?//--將向量表放置在地址0處。
?
?
Note:之前在看啟動代碼時,老在想這個向量表示怎么放到地址0處的呢,查了一下reference
? ??__vector_table是編譯器專有字符,表示出處開始放置向量表。
?在代碼開始處就聲明了此段為.intvec。鏈接的時候在依據icf把它放到地址0處。
?
?
2.4 將需要從RAM中運行的代碼搬到RAM中
???Initialize?by?copy?{section?.textrw}
?
二、下面是我對generic_cortex.icf的注解
?
?
三、總結
?
咋看一下,這些東西對我們實際編程沒有太大作用,有的同學可能學了許久的單片機了也沒接觸到這個icf(我就是),但是個人覺得,這對于我們理解單片機有很大的幫助。不然的話,對于單片機的理解就簡單停留在外設操作了。
總結
以上是生活随笔為你收集整理的STM32中stm32f0xx_flash.icf文件的作用详解!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计printf调试宏
- 下一篇: 用宏定义代替printf函数