2016年8月18日 星期四
STM32 Flash 之 .icf檔
在使用Flash功能時,為了確保資料寫入ROM後,下一次燒code到機器時,寫入的資料不希望被清掉,可以修改*.icf檔,IAR會根據這份文件,來避開某段FLASH_SECTOR。
由於Sector3的位置在0x0800C000~0x0800FFFF之間,因此將ROM1_end_ 設定為 0x800C000-1,ROM2_start_設定為0x0800FFFF+1,最後在ROM_region將ROM1跟ROM2照原本的方式設定上去即可。
2.切到【Linker】頁面,勾選Override default,並將選擇檔案存放路徑。
3.Check the linker map file,看是否有成功linker到載入的檔案。
Flash模組的組成
可由reference manual中找到自己平台的Flash module。
Step 1. 修改*.icf檔
假設我們需要使用Sector3來存放我們不想被清掉的資料,那我們的*.icf檔的寫法如下。
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0803FFFF;
define symbol __ICFEDIT_region_ROM1_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM1_end__ = 0x0800BFFF;
define symbol __ICFEDIT_region_ROM2_start__ = 0x08010000;
define symbol __ICFEDIT_region_ROM2_end__ = 0x0803FFFF;
...
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region ROM_region = mem:[from __ICFEDIT_region_ROM1_start__ to __ICFEDIT_region_ROM1_end__] | mem:[from __ICFEDIT_region_ROM2_start__ to __ICFEDIT_region_ROM2_end__];由於Sector3的位置在0x0800C000~0x0800FFFF之間,因此將ROM1_end_ 設定為 0x800C000-1,ROM2_start_設定為0x0800FFFF+1,最後在ROM_region將ROM1跟ROM2照原本的方式設定上去即可。
Step 2.在IDE中載入*.icf檔
1.在Project右鍵選擇【Options...】
3.Check the linker map file,看是否有成功linker到載入的檔案。
2016年8月15日 星期一
訂閱:
文章 (Atom)
