IAR切BANK 命令聯結器檔案xcl格式說明

2021-08-11 14:52:31 字數 3681 閱讀 9305

iarewarm中段字尾含義

字尾段型別

含義ac

const

絕對位址定位常數

andata

用關鍵字__no_init宣告的絕對位址定位資料

cconst常數i

data

初始化值為非0的資料

idconst

上述資料的初始式

ndata

未初始化的資料

zdata

初始化值為0的資料

rom用於儲存const和code段,而ram用於儲存datas段。

code段型別:rom 中的執行**

const段型別:rom中的資料

data段型別:ram 中的資料

常用的段說明:

段名功 能說 明

段型別屬性

intvec

儲存reset 和異常向量,含跳轉到cstartup 或中斷服務程式的指令。必須在0x00-0x3f 位址範圍內

code

唯讀icode

儲存啟動**,位於能被intvec 中的轉移指令達到的前32mb 位元組內。

code

唯讀difunct

包含指向c++建構模組的指標。該模組在呼叫main 之前由cstartup 執行。

code

唯讀switab

儲存軟體中斷向量表

code

唯讀code

儲存程式**,可以在rom 中執行。

code

唯讀code_id

永久性儲存宣告為_ramfunc 的程式**。這些**初始化時從code_id拷貝到code_i 中(ram),然後在ram 中執行。

const

唯讀inittab

儲存需要在啟動時初始化的段位址和段長度**。

const

唯讀data_id

儲存data_i 段中變數的初值,這些值在系統初始化時由cstartup 從data_id 拷貝到data_i。

const

唯讀data_c

儲存常數資料,包括文字字串

const

唯讀checksum

儲存段的校驗和

const

唯讀code_i

上電後儲存宣告為_ramfunc的程式**,掉電後丟失。初始化時從code_id(rom)拷貝到code_i中,然後在ram中執行。

data

讀/寫data_i

儲存宣告為非零初值的靜態全域性變數,其初值開始在data_id中,系統初始化時由cstartup從data_id 拷貝到data_i。

data

讀/寫data_z

儲存宣告初值為零或沒有宣告初值的靜態全域性變數

data

讀/寫data_n

儲存非易失儲存器中,用_no_init 關鍵字宣告的靜態全域性變數

data

讀/寫cstack

c/c++內部資料堆疊(使用者模式)

data

讀/寫svc_stack

作業系統堆疊(管理模式,用於具有特權的作業系統任務)

data

讀/寫abt_stack

資料訪問中止模式堆疊(用於虛擬儲存器及儲存器保護)

data

讀/寫und_stack

未定義指令中止模式堆疊(支援硬體協處理器軟體**)

data

讀/寫fiq_stack

快中斷模式堆疊(用於高速資料傳輸或通道處理)

data

讀/寫irq_stack

中斷模式堆疊(用於通用中斷處理)

data

讀/寫heap

堆(heap)是c\c++中為malloc 和 free 或new 和delete 保留的動態分配儲存空間。

data

讀/寫

iar ewarm中段定位引數

引數含義

ccpu型別

d定義檔案後面要使用的引數,例如說明始末位址或段大小

z以連續方式定位段

p以壓縮方式定位段

q自動完成段初始化複製

-d 

-dsymbol=value

作用:使用

-d選項可以定義一些純粹的符號,一般用於宣告常數。

引數:symbol是未在其它地方定義過的外部符號,value是symbol所代表的值。例如:

-d_bank_len=0x800

-d_bank_start=0x1800

-d_bank_step=0x10000

-d_bank_num=0x40

就定義了2個標識了rom起始和結束位址的符號,這樣以後關於rom位址的配置都可以直接使用這2個符號,使得配置檔案的可讀性增強。

在//前面必需有空格

/*前面可有可無空格

=前後都不能有空格在

_bank_step緊挨著-d

-z 

-z[@][(split-)type]segments[=|#]range[, range]…

作用:使用

-z命令的目的是規定

segments

在儲存空間中佔據的位置和區間。如果鏈結器發現某個segment沒有使用-z,-b或者-p中的任何乙個命令進行定義,則會報錯。

引數:@ 使用@引數,表示為segments分配空間時不考慮任何已經被使用的位址空間。這適用於當某些segments的位址空間需要發生重疊的情形。【可選】

type 引數type規定了segments的儲存型別,預設為untyped。表1列舉了iar的arm c/c++編譯器所支援的segments型別。【可選】

segments:引數segments列出了參與鏈結的乙個或多個segment,中間可用逗號分隔。,這些segments在儲存空間中的順序和被列出的先後順序一致。在segment名後面新增『+nnnn』,可以讓xlink為該segment所分配的空間增加nnnn位元組。

= | #;規定了segments在儲存空間中如何分配,其中」=「從指定範圍的起始處開始為segments分配空間,而」#「從指定範圍的結尾處開始為segments分配空間。如果這兩個引數都沒有出現,則segments會被分配在當前最後乙個有確定鏈結位址的segment後面;如果當前沒有任何segment被鏈結,則被分配在0位址。

-z(code)makecode_const=0xff0000-0xff00ff

-z(xdata)echo_buf=0xa4400:+0x2000-p

-p(code)bt_on_seg,bt_on_const,rf_seg=[_bank_start:+_bank_len]*_bank_num+_bank_step

用,分割相同的段

-q -qsegment=initializer_segment

作用:自動設定

segment

的拷貝初始化。鏈結器會產生乙個新的initializer_segment(如code_id),其內容與segment(如code_i)完全一致。相關的符號表和除錯資訊都會和segment相關聯(如code_i)。initializer_segment的內容(通常在rom中)必須在初始化階段被複製到segment(通常在ram中)。

-c 

-cprocessor

作用:規定目標處理器的型別。如-carm。

MySQL聯結器原理 mysql 聯結器

mysql 的聯結器是msyql server層的第乙個模組。當我們用mysql 客戶端來連線mysql伺服器的時候,處理這個連線請求的就是聯結器模組。mysql客戶端和伺服器端的連線使用的是tcp協議,在完成tcp握手之後,聯結器開始進行身份認證。如果使用者名稱或密碼不對,那麼聯結器會丟擲乙個 a...

如何區別FFC聯結器和FPC聯結器

接器領域中,ffc聯結器和fpc聯結器常常讓人混淆。雖然兩者都是柔性電纜聯結器,但是ffc聯結器以及fpc聯結器還是有一定程度上的區別。柔性扁平電纜 flexible flat cable 聯結器,fpc是柔性印製線路 flexible print circuit 兩者的製造上來講,他們線路形成的方...

聯結器的作用

聯結器又稱接外掛程式,主要是在電子產品 電力裝置中提供方便的電氣插拔式連線,廣泛地應用於電子裝置當中,使得電子產品的生產 維修效率得以極大提高。由於大量採用插拔式連線,其連線的可靠性 接觸點電阻的大小對於產品的質量來說就越來越重要,因此必須對所採用的聯結器的效能進行全面的了解,以便合理正確地使用聯結...