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

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

博客

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

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

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

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

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

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

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

 一個加載區域,多個連續的執行區域。

STAR 0x00000000 0x00040000;

//定義載入區域STAR 域基址:0x00000000,域大小為 0x00040000,對應實際 Flash //的大小

{

STAR _RO 0x00000000 0x00040000

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

*.o (RESET, +First)

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

* (+RO) ;                 

//加載所有匹配目標文件的只讀屬性數據

}

STAR _RW 0x004000 ;

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

{

* (+RW);      

//加載所有匹配目標文件的可讀寫屬性數據

}

STAR _ZI +0 ;   

//清零數據段STAR _ZI緊接STAR _RW段的尾地址存放。

{

* (+ZI) ;       

//所有清零數據都連續地放在這個區域。

}

}

上面例子中,載入區域和執行區域的名字是可以任意命名的。


路過

雞蛋

鮮花

握手

雷人

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

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

facelist

您需要登錄后才可以評論 登錄 | 立即注冊
验证问答 换一个 验证码 换一个

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部
主站蜘蛛池模板: 91精品成人 | 成在线人永久免费视频下载 | 精品欧美一区视频在线观看 | a亚洲| 青青草原网站在线观看 | 99视频精品全部 在线 | 久久久久国产亚洲日本 | 国产在线五月综合婷婷 | 富二代成人 | 10000拍拍18勿入免费视频| 啦啦啦高清在线影院 | 最新99热| 朋友的母亲hd中字在线观看 | 辛芷蕾三级在线视频无删减 | 佳能app官方下载 | 中文字幕日本在线视频二区 | 网球王子在线观看 | 欧美日韩高清 | 亚洲国产m3u8在线观看 | 幸福宝8008app下载章节 | 欧美日韩在线永久免费播放 | 四虎影视4hu4虎成人 | 亚洲视屏在线观看 | 最终痴汉电车在线观看 | 麻豆性视频 | 日韩男人的天堂 | 免费草逼视频 | 99成人在线视频 | 亚洲成人免费网址 | 在线99视频| 欧美1314www伊人久久香网 | 天堂网在线资源www最新版 | 四虎影视久久久免费 | 天堂在线资源网 | 色老头成人免费视频天天综合 | 日本护士在线视频xxxx免费 | 亚洲男人网 | 国产愉拍精品视频手机 | 日韩国产免费一区二区三区 | 免费视频不卡一区二区三区 | 女人18毛片a级毛片免费看一 |