新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的嵌入式系統程序開發要點(五)

        基于ARM的嵌入式系統程序開發要點(五)

        作者: 時間:2016-12-02 來源:網絡 收藏


        上述過程中的一個特點是:func1()還是使用通常的BL指令來進行子程序調用,而 func2()返回時則直接使用“BX LR”,沒有對LR進行判斷和最低位的設置。這是因為當執行BL指令對LR進行保存時,其最低位會被自動設置,以滿足返回時狀態切換的需要,可直接使用 “BX LR”。

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

        當然,插入了鏈接代碼會相應地增加代碼長度,通常一段veneer包含3條指令,即12B字節長度。可以用“-info veneers”選項使鏈接器輸出所有veneers的位置和長度信息。

        4交互程序之間的兼容性

        因為在指定交互選項后,編譯及鏈接后的輸出代碼跟在無交互情況下不同,所以當多個源文件如果使用了不同的設置進行編譯,相互之間的調用可能產生兼容性問題。圖5說明了這些關系。




        在一個使用交互工作的項目工程管理中,對此要加以仔細考慮。

        5V5架構的擴展

        ARM在V5版本的架構中,對ARM/Thumb的交互增加了新的支持。針對前面第3節中提到的函數調用和返回問題,V5版本中專門對指令做了擴展。
        ①增加了新指令BLX,解決了原來BX和BL指令各自的欠缺。使交互的函數調用可以由一條指令實現,省去了跳轉代碼的開銷。
        ②擴展了以PC為目標地址的數據傳輸指令功能。PC加載值的最低位將被自動送到狀態寄存器CPSR的T狀態位。也就是說,通過給PC賦值的方法也能實現狀態的切換,這樣就使習慣的函數返回方法——從堆棧中恢復寄存器,也能實現交互調用函數的正確返回了。

        所以,V5架構以后的代碼,不再需要額外的鏈接代碼,縮小了代碼長度,提高了狀態切換時的執行效率。當然,在V5及以后的架構中,繼續保持了對以前代碼的良好兼容性。

        6Thumb-2

        ARM和Thumb因為其各自的優勢,都得到了極為廣泛的應用。在一個應用程序中,用戶要根據系統的具體情況靈活分配,使用不同的編譯器,把不同的代碼編譯成ARM或Thumb,以希望得到最優的代碼長度和性能平衡。這樣做能夠達到系統優化的目的,但是也給設計人員帶來了額外的交互處理工作。最近,ARM公司公布了一項新的發明——Thumb-2指令集,該指令集同時包含32位和16位指令,在代碼長度和性能之間作了最佳的平衡。這樣,以后用戶就可以用一個統一的Thumb-2編譯器來解決現在面臨的很多問題了。

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




        引證文獻

        1. 楊志強嵌入式系統設計與發展 [期刊論文] -青海師范大學學報(自然科學版)2005(03)
        2. 劉志勇 基于ARM的無線視頻傳輸硬件系統的初步研究與開發 [學位論文] 碩士2005
        3. 李晶 基于 LINUX的無線局域網芯片驅動程序的設計與開發 [學位論文] 碩士2005

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 酒泉市| 正安县| 健康| 平度市| 镇江市| 舟山市| 包头市| 江安县| 沽源县| 大连市| 安多县| 沾益县| 斗六市| 太保市| 南投市| 六盘水市| 中西区| 吉木萨尔县| 新野县| 咸阳市| 庆元县| 东宁县| 石屏县| 昌图县| 宁晋县| 军事| 隆安县| 万载县| 叶城县| 绵竹市| 榆社县| 深州市| 宁乡县| 汪清县| 商城县| 永福县| 道真| 交口县| 长春市| 安溪县| 山阳县|