SoC嵌入式軟體架構設計之五 :可執行程式的重構

來源:互聯網
上載者:User

標籤:style   io   os   ar   檔案   資料   sp   on   cti   

          低端控制器對執行效率要求很高,成本敏感,因而SoC內建SRAM是緊缺資源。代碼分塊管理就是為了充分利用記憶體,提高記憶體的複用效率而提出的一種設計方法。代碼分塊管理不僅涉及到硬體,同樣對作業系統和應用、驅動的設計都有要求,這些模組共同努力以使執行效率達到最高。

          本節講述代碼分塊(Bank)管理思想下可執行檔的重構,即對程式編譯後的可執行檔進行重新組織、打包,以在載入階段獲得最高的執行效率,減少記憶體佔用。要使執行效率高,意味著可執行檔的格式儘可能簡單,解析執行檔案的流程簡單,相應地,解析過程代碼量少,即能夠減少記憶體的佔用。

          keil產生的Hex或者Bin,其實也是keil對axf調試檔案進行抽取,重新打包產生。Hex和Bin可以通過燒寫器下載到flash。GCC工具鏈會產生可執行格式ELF,也可以離線對ELF格式內容進行抽取,重新打包生產Hex格式,並燒寫到flash中。本次講述的是可執行檔儲存在外存放裝置(card,nand flash,硬碟)中,在運行前由作業系統將其載入到記憶體再執行這種情況。

          要對工具鏈產生的可執行檔(如ELF)進行重構,自然需要熟悉該執行檔案的格式,如ELF,裡面會包括檔案頭,SECTION節,符號段,程式碼片段,資料區段,還有調試資訊等等。而程式的運行往往只需要其中較少的段資訊。可執行檔就是要得到必要的段的資訊和資料,將不必要的通通刪除,並且根據代碼分塊管理的特點進行自訂格式的編製。這裡不再對ELF等標準執行檔案進行分析(以後可能另寫文章),只描述重構後的目標格式,看看什麼段資訊和資料是作業系統必要要知道和擷取的。

            1. 檔案頭

            1)格式標識符,如應用,驅動等

            2)版本號碼

            3)常駐程式碼片段在檔案中位移

            4)常駐代碼長度

            5)常駐程式碼片段在記憶體中的起始地址

            6)常駐資料(.DATA)段在檔案中位移

            7)常駐資料(.DATA)長度

            8)常駐資料區段(.DATA)在記憶體中的起始地址

            9).bss段長度

            10).bss段在記憶體中的起始地址

            11)程式入口地址ENTRY:第一行代碼的地址,不是main哦,是執行階段程式庫的一行代碼地址

            12)reserved,對齊到扇區或者1024位元組。如果是驅動類型,則會增加兩個欄位:驅動入口地址和驅動退出地址。             

             2. 代碼塊頭

             1)第一個Bank組的頭,按順序是第一個Bank的塊資訊、第二個Bank的塊資訊、。。。第N個Bank的塊資訊。一個Bank組最大含有N個Bank,不夠的填0.

             2)第二個Bank組的頭,按順序是第一個Bank的塊資訊、第二個Bank的塊資訊、。。。第N個Bank的塊資訊。一個Bank組最大含有N個Bank,不夠的填0.

             .....

             有幾個Bank組由檔案頭的格式標識符來判定,由架構師事先約定。

             每個Bank塊的塊資訊包括:bank塊資料(代碼和資料)在檔案中的位移,Bank長度,BAnk對應的記憶體位址。

 

    3.常駐程式碼片段資料,對齊扇區

    4.常駐資料區段資料,對齊扇區

    5.第一組Bank的資料,對齊扇區,只記錄真實的Bank資料,一個Bank組不夠N個bank時不需補0.

              6. 第二組Bank的資料,對齊扇區,只記錄真實的Bank資料,一個Bank組不夠N個bank時不需補0.

              7. 最後一個組的Bank資料。

 

         載入時解析該檔案頭,獲得常駐程式碼片段和資料區段的資訊,將兩者載入到記憶體,對Bss段清0,然後讀取到程式的ENTRY入口,跳到該地址執行即可,簡單高效!

         Bank切換時,根據Bank組號和Bank號即快速定位到Bank的段資訊地址,讀出該Bank在檔案中的位移和Bank長度,進而讀取並載入到複用的記憶體空間。    

SoC嵌入式軟體架構設計之五 :可執行程式的重構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.