91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

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

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

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

5)鏡像文件(Image),編譯keil中的工程項(xiàng)目時(shí)生成的目標(biāo)文件時(shí)叫做鏡像文件(Image)或bin文件,image文件中只包含RO,RW段,這是因?yàn)閆I數(shù)據(jù)段都是零,沒有必要包含,只需要把ZI所在的區(qū)域清零即可。

  MDK鏈接程序使用了兩種方式控制程序的鏈接,即鏈接控制命令選項(xiàng)和鏈接腳本文件。當(dāng)使用鏈接控制命令選項(xiàng)時(shí),鏈接器定義了6個(gè)段地址描述符。

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

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

STAR 0x00000000 0x00040000;

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

{

STAR _RO 0x00000000 0x00040000;

//定義一個(gè)運(yùn)行時(shí)域,第一個(gè)運(yùn)行時(shí)域必須和加載時(shí)域起始地址相同,否則庫不能加 //載到該時(shí)域的;錯(cuò)誤,其域大小一般也和加載時(shí)域大小相同。

*.o (RESET, +First);

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

* (+RO) ;                 

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

}

STAR _RW 0x004000 ;

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

{

* (+RW);      

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

}

STAR _ZI +0 ;   

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

{

* (+ZI) ;       

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

}

}

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

全部回復(fù)(16)
正序查看
倒序查看
鄧女士
LV.5
2
2019-09-17 15:37
不知道在鏈接腳本中指定代碼的存儲(chǔ)布局和精確地指定代碼放置的位置哪個(gè)更安全?
0
回復(fù)
2019-09-17 18:16
這兩個(gè)概念是一樣的,沒有誰更加安全一說
0
回復(fù)
zntsbkhhh
LV.2
4
2019-09-18 09:38
@miniminimini
這兩個(gè)概念是一樣的,沒有誰更加安全一說
文章寫的很詳細(xì)很具體,已經(jīng)轉(zhuǎn)發(fā)給我們的技術(shù),后續(xù)仔細(xì)研究下
0
回復(fù)
2019-09-18 19:31
@zntsbkhhh
文章寫的很詳細(xì)很具體,已經(jīng)轉(zhuǎn)發(fā)給我們的技術(shù),后續(xù)仔細(xì)研究下
我弱弱的問一下樓主,文章中所說的鏈接腳本去哪兒下載呀?是通用版嗎?還有對操作環(huán)境有要求沒有啊?
0
回復(fù)
BLoun
LV.5
6
2019-09-19 07:04
@胖爺阿戈
我弱弱的問一下樓主,文章中所說的鏈接腳本去哪兒下載呀?是通用版嗎?還有對操作環(huán)境有要求沒有啊?
好復(fù)雜啊,學(xué)習(xí)了。有時(shí)間嘗試驗(yàn)證一下看看效果。
0
回復(fù)
114W1
LV.5
7
2019-09-19 18:11
@BLoun
好復(fù)雜啊,學(xué)習(xí)了。有時(shí)間嘗試驗(yàn)證一下看看效果。
理論和舉例相結(jié)合,使這篇文章更通俗易懂了,不錯(cuò)!
0
回復(fù)
Hex315
LV.5
8
2019-09-19 19:10
@114W1
理論和舉例相結(jié)合,使這篇文章更通俗易懂了,不錯(cuò)!
MDK鏈接程序使用兩種方式控制程序的鏈接,但在實(shí)際運(yùn)用過程中兩種方式選擇哪種更簡便快速操作呢? 
0
回復(fù)
鄧女士
LV.5
9
2019-09-19 20:49
樓主寫的示例和原理描述得很詳細(xì),進(jìn)一步了解到MDK中數(shù)據(jù)存放的方法,收藏了,謝謝!
0
回復(fù)
2019-09-20 09:09
Keil和MDK啥區(qū)別?感覺MDK用于STM和ARM等,keil用于單片機(jī)???這么理解對嗎?有沒有懂的人
0
回復(fù)
宇宙王
LV.3
11
2019-09-20 09:18
@miniminimini
Keil和MDK啥區(qū)別?感覺MDK用于STM和ARM等,keil用于單片機(jī)???這么理解對嗎?有沒有懂的人
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進(jìn)行嵌入式軟件開發(fā)的工程師需求而設(shè)計(jì),支持ARM7,ARM9,Cortex-M3/M1,Cortex-R0/R4等ARM微控制器內(nèi)核。
0
回復(fù)
zntsbkhhh
LV.2
12
2019-09-20 10:12
@宇宙王
KEIL是公司品牌吧,MDK、KEILC51、KEILC166、KEILC251都是KEIL的產(chǎn)品吧KEIL系列是基于uVisionIDE支持各種微控制器開發(fā)工具,MDK即KEILMDK、RealViewMDK或者KEILForARM,ARM公司現(xiàn)在統(tǒng)一使用MDK-ARM的稱呼,MDK的設(shè)備數(shù)據(jù)庫中有很多廠商的芯片,是專為微控制器開發(fā)的工具,為滿足基于MCU進(jìn)行嵌入式軟件開發(fā)的工程師需求而設(shè)計(jì),支持ARM7,ARM9,Cortex-M3/M1,Cortex-R0/R4等ARM微控制器內(nèi)核。
MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個(gè)完整的開發(fā)環(huán)境。 MDK-ARM專為微控制器應(yīng)用而設(shè)計(jì),而且功能強(qiáng)大,能夠滿足大多數(shù)苛刻的嵌入式應(yīng)用 
0
回復(fù)
BLoun
LV.5
13
2019-09-21 17:30
@zntsbkhhh
MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個(gè)完整的開發(fā)環(huán)境。MDK-ARM專為微控制器應(yīng)用而設(shè)計(jì),而且功能強(qiáng)大,能夠滿足大多數(shù)苛刻的嵌入式應(yīng)用 
用IAR或CodeWarrior軟件該怎么設(shè)置鏈接方式呢
0
回復(fù)
Hex315
LV.5
14
2019-09-21 18:08
@BLoun
用IAR或CodeWarrior軟件該怎么設(shè)置鏈接方式呢
有誰懂的,介紹下吧,我以前有個(gè)項(xiàng)目也得用IAR編譯器,最后沒弄出來,不了了之了
0
回復(fù)
2019-09-21 18:22

文章中定義的STAR 地址 是可以任意設(shè)置的嗎?

文章中定義的STAR地址是可以任意設(shè)置的ma

0
回復(fù)
2019-09-21 18:22

文章中定義的STAR 地址 是可以任意設(shè)置的嗎?

文章中定義的STAR地址是可以任意設(shè)置的ma

0
回復(fù)
114W1
LV.5
17
2019-09-22 18:29
@123小屁孩
文章中定義的STAR地址是可以任意設(shè)置的嗎?文章中定義的STAR地址是可以任意設(shè)置的ma
當(dāng)然不能任意了,肯定要看你是用芯片程序的起始地址是多少
0
回復(fù)
發(fā)
主站蜘蛛池模板: 崇州市| 斗六市| 宁明县| 志丹县| 五台县| 南开区| 德令哈市| 西城区| 凉山| 宣汉县| 洛扎县| 商南县| 光山县| 长丰县| 治县。| 廊坊市| 武宁县| 达孜县| 武强县| 勃利县| 黄梅县| 甘孜县| 金塔县| 娱乐| 乌兰察布市| 商水县| 海晏县| 新平| 莲花县| 淅川县| 平定县| 建水县| 始兴县| 扎兰屯市| 定安县| 吉安市| 孝昌县| 天门市| 三明市| 天镇县| 寻甸|