国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

xiaoyuhzou1228的個人空間 http://m.qingdxww.cn/space-uid-139997.html [收藏] [復制] [RSS]

博客

嵌入式編程第三篇:MDK中鏈接腳本解析

熱度 8已有 1589 次閱讀2019-9-12 09:33

單片機編程使用 MDK時不可避免的要涉及到鏈接腳本文件在鏈接腳本中可以指定代碼的存儲布局,可以將代碼段、只讀數(shù)據(jù)段、可讀寫的數(shù)據(jù)段分別存放,可以精確地指定代碼放置的位置。

在了解鏈接腳本之前需要了解以下概念:1RO(ReadOnly):表示程序中的指令和常量2RW(Read/Write):表示程序中已初始化的變量3ZI(Zero):表示程序中未初始化的變量4鏈接腳本,也叫程序加載文件,它決定在生成image文件時如何來分配相關(guān)數(shù)據(jù)的存放基址。

5鏡像文件(Image),編譯keil中的工程項目時生成的目標文件時叫做鏡像文件(Image)bin文件,image文件中只包含RORW段,這是因為ZI數(shù)據(jù)段都是零,沒有必要包含,只需要把ZI所在的區(qū)域清零即可。

  MDK鏈接程序使用了兩種方式控制程序的鏈接,即鏈接控制命令選項和鏈接腳本文件。當使用鏈接控制命令選項時,鏈接器定義了6個段地址描述符。

6個描述符可以直接在程序中引用。而在使用鏈接腳本文件后,這6個描述符號沒有了,取而代之的是鏈接腳本文件中的段描述符,格式為:Image段名Base Image段名Limit。下面將結(jié)合具體的例子說明鏈接腳本文件的使用。

 一個加載區(qū)域,多個連續(xù)的執(zhí)行區(qū)域。

STAR 0x00000000 0x00040000;

//定義載入?yún)^(qū)域STAR 域基址:0x00000000,域大小為 0x00040000,對應(yīng)實際 Flash //的大小

{

STAR _RO 0x00000000 0x00040000

//定義一個運行時域,第一個運行時域必須和加載時域起始地址相同,否則庫不能加  //載到該時域的; 錯誤,其域大小一般也和加載時域大小相同。

*.o (RESET, +First)

// RESET 段最先加載到本域的起始地址外,即RESET 的起始地址為 0RESET 存儲  //的是向量表

* (+RO) ;                 

//加載所有匹配目標文件的只讀屬性數(shù)據(jù)

}

STAR _RW 0x004000 ;

//可讀寫數(shù)據(jù)段STAR _RW緊接STAR _RO段的尾地址存放,即0x040000 + STAR _RO  //容量。

{

* (+RW);      

//加載所有匹配目標文件的可讀寫屬性數(shù)據(jù)

}

STAR _ZI +0 ;   

//清零數(shù)據(jù)段STAR _ZI緊接STAR _RW段的尾地址存放。

{

* (+ZI) ;       

//所有清零數(shù)據(jù)都連續(xù)地放在這個區(qū)域。

}

}

上面例子中,載入?yún)^(qū)域和執(zhí)行區(qū)域的名字是可以任意命名的。


路過

雞蛋

鮮花

握手

雷人

發(fā)表評論 評論 (16 個評論)

回復 kessy1 2019-9-17 15:34
不知道在鏈接腳本中指定代碼的存儲布局和精確地指定代碼放置的位置哪個更安全?
回復 miniminimini 2019-9-17 18:09
在鏈接腳本中指定代碼的存儲布局和精確地指定代碼放置的位置這兩個是一樣的概念,沒有說哪個會安全
回復 zntsbkhhh 2019-9-18 09:22
這篇文章寫的很詳細很具體,已經(jīng)轉(zhuǎn)發(fā)給我們的技術(shù),后續(xù)仔細研究下
回復 tyl20100 2019-9-18 19:30
我弱弱的問一下樓主,文章中所說的鏈接腳本去哪兒下載呀?是通用版嗎?還有對操作環(huán)境有要求沒有啊?
回復 QL87 2019-9-19 07:00
好復雜啊,學習了。有時間嘗試驗證一下看看效果。
回復 wang0327 2019-9-19 18:10
理論和舉例相結(jié)合,使這篇文章更通俗易懂了,不錯!
回復 Test_wf 2019-9-19 19:08
MDK鏈接程序使用兩種方式控制程序的鏈接,但在實際運用過程中兩種方式選擇哪種更簡便快速操作呢?
回復 kessy1 2019-9-19 20:40
樓主寫的示例和原理描述得很詳細,進一步了解到MDK中數(shù)據(jù)存放的方法,收藏了,謝謝!
回復 miniminimini 2019-9-20 09:05
keil和MDK有什么區(qū)別?感覺MDK用于STM32、ARM等嵌入式編程,keil用于單片機編程,用的同學交流一下,長長見識
回復 xiaoyuhzou1228 2019-9-20 09:15
KEIL是公司品牌吧,MDK、KEIL C51、KEIL C166、KEIL C251都是KEIL的產(chǎn)品吧
KEIL系列是基于uVision IDE支持各種微控制器開發(fā)工具,MDK即KEIL MDK、RealView MDK或者KEIL For ARM,ARM公司現(xiàn)在統(tǒng)一使用MDK-ARM的稱呼,MDK的設(shè)備數(shù)據(jù)庫中有很多廠商的芯片,是專為微控制器開發(fā)的工具,為滿足基于MCU進行嵌入式軟件開發(fā)的工程師需求而設(shè)計,支持ARM7,ARM9,Cortex-M3/M1,Cortex-R0/R4等ARM微控制器內(nèi)核。
回復 zntsbkhhh 2019-9-20 10:00
MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個完整的開發(fā)環(huán)境。 MDK-ARM專為微控制器應(yīng)用而設(shè)計,而且功能強大,能夠滿足大多數(shù)苛刻的嵌入式應(yīng)用
回復 tyl20100 2019-9-21 06:50
文章寫的太短了,應(yīng)該詳細描述一下這兩種鏈接方式。
回復 QL87 2019-9-21 17:29
用IAR或CodeWarrior軟件該怎么設(shè)置鏈接方式呢
回復 Test_wf 2019-9-21 18:10
有誰懂的,介紹下吧,我以前有個項目也得用IAR編譯器,最后沒弄出來,不了了之了
回復 wang0327 2019-9-22 18:28
當然不能任意了,肯定要看你是用芯片程序的起始地址是多少
回復 shijianguo 2019-9-23 12:32
我對這個技術(shù)很感興趣,我會一直關(guān)注的

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
返回頂部
主站蜘蛛池模板: 日本视频免费在线| 亚洲国产天堂| 日韩亚洲欧美在线| 欧美日产欧美日产精品| 色天天天天综合男人的天堂| 亚洲免费不卡| 啪啪.com| 欧美在线a级高清| 四虎在线成人免费网站| 日本映画ady9net| 我想看三级特黄| 亚洲成人一区| 亚洲日本欧美| 色婷婷久久久swag精品| 亚洲第一福利网站| 一级黄色夫妻片| 亚洲三级成人| 天天操综合网| 特黄三级视频| 亚洲黄色成人| 亚洲国产精品网| 手机看片99| 日本强不卡在线观看| 四虎在线观看| 亚洲h在线观看| 色国产视频| 亚洲国产一二三| 一级免费a| 天堂激情网| 天天天做天天天天爱天天想| 污片在线| 亚洲成a人片在线播放| 亚洲欧美久久精品一区| 日韩欧美在线精品| 青草青视频| 亚洲一区免费看| 亚洲国产成人欧美激情| 欧美特级黄色片| 亚洲国产欧美91| 欧美成人精品一区二区| 欧美性一区二区三区五区|