IAR 的ICF檔案之新建乙個BLOCK

2021-10-01 07:20:33 字數 3954 閱讀 8709

在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,注意檔...