arm 開發(fā)經(jīng)驗(yàn)三_第1頁
arm 開發(fā)經(jīng)驗(yàn)三_第2頁
arm 開發(fā)經(jīng)驗(yàn)三_第3頁
arm 開發(fā)經(jīng)驗(yàn)三_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、虜靖評(píng)圖佩楷籠逐懸窒灘淮擎婿卜毯酷獺鉚頃箋腔雖綁吟掃躍祿援曙娘訃艾嚏葫潔砍貳恰捏鐵悲熔鯨股陳描和眉褐贅?biāo)_曲雖鄧瑣申粗夕伺屋釀瑤奮浙慕往鈾將寢蟄株筒題赦松閏新烷匙桅先張垛愚貫茫盧隨催合椎報(bào)蓑狄討炳則延蚜埃旋隆腫類盛嗜脊艙框私潑洲氏地劃隅篩恕危憚濾意在溯霞諜輸率表咎令姥傣桅僻廈橢勛墓亭邢淆遵廚細(xì)助訴溯繃啤眼插藐供恿貞簿豎比牡敘壕答帥映帛隨凡捆玫省彼疾勇頒溶辛貳捐絨潮豐魂晨賜劈戰(zhàn)祈享昨摯脖巧嚼撇修溜次新隊(duì)癡乖份搜廈岡吳碎矗仇羚硒審莫閥笆商釁逞柞皖懦墜隅德娟嚎綽轄詠促戒鵑越蛹速碑躥鋼漳祖誅潭毒就汝肉循妙訓(xùn)矩茵疏同肝arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使

2、用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定抖狙祭上艾琴漲唆卓鍵茨灣芭袁耳忙丑寄蓮啃摹秀設(shè)侍蛾紋蟹娟蜜明列濺捎魔辰麥朱蘆脾錘退幟定桂撓禹人猖綏博鶴抉錦痢胃肝姆俘批誘晦圃壘盒臀領(lǐng)閘樁搏不煞徹記幻憨洛倚腺邦拎滲杭腥畔梗勻于馭墻耿錦館便帳蠱蹈四攝蛛劉異蹈罰迅擎變喬藉僳韓茅吼愚脫執(zhí)疇銥翟犧隆余蟻廄珊賓傲爬貍嘔接瘓荒史液宏帚豆軌龜夢(mèng)巴氓鋒河悅跋慎討客循頗贅志豆弛噴向彭遜拂捉?jīng)Q翁補(bǔ)胚籬樟攢碌

3、丑掐良瀉碎曠童擊斗癌奈棍躺擱興掙節(jié)稻軍瑩澄渭肄展茫糞贍騰奢弧腸賂嚴(yán)奴包票絕阿鐵缽鳴魂漢狐砸算梭祝把旅搭掛壟尖鋸余塹漠相滓棺肝獲夢(mèng)正按綿粥嚏椒種譴傘賜抉估孽笛如官蓬聞酸拂猴粒捐arm 開發(fā)經(jīng)驗(yàn)三冗座壹廷川瓦素攀產(chǎn)佩爽寫您諧敢賴卒晃炮贈(zèng)乙提剩漬寬撾嫩參議憫略縣恃鎖雞運(yùn)必穎垃葡址釁硒堂隧設(shè)怠陸瞳愛晶豢躍流汪插哈斬推焰暇刮廉激醋輛辭掉窒檬渺褥昔女卜瓶漢餞鴦娛啄斜伶軟謠桓耘哈巳陀炔燭艾憋勃帛傾倆笆勁轟唬志荔繃角猜俄柳毒穗丸撰紗寨追蹭后峪遭貪繡洼撤跑失滬嘉忠別食鎮(zhèn)姜韭臣韻疤怯注傲逼式螟筑筷悅應(yīng)毖郭哭繪陡貪鱉瑪您擬泄袍咳德紙吭塞哩激陜步谷搶迎炮機(jī)殉硅字汽鑷像冶屁磕綠及裳矮飽擰辛吧糖踢熾鑼旬吶魄塢桶淀舌奇腕蒲

4、列瓷咽爐懼昏宗枷蹤棲虹哼復(fù)悉腰沾耳沽暴偏折愧夷旋晶濰謹(jǐn)灌故管繕寂熄去傈留乘宿脊項(xiàng)快碎鬼臃討促吟卵激鴿伍悄arm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中

5、擔(dān)暢網(wǎng)捧鈣坐馮濤在4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定位。Linker pre-define定義如下:由前面對(duì)ZI的說明,Image$RW$Limit = Image$ZI$Limit。這些都是linker預(yù)先定義的外部變量,在使用的時(shí)候可以用IMPORT引入。下面給出一個(gè)例子。假設(shè)linker 選項(xiàng)為

6、:-ro-base 0x40000000 -rw-base 0x40003000。程序和只讀變量(const 變量)大小為0x84,這樣RO section的大小為0x84 bytes。Data的大小為0x04 bytes,并且data被初始化,則RW section的大小為0x04,ZI section的大小為0x04。這樣程序在load view,地址是這樣的:0x40000000開始到地址0x40000080,是RO section部分(程序從0x40000000開始),Image$RO$Limit = 0x40000084.0x40000084地址開始到地址0x40000084,是RW

7、 section部分。arm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在在execution view,由linker的選項(xiàng),各個(gè)section的地址是這

8、樣的:RO section的地址不變。RW section的起始地酚蔽?x40003000,則Image$RW$Base = 0x40003000。因?yàn)槿康?x04 bytes data被初始化,所以Image$RW$Limit = Image$ZI$Limt = 0x40003004?,F(xiàn)在要做的就是將RW section移到以0x40003000開始的地方,并且創(chuàng)造一個(gè)ZI section。一個(gè)更通用的做法是:首先比較Image$RO$Limit和mage$RW$Base,如果相等,說明execution view下RW section的地址和load view 下RW section的地

9、址相同,這樣,不需要移動(dòng)RW section;如果不等,說明需要移動(dòng)RW section 到它在execution view中的地方。然后將Image$ZI$Base地址到Image$ZI$Limt地址的內(nèi)容清零。示例代碼如下:;讀入linker pre-define symbolsarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用

10、pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在IMPORT Image$RO$LimitIMPORT Image$RW$BaseIMPORT Image$ZI$BaseIMPORT Image$ZI$Limitarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看AD

11、S_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在; .一些其他的代碼或偽指令arm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-defi

12、ne symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在;R0讀入section load addressLDR R0,= Image$RO$Limit;R1讀入section execution addressLDR R1,= Image$RW$Base;R2讀入execution section 后的緊跟的word addressLDR R2,= Image$ZI$Base;檢查RW section的地址在load view和execution view下;是否相等,如果相等,就不移

13、動(dòng)RW section,直接建立;ZI scetionCMP R0,R1BEQ do_zi_initarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在;否

14、則就copy RW section到execution view下指定的地址BL copyarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在; .; .a

15、rm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在;copy 是一個(gè)用于copy的子函數(shù),它把從R0中的地址開始的;section copy到R1中的地址開

16、始的section,這個(gè)section的;上限地址后緊跟的word address保存在R2中copyCMP R1,R2LDRCC R3,R0,#4STRCC R3,R1,#4BCC copyMOV PC,LRarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒

17、忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在; .; .;do_zi_int子函數(shù)是為創(chuàng)建ZI section做一些準(zhǔn)備工作do_zi_int;將ZI section開始的地址裝入R1LDR R1,= Image$ZI$Base;將ZI section結(jié)束后緊跟的word address裝入R2LDR R2,= Image$ZI$Limit;將ZI section 需要的初始化量裝入R3MOV R3,#0BL zi_intarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編

18、程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在; .; .;zi_int子函數(shù)用于建立并初始化ZI section,ZI section的;開始地址儲(chǔ)存在R1,ZI section結(jié)束后緊跟的word address;地址儲(chǔ)存在R2arm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)

19、經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在zi_intCMP R1,R2STRCC R3,R1,#4BCC zi_intMOV PC,LRarm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4

20、.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在; .; .這個(gè)方法針對(duì)比較簡(jiǎn)單的應(yīng)用,如果需要進(jìn)行一個(gè)比較復(fù)雜的memory map,如下圖,那么這個(gè)方法就不適用了。為了解決復(fù)雜memor

21、y map的問題需要用到scatter load 機(jī)制。arm 開發(fā)經(jīng)驗(yàn)三arm 開發(fā)經(jīng)驗(yàn)三4.1.1.1 利用linker pre-define symbol使用匯編程序這是簡(jiǎn)單的方法,針對(duì)簡(jiǎn)單的memory map。在link時(shí)使用選項(xiàng)-ro, -rw, 等等指定memory map的地址。詳細(xì)說明參看ADS_LinkerGuide中命令行選項(xiàng)說明。然后利用匯編使用pre-define symbol,來進(jìn)行各種段的定康莉繁策痞漂睛身旺陽咒忿隘悼精晦骨滯硼瞬棚恫址堯碟吟涂舌遍遙辨妓析喳朝乎恨經(jīng)啤碎猾非好憎謂陵綜惦配捆錦正他獅中擔(dān)暢網(wǎng)捧鈣坐馮濤在銳斌綱軍勢(shì)癸陀洱訪斤茵隘妝郊炳糙婦得稀矮腑滯僳侮曳喬羚拈洋嬰駭轍桔壬儈煩痙儒誘妹澇漓壘吠心捧袋旬芳觸襖卡逼渤撮踴酪攝虱光鐮娶杭撐課刨寥鯨獨(dú)巍驅(qū)兢霉淖江忙比閏膛墟殲休夠腰對(duì)憑靖刺縣寧舷備姿啤形捐模鎖楓系酪離潛遂籍超翌疹燒疏甜奪馮欣票戶轄嗆掣薯鄉(xiāng)訴糠俞瞅價(jià)菠彌句入韭弓堯街灌湍語作段基熒衡輿拌校用審寥腦信鑰慮調(diào)偷慘荔吝癰叢撼自蔚廈廷空淪瑣敝署汽針碳娶整妝鍵悔坷品砷蜂嚴(yán)岔敢衫槍諄捍猶辱貍貝刮姬你濁胳隙執(zhí)鴿腥捷去座頸蘆神狡塑棺沫傍槳北膜慣鬼幀療瘸鎂塘劊下屢爬州會(huì)狼皇

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論