stm8 lkf檔案詳解

2021-07-26 13:34:53 字數 2039 閱讀 9036

stm8s專案開發中,根據一些公升級的需求,需要修改程式起始位置等資訊,而了解lkf檔案對修改位址有很大的幫助。

stvd設定中,當「auto」選擇框被勾選時,.lkf檔案會自動生成在專案主目錄下的debug/release/目錄中。

下面以io_test project的lkf檔案為例,來進一步理解.lkf 。

在.lkf中,以「#」開頭的行是注釋行,為方便使用者理解,將原注釋刪除,代之以中文注釋如下:

# 定義(+seg)乙個常量段(.const),開始(b)於0x8080,最大分配(m)0x1ff80個位元組(即不超過

# 0x27fff),為該段起名(n)為.const(和常量段的保留字同名),需要初始化的變數的初始值存

# 放於此段(-it)

+seg .const -b 0x8080 -m 0x1ff80 -n .const -it

# 定義(+seg)乙個程式段(.text),緊跟(-a)在.const段後面(和.const 共同位於0x8080 – 0x27fff),

# 為該段起名(n)為. text (和程式段的保留字同名)。

+seg .text -a .const -n .text

# 定義(+seg)乙個eeprom段(.eeprom),開始(b)於0x4000,最大分配(m)0x800個位元組(即不超

#過0x47ff),為該段起名(n)為. eeprom (和eeprom段的保留字同名)。

+seg .eeprom -b 0x4000 -m 0x800 -n .eeprom

# .bsct段服務於定義在0頁(位址小於0x100)以內需要初始化的全域性變數(如@tiny char a = 9;)

+seg .bsct -b 0x0 -m 0x100 -n .bsct

# .ubsct段服務於定義在0頁(位址小於0x100)以內不需要初始化的全域性變數(如@tiny char b;)

+seg .ubsct -a .bsct -n .ubsct

# .bit表示位域段,定義後即可在程式中使用_bool變數(如_bool c = 1;),-id表示該段需要初始化。

+seg .bit -a .ubsct -n .bit -id

# 這是st7時代(stm8是基於st7發展而來的)由於物理堆疊小,速度慢,使用記憶體來模擬堆疊

#的變通手段。

+seg .share -a .bit -n .share -is

# .data段服務於定義在0頁(位址大於0xff)以外需要初始化的全域性變數(如@near char d = 8;)

+seg .data -b 0x100 -m 0x1300 -n .data

# .bss段服務於定義在0頁(位址大於0xff)以內不需要初始化的全域性變數(如@ near char e;)

+seg .bss -a .data -n .bss

# 段定義結束,下面放置的庫及obj檔案中的變數、常量、程式就按照上面的規定進行分配。

#初始化程式

crtsi0.sm8

#使用者程式

debug\main.o

# …# 一些必要的cosmic庫

libis0.sm8

libm0.sm8

# 重定義常量段,開始於0x8000,用於放置中斷向量表(stm8硬體決定此位置)

# –k 用於程式冗餘**優化,詳情可參考cosmic使用者手冊。

+seg .const -b 0x8000 –k

# 中斷向量

debug\stm8_interrupt_vector.o

#定義了三個變數,用於系統初始化

+def [email protected]

# end of uninitialized zpage

+def [email protected]

# end of bss segment

+def __stack=0x17ff

# 不同的晶元__stack內容不同,由系統自動生成

hex 檔案詳解 stm32

我們先來詳細分析 方法一 的操作 2.編譯完程式後,在工程目錄的output資料夾中找到編譯後生產的.hex檔案 用 notepad 或者 ultraedit 開啟 程式 的.hex檔案 hex檔案格式 1 以行為單位,每行以冒號開頭,內容全部為16進製製碼 以ascii碼形式顯示 2 在hex檔案...

stm32啟動檔案ld詳解

說的直白點就是以下區別,在選擇啟動檔案的時候有選擇性區別!startup stm32f10x cl.s 互聯型的stm32f105xx,stm32f107xx startup stm32f10x hd.s 大容量的stm32f101xx,stm32f102xx,stm32f103xx startup...

k8s yaml檔案詳解

1 yaml檔案詳解如下 apiversion v1 指定api版本,此值必須在kubectl apiversion中 kind pod 指定建立資源的角色 型別 metadata 資源的元資料 屬性 name web04 pod 資源的名字,在同乙個namespace中必須唯一 labels 設定...