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 設定...