娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月08日(星期日)

2020年09月08日 | (八) stm8程序段定位,理解lkf文件

發布者:吾道明亮 來源: eefocus關鍵字:stm8  程序段定位  lkf文件 手機看文章 掃描二維碼
隨時隨地手機看文章

要修改.lkf 文件。

ST 有個中文文檔: 如何基于STM8S系列MCU進行項目開發


當“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)一個程序段(.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
#用戶程序
Debugmain.o


# 一些必要的cosmic庫
libis0.sm8
libm0.sm8

 # 重定義常量段,開始于0x8000,用于放置中斷向量表(STM8硬件決定此位置)
# –k 用于程序冗余代碼優化,詳情可參考cosmic用戶手冊。
+seg .const -b 0x8000 –k
# 中斷向量
Debugstm8_interrupt_vector.o

 

#定義了三個變量,用于系統初始化
+def __endzp=@.ubsct
# end of uninitialized zpage
+def __memory=@.bss # end of bss segment
+def __stack=0x17ff # 不同的芯片__stack內容不同,由系統自動生成

 

3 進一步掌握STVD/COSMIC
3.1 如何分配變量到指定的地址
舉例:
unsigned char temp_A@0x00; //定義無符號變量temp_A,強制其地址為0x00
unsigned char temp_B@0x100; //定義無符號變量temp_B,強制其地址為0x100
@tiny unsigned char temp_C; //定義無符號變量temp_C,由編譯器自動在地址小于0x100的RAM中為其分配一個地址
@near unsigned char temp_D; //定義無符號變量temp_D,由編譯器自動在地址大于0xFF的RAM中為其分配一個地址
另外也可以采用偽指令“pragma”將函數或者變量定義到指定的section中,例如:
#pragma section [name] // 將下面定義的未初始化變量定義到.name section中
Unsigned char data1;
Unsigned int data2;

……(任何需要定義在.name section中的變量)
……
#pragma section [] // 返回到正常的section.
(關于section的定義方法可以參考3.7節的描述。)

注意:pragma偽指令可以用來定位函數,初始化變量或者未初始化變量。這三者用不同的括號區分。
(name):代碼
[name] :未初始化變量
{name}:初始化變量

 

在.lkf中加入你自定義的段 比如叫 .myflash,在c程序中使用#pragma section(myflash) ,緊隨其后的代碼就放到指定的myflash限定的地址中去了

 

謝謝.問題已經解決.樓上各位大俠說得都在理.問題是我要在IDE方式下處理段的定位問題.目前我已經找到解決方法,如下:
1) 在ST IDE 的工程下,(按SHIFT+F7或選擇菜單Project->settings)
2) 選擇linker屬性頁
3)在category下拉菜單下選input
4)(門道在這) 在segment/section name表格中按鼠標右鍵選add segment,然后新建一個段,修改段的起始地址和結束地址
5)然后在新的段中按鼠標右鍵選add section 加入程序中已經定義好的片段APP_CODE
程序中的開始部分定義的,如下
#pragma section (APP_CODE)
#pragma section const {APP_CONST}

編譯后如下

--------
Segments
--------

start 00004000 end 00004001 length 1 segment .eeprom
start 00000000 end 0000000a length 10 segment .bsct, initialized
start 0000808d end 00008097 length 10 segment .bsct, from
start 0000000a end 000000ac length 162 segment .ubsct
start 000000ac end 000000ac length 0 segment .bit
start 000000ac end 000000ac length 0 segment .share
start 00000100 end 00000100 length 0 segment .data
start 00000100 end 00000100 length 0 segment .bss
start 00000100 end 000003f1 length 753 segment .FLASH_CODE, initialized
start 00008097 end 00008388 length 753 segment .FLASH_CODE, from
start 00008080 end 00008080 length 0 segment .const
start 00008388 end 00008924 length 1436 segment .IAP_CODE
start 00008924 end 00008968 length 68 segment .IAP_CONST
start 00009c00 end 00009cc0 length 192 segment .MYINTER_CODE
start 00009cc0 end 0000a398 length 1752 segment .text
start 0000a398 end 0000bba6 length 6158 segment .APP_CODE
start 0000bba6 end 0000c6da length 2868 segment .APP_CONST
start 00000000 end 0002beef length 179951 segment .debug
start 00008000 end 00008080 length 128 segment .const
start 00008080 end 0000808d length 13 segment .init

關鍵字:stm8  程序段定位  lkf文件 引用地址:(八) stm8程序段定位,理解lkf文件

上一篇:STM8l051,新建工程
下一篇:STM8避坑—串口中斷

推薦閱讀

收到外賣送達的電話后好幾分鐘,正在開會的安信證券員工小張才終于得空出門取餐。通常,他要通過電梯下到一樓取餐。但8月下旬的這一天,他剛推開辦公室大門就遇上了個新鮮事物:一個半人高的柜式機器人已經等候在門口了。 按照屏幕上顯示的提示輸入手機號,機器人的柜門開啟,小張順利地取到外賣,快速返回辦公室工作。 據相關外賣平臺統計,中國人在20...
(文章來源:中科羅伯特機器人學院) 根據國際機器人聯合會的數據,雖然2018年全球工業機器人銷量再創新高,達到了38.4萬臺,但增速緩慢,從前幾年的兩位數增長降到了個位數。去年我國工業機器人消費總量為13.5萬臺,雖然還是全球最大的消費市場,但比2017年下降了3.75%。 工信部副部長辛國斌分析,雖然原因是多方面的,包括國際貿易環境惡化、全球經...
光端機,就是光信號傳輸的終端設備,我們在使用的過程中難免會碰到一些問題,接下來小編為大家詳細列舉了光端機在使用過程中遇到的一些常見問題以及對應的解決方案,感興趣的朋友就一起來看看吧! (1) PDH 光端機與 SDH 光端機有什么不同?在數字傳輸系統中.有兩種數字傳輸系列.一種叫"準同步數字系列"簡稱 PDH,另一種叫"同步數字系列"簡稱 SDH....
  Uson-11超聲波液位計是一種經濟型液位測量儀表,其采用無接觸式測量法測量,具有安全、高效、清潔、精準、壽命長、穩定可靠、安裝維護方便等特點,在污水處理、化工、火電廠、海洋運輸等工業環境中大型儲罐、槽罐、油罐,或者小型容器或料罐等各種槽池的連續性液位測量方面有著廣泛應用。為幫助儀表用戶更好地使用超聲波液位計,本文以Uson-11超聲波液...

史海拾趣

問答坊 | AI 解惑

主流方案性能介紹

1. ATMELATMEL公司是是世界上高級半導體產品設計、制造和行銷的領先者,產品包括了微處理器、可編程邏輯器件、非易失性存儲器、安全芯片、混合信號及RF射頻集成電路。通過這些核心技術的組合,ATMEL生產出了各種通用目的及特定應用的系統級芯片, ...…

查看全部問答∨

石英晶體濾波器簡介

說明:本文素材均來自公開資料,我把它們歸納整理了一下,屬于科普讀物 濾波器簡介   濾波器早被公認為各種電子產品的重要部件,其主要功能是作為各種電信號的提取、分隔、抑止干擾,隨著電子技術的飛速發展,電子產品的應用領域發生日 ...…

查看全部問答∨

周末,也不得安寧

周末早上起來,一看,電話有三個未接電話。一回電話,全是公司的電話,我靠,周末都不放過我。…

查看全部問答∨

全球led驅動集萃

附上 各大IC廠商 及IC特點;…

查看全部問答∨

請教個高手

打算用vXWORKS開發: 1、宿主機-----PC機 2、目標機-----vxworks 3、客戶機-----PC機 1-2之間用網絡通信機制,2-3之間用串口RS422的通信機制 1-2之間已實現! 想問下,2-3之間的串口配置在CONFIG.H中如何設置? 謝謝!…

查看全部問答∨

WinCE5.0自動數據庫EDB的使用問題

俺手頭上有個WinCE Mobile 6.0的EDB例程(Mobile 6.0的SDK在VS2005上編譯通過),在Mobile 6.0的模擬器中可以運行; 然后直接復制到自己的2440上(跑WinCE5.0),剛開始使用2440編譯出來的wince5.0sdk在VS2005中編譯不過,后來定制WINCE平臺時 ...…

查看全部問答∨

LCD顏色問題

我是直接用KernelIoControl得到了LCD的display buffer(16位色).然后直接向這段buffer寫顏色 ,如下: for(i=0;i<height;i++)                 {             ...…

查看全部問答∨

求MSP-EXP430F5529檢測跌倒的程序

想用MSP-EXP430F5529的三軸加速度傳感器檢測一個人是否跌倒,但沒用過類似的功能,不知有沒有大神能夠給個程序(如果有說明就更好了)…

查看全部問答∨

ISE FPGA RAM用超了,通不過綜合吧?

我把RAM用超了,現在已經綜合了1個小時了,仍然沒報錯. 我的問題是,RAM用超了,通不過綜合吧?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 清镇市| 集贤县| 北京市| 思茅市| 益阳市| 广东省| 大丰市| 金门县| 广宗县| 丹寨县| 绥化市| 舟山市| 嘉禾县| 南召县| 大竹县| 黔南| 肃南| 霞浦县| 东莞市| 巴楚县| 康马县| 芜湖县| 尼木县| 沂源县| 巴塘县| 荔波县| 和田市| 屯留县| 武平县| 普陀区| 安福县| 酉阳| 本溪| 庆城县| 永和县| 剑川县| 广汉市| 云梦县| 上栗县| 灵璧县| 绥滨县|