在iar編譯環境設定儲存空間是通過「*.icf」檔案來完成的。
icf檔案中:region > block > section
修改前:
/*###icf### section handled by icf editor, don't touch! ****/
/*-editor annotation file-*/
/* icfeditorfile="$toolkit_dir$\config\ide\icfeditor\cortex_v1_0.xml" */
/*-specials-*/
define symbol __icfedit_intvec_start__ = 0x08000000;
/*-memory regions-*/
define symbol __icfedit_region_rom_start__ = 0x08000000;
define symbol __icfedit_region_rom_end__ = 0x0807ffff;
define symbol __icfedit_region_ram_start__ = 0x20000000;
define symbol __icfedit_region_ram_end__ = 0x2001ffff;
/*-sizes-*/
define symbol __icfedit_size_cstack__ = 0x8000;
define symbol __icfedit_size_heap__ = 0x0000;
/**** end of icf editor section. ###icf###*/
define memory mem with size = 4g;
define region rom_region = mem:[from __icfedit_region_rom_start__ to __icfedit_region_rom_end__];
define region ram_region = mem:[from __icfedit_region_ram_start__ to __icfedit_region_ram_end__];
define block cstack with alignment = 8, size = __icfedit_size_cstack__ ;
define block heap with alignment = 8, size = __icfedit_size_heap__ ;
initialize by copy ;
do not initialize ;
place at address mem:__icfedit_intvec_start__ ;
place in rom_region ;
place in ram_region ;
export symbol __icfedit_region_ram_start__;
export symbol __icfedit_region_ram_end__;
修改後:
/*###icf### section handled by icf editor, don't touch! ****/
/*-editor annotation file-*/
/* icfeditorfile="$toolkit_dir$\config\ide\icfeditor\cortex_v1_0.xml" */
/*-specials-*/
define symbol __icfedit_intvec_start__ = 0x08000000;
/*-memory regions-*/
define symbol __icfedit_region_rom_start__ = 0x08000000;
define symbol __icfedit_region_rom_end__ = 0x0807ffff;
define symbol __icfedit_region_ram_start__ = 0x20000000;
define symbol __icfedit_region_ram_end__ = 0x2001ffff;
/*-sizes-*/
define symbol __icfedit_size_cstack__ = 0x8000;
define symbol __icfedit_size_heap__ = 0x0000;
define symbol __icfedit_size_myblock__ = 0x1000;
/**** end of icf editor section. ###icf###*/
define memory mem with size = 4g;
define region rom_region = mem:[from __icfedit_region_rom_start__ to __icfedit_region_rom_end__];
define region ram_region = mem:[from __icfedit_region_ram_start__ to __icfedit_region_ram_end__];
define block cstack with alignment = 8, size = __icfedit_size_cstack__ ;
define block heap with alignment = 8, size = __icfedit_size_heap__ ;
define block myblock with alignment = 8, size = __icfedit_size_myblock__ ;
initialize by copy ;
do not initialize ;
place at address mem:__icfedit_intvec_start__ ;
place in rom_region ;
place in ram_region ;
export symbol __icfedit_region_ram_start__;
export symbol __icfedit_region_ram_end__;
說明:修改的地方有三個
define symbol __icfedit_size_myblock__ = 0x1000; //設定block的大小
define block myblock with alignment = 8, size = __icfedit_size_myblock__ ; //定義block物件,並設定對齊方式
place in rom_region ; //將block放入rom區
這樣你在用iar編譯**的時候,編譯器就會自動為你分配一塊大小為 0x1000名為「myblock」的rom塊了。
你還可以在myblock中再定義乙個section,只需要:
define block myblock with alignment = 8, size = __icfedit_size_module__ ;
那麼在myblock塊中,有包含了一塊名為「mysection」的段了
在**中:
#pragma section="mysection"
#define module_begin (__segment_begin("mysection"))
#define module_end (__segment_end("mysection"))
int myparameter @ "mysection" = 0; // 變數 myparameter 就被放在 「myblock」塊中的 「mysection」段裡了。
Linux新建乙個檔案的方法
在linux下新建乙個檔案,這個操作恐怕再普通不過了,怎樣才能更加快捷方便的新建乙個檔案呢?我先列出來我知道的方法,歡迎補充。touch filename 很多人會想到這個命令,建立空檔案的確很方便。vi vim filename 用編輯器建立檔案,也很常用,記得儲存才能生效。cat filenam...
彙編之新建乙個hello,word專案
首先我們到dos box裡面的masm資料夾裡面新建乙個hello.asm 檔案內容入戲 data segment 資料段 string db hello,world data ends code segment 段 assume cs code,ds data start mov ax,data ...
如何新建乙個ARM彙編工程檔案
1.建立乙個資料夾用來存放彙編工程檔案 2.開啟keil軟體,選擇新建工程並命名 3.選擇晶元的廠商samsung和裝置型號s3c2410a,點選ok,進入下一步。4.這裡選擇否,不複製這個檔案 5.新建乙個空白並命名,注意字尾為.s 6.將demo.s檔案新增進source group 1,注意檔...