新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的嵌入式系統(tǒng)程序開(kāi)發(fā)要點(diǎn)(五)

基于ARM的嵌入式系統(tǒng)程序開(kāi)發(fā)要點(diǎn)(五)

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏


上述過(guò)程中的一個(gè)特點(diǎn)是:func1()還是使用通常的BL指令來(lái)進(jìn)行子程序調(diào)用,而 func2()返回時(shí)則直接使用“BX LR”,沒(méi)有對(duì)LR進(jìn)行判斷和最低位的設(shè)置。這是因?yàn)楫?dāng)執(zhí)行BL指令對(duì)LR進(jìn)行保存時(shí),其最低位會(huì)被自動(dòng)設(shè)置,以滿(mǎn)足返回時(shí)狀態(tài)切換的需要,可直接使用 “BX LR”。

在上面的例子中,為了讓編譯器在編譯函數(shù)func2()時(shí)使用BX而不是BL進(jìn)行返回,必須告訴編譯器要按照滿(mǎn)足交互工作要求的方式進(jìn)行編譯。在ARM的編譯器選項(xiàng)設(shè)置中,應(yīng)選擇“-apcs /interwork”。這樣,函數(shù)的返回指令會(huì)被正確設(shè)置,并且當(dāng)鏈接器進(jìn)行目標(biāo)代碼的鏈接時(shí),能夠在需要的地方插入正確的鏈接代碼實(shí)現(xiàn)狀態(tài)切換。

當(dāng)然,插入了鏈接代碼會(huì)相應(yīng)地增加代碼長(zhǎng)度,通常一段veneer包含3條指令,即12B字節(jié)長(zhǎng)度。可以用“-info veneers”選項(xiàng)使鏈接器輸出所有veneers的位置和長(zhǎng)度信息。

4交互程序之間的兼容性

因?yàn)樵谥付ń换ミx項(xiàng)后,編譯及鏈接后的輸出代碼跟在無(wú)交互情況下不同,所以當(dāng)多個(gè)源文件如果使用了不同的設(shè)置進(jìn)行編譯,相互之間的調(diào)用可能產(chǎn)生兼容性問(wèn)題。圖5說(shuō)明了這些關(guān)系。




在一個(gè)使用交互工作的項(xiàng)目工程管理中,對(duì)此要加以仔細(xì)考慮。

5V5架構(gòu)的擴(kuò)展

ARM在V5版本的架構(gòu)中,對(duì)ARM/Thumb的交互增加了新的支持。針對(duì)前面第3節(jié)中提到的函數(shù)調(diào)用和返回問(wèn)題,V5版本中專(zhuān)門(mén)對(duì)指令做了擴(kuò)展。
①增加了新指令BLX,解決了原來(lái)BX和BL指令各自的欠缺。使交互的函數(shù)調(diào)用可以由一條指令實(shí)現(xiàn),省去了跳轉(zhuǎn)代碼的開(kāi)銷(xiāo)。
②擴(kuò)展了以PC為目標(biāo)地址的數(shù)據(jù)傳輸指令功能。PC加載值的最低位將被自動(dòng)送到狀態(tài)寄存器CPSR的T狀態(tài)位。也就是說(shuō),通過(guò)給PC賦值的方法也能實(shí)現(xiàn)狀態(tài)的切換,這樣就使習(xí)慣的函數(shù)返回方法——從堆棧中恢復(fù)寄存器,也能實(shí)現(xiàn)交互調(diào)用函數(shù)的正確返回了。

所以,V5架構(gòu)以后的代碼,不再需要額外的鏈接代碼,縮小了代碼長(zhǎng)度,提高了狀態(tài)切換時(shí)的執(zhí)行效率。當(dāng)然,在V5及以后的架構(gòu)中,繼續(xù)保持了對(duì)以前代碼的良好兼容性。

6Thumb-2

ARM和Thumb因?yàn)槠涓髯缘膬?yōu)勢(shì),都得到了極為廣泛的應(yīng)用。在一個(gè)應(yīng)用程序中,用戶(hù)要根據(jù)系統(tǒng)的具體情況靈活分配,使用不同的編譯器,把不同的代碼編譯成ARM或Thumb,以希望得到最優(yōu)的代碼長(zhǎng)度和性能平衡。這樣做能夠達(dá)到系統(tǒng)優(yōu)化的目的,但是也給設(shè)計(jì)人員帶來(lái)了額外的交互處理工作。最近,ARM公司公布了一項(xiàng)新的發(fā)明——Thumb-2指令集,該指令集同時(shí)包含32位和16位指令,在代碼長(zhǎng)度和性能之間作了最佳的平衡。這樣,以后用戶(hù)就可以用一個(gè)統(tǒng)一的Thumb-2編譯器來(lái)解決現(xiàn)在面臨的很多問(wèn)題了。

如圖6所示,是Thumb-2指令集跟ARM和Thumb之間的比較。




引證文獻(xiàn)

1. 楊志強(qiáng)嵌入式系統(tǒng)設(shè)計(jì)與發(fā)展 [期刊論文] -青海師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2005(03)
2. 劉志勇 基于ARM的無(wú)線視頻傳輸硬件系統(tǒng)的初步研究與開(kāi)發(fā) [學(xué)位論文] 碩士2005
3. 李晶 基于 LINUX的無(wú)線局域網(wǎng)芯片驅(qū)動(dòng)程序的設(shè)計(jì)與開(kāi)發(fā) [學(xué)位論文] 碩士2005

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 交互工作ARM程序開(kāi)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉