一種基于代碼隔離的嵌入式軟件構建方法和調用方法
【專利摘要】一種基于代碼隔離的嵌入式軟件構建方法和調用方法,將非易失存儲器劃分為第一、二、三個獨立存儲空間;將引導、加載程序,系統軟件映像對應固化到第一、二個獨立存儲空間;其前或后根據系統軟件提供的功能接口及系統數據類型定義文件生成系統軟件API接口文件;將其拷貝到應用程序所在工程并在應用程序源代碼中包含系統軟件API接口文件;將應用程序映像固化到第三個獨立存儲空間;引導、加載程序加載系統軟件和應用程序到SRAM,并跳轉到系統軟件入口執行;啟動后應用程序完成操作系統的功能調用并返回應用程序。該方法在不增加系統開銷的情況下滿足深嵌入式應用對高執行效率及低代碼大小的要求。
【專利說明】一種基于代碼隔離的嵌入式軟件構建方法和調用方法
【技術領域】
[0001]本發明涉及一種嵌入式軟件構建方法,具體涉及一種基于代碼隔離的嵌入式軟件構建方法和調用方法。
現有技術
[0002]目前現有的嵌入式軟件構建方法有兩種,一種是系統軟件以庫模塊的形式與用戶程序統一編譯、鏈接,形成同一映像進行開發調試;另外一種構建方法是將系統軟件先期開發并固化在系統中作為運行平臺,應用軟件通過軟件中斷(陷阱)的方式調用系統軟件功能,并獨立開發、編譯、鏈接,獨立固化運行,這兩種方式各有利弊,詳述如下。
[0003]第一種方式的優點是接口調用簡單,應用程序對系統軟件的功能接口調用無需增加額外的代碼,占用空間小;缺點是當軟件出現問題時,由于用戶程序和系統軟件交織在一起,不利于問題的排查和責任劃分;
[0004]第二種方式的優點是系統軟件以固件的方式固化到硬件中供應用軟件調用,有利于軟件知識產權的保護,方便問題排查;缺點是系統軟件和應用軟件均需要增加額外的代碼處理陷阱調用,包括參數的傳遞、陷阱現場的保護、恢復等工作,增加了系統開銷。
【發明內容】
[0005]本發明的目的在于提供一種基于代碼隔離的嵌入式軟件構建方法和調用方法,該方法在不增加系統開銷的情況下實現了嵌入式軟件與應用軟件的隔離、調用,滿足深嵌入式應用對高執行效率及低代碼大小的要求。
[0006]為了達到上述目的,本發明基于代碼隔離的嵌入式軟件構建方法,包括如下步驟:
[0007]I)將非易失存儲器劃分為用于固化引導、加載程序的第一個獨立存儲空間,用于固化系統軟件的第二個獨立存儲空間以及用于固化應用程序的第三個獨立存儲空間;
[0008]2)將引導、加載程序固化到非易失存儲器的第一個獨立存儲空間;將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間;且將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間之前或之后,從系統軟件映像中抽取系統軟件的符號及地址信息,形成系統數據類型定義文件,根據系統軟件提供的功能接口及系統數據類型定義文件生成系統軟件API接口文件;
[0009]3)將系統軟件API接口文件拷貝到應用程序所在工程,并在應用程序源代碼中包含系統軟件API接口文件;
[0010]4)將應用程序映像的代碼段、數據段固化到非易失存儲器的第三個獨立存儲空間,完成嵌入式軟件構建。
[0011]步驟2)中將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間之前,在操作系統中添加跳轉到應用程序入口地址的代碼。
[0012]所述的非易失存儲器為NOR FLASH存儲器、EEPROM存儲器或EPROM PROM存儲器。
[0013]所述的系統軟件映像是通過對系統軟件進行編譯、鏈接生成的;應用程序映像是通過對應用程序進行編譯、鏈接生成的。
[0014]所述的系統軟件為嵌入式實時操作系統、中間件、提供用戶使用的底層軟件或驅動軟件。
[0015]當系統軟件為嵌入式實時操作系統時,從系統軟件映像中抽取系統軟件的符號及地址信息的工具采用read-elf工具。
[0016]所述的系統軟件API接口文件為userApp.h。
[0017]所述的應用程序為多任務程序,應用程序映像的文件格式為elf格式、cofT格式或a.0ut格式。
[0018]一種嵌入式軟件的調用方法,基于代碼隔離的嵌入式軟件構建方法構建的嵌入式軟件,包括以下步驟:
[0019]I)引導、加載程序分別加載系統軟件和應用程序到RAM的不同地址空間,并跳轉到系統軟件入口執行;
[0020]2)系統軟件啟動后,應用程序通過系統軟件API接口文件完成操作系統的功能調用并返回應用程序。
[0021]與現有技術相比,本發明的有益效果在于:
[0022]本發明將非易失存儲器按需求劃分為三個獨立的存儲空間,且第一個獨立存儲空間用于固化引導、加載程序,第二個獨立存儲空間用于固化系統軟件,第三個獨立存儲空間用于固化應用程序,且根據系統軟件提供的功能接口及系統數據類型定義文件生成系統軟件API接口文件,通過該系統軟件API接口文件及系統數據類型定義文件來建立應用軟件與系統軟件的調用關系,實現了系統軟件與應用軟件的獨立開發、獨立固化,適用多個應用軟件之間、應用軟件與同一系統模塊間的隔離、調用,使得迭代式增量開發更加方便,系統軟件和應用軟件的配置管理更加方便,便于問題的排查,因此,本發明在不增加系統開銷的情況下實現了嵌入式軟件與應用軟件的隔離、調用,滿足深嵌入式應用對高執行效率及低代碼大小的要求。
【專利附圖】
【附圖說明】
[0023]圖1為本發明應用程序調用系統軟件功能接口執行并返回圖;
[0024]圖2為本發明采用NOR FLASH存儲器的目標板上的一個實施例;
【具體實施方式】
[0025]下面結合附圖對本發明做進一步詳細說明。
[0026]參見圖2,本發明基于代碼隔離的嵌入式軟件構建方法包括如下步驟:
[0027]I)將非易失存儲器劃分為用于固化引導、加載程序的第一個獨立存儲空間,用于固化系統軟件的第二個獨立存儲空間以及用于固化應用程序的第三個獨立存儲空間;非易失存儲器為NOR FLASH存儲器、EEPROM存儲器或EPROM存儲器或PROM存儲器等;
[0028]2)將引導、加載程序固化到非易失存儲器的第一個獨立存儲空間;將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間;且將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間之前或之后,從系統軟件映像中抽取系統軟件的符號及地址信息,形成系統數據類型定義文件,根據系統軟件提供的功能接口及系統數據類型定義文件生成系統軟件API接口文件;將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間之前,在操作系統中添加跳轉到應用程序入口地址的代碼;其中,系統軟件映像是通過對系統軟件進行編譯、鏈接生成的;
[0029]3)將系統軟件API接口文件拷貝到應用程序所在工程,并在應用程序源代碼中包含系統軟件API接口文件;
[0030]4)將應用程序映像的代碼段、數據段固化到非易失存儲器的第三個獨立存儲空間,完成嵌入式軟件構建。應用程序映像是通過對應用程序進行編譯、鏈接生成的,應用程序映像的文件格式為elf格式、coff格式或a.0ut格式
[0031]參見圖1和2,本發明基于代碼隔離的嵌入式軟件構建方法構建的嵌入式軟件,其調用方法為:
[0032]I)引導、加載程序分別加載系統軟件和應用程序到RAM的不同地址空間,并跳轉到系統軟件入口執行;
[0033]2)系統軟件啟動后,應用程序通過系統軟件API接口文件完成操作系統的功能調用并返回應用程序。
[0034]進一步,本發明給出了基于代碼隔離的嵌入式軟件構建方法的具體實施例;其中系統軟件為嵌入式實時操作系統,應用程序為多任務程序,非易失存儲器采用NOR FLASH存儲器。
[0035]I)應用程序需要操作系統的支持,系統上電后操作系統首先執行,然后跳轉到應用程序執行,因此,在操作系統中添加跳轉到應用程序入口地址的代碼;
[0036]2)將非易失存儲器劃分為三個獨立存儲空間,第一個獨立空間用于固化引導、力口載程序,第二個獨立存儲空間用于固化嵌入式實時操作系統,第三個獨立儲存空間用于固化應用程序;
[0037]3)固化引導、加載程序到第一個獨立存儲空間中;
[0038]4)編譯、連接嵌入式實時操作系統生成嵌入式實時操作系統映像,將嵌入式實時操作系統映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間中;
[0039]5)使用read-elf工具獲取嵌入式實時操作系統映像中功能接口符號及地址信息,形成系統數據類型定義文件;
[0040]6)根據嵌入式實時操作系統提供的功能接口及系統數據類型定義文件生成嵌入式實時操作系統API接口文件userApp.h ;
[0041]7)將嵌入式實時操作系統API接口文件拷貝到應用程序所在工程,并在應用程序源代碼中包含嵌入式實時操作系統API接口文件,#include “userApp.h” ;
[0042]8)編譯、鏈接應用程序文件,生成elf格式的應用程序映像;
[0043]9)將應用程序映像的代碼段、數據段固化到非易失存儲器的第三個獨立存儲空間中;
[0044]該嵌入式軟件構建方法構建的嵌入式軟件的調用方法如下:
[0045]I)系統加電,引導、加載程序分別加載操作系統和應用程序到SRAM的不同地址空間中;
[0046]2)跳轉到嵌入式實時操作系統執行;
[0047]3)嵌入式實時操作系統啟動后,跳轉到應用程序執行;
[0048]4)應用程序通過嵌入式實時操作系統API接口文件完成操作系統的功能調用并返回應用程序。
[0049]本發明將非易失存儲器按需求劃分為三個獨立的存儲空間,且第一個獨立存儲空間用于固化引導、加載程序,第二個獨立存儲空間用于固化系統軟件,第三個獨立存儲空間用于固化應用程序,且根據系統軟件提供的功能接口及系統數據類型定義文件生成系統軟件API接口文件,通過該系統軟件API接口文件及系統數據類型定義文件來建立應用軟件與系統軟件的調用關系,實現了系統軟件與應用軟件的獨立開發、獨立固化,適用多個應用軟件之間、應用軟件與同一系統模塊間的隔離、調用,使得迭代式增量開發更加方便,系統軟件和應用軟件的配置管理更加方便,便于問題的排查,因此,本發明在不增加系統開銷的情況下實現了嵌入式軟件與應用軟件的隔離、調用,滿足深嵌入式應用對高執行效率及低代碼大小的要求。
【權利要求】
1.一種基于代碼隔離的嵌入式軟件構建方法,其特征在于,包括如下步驟: 1)將非易失存儲器劃分為用于固化引導、加載程序的第一個獨立存儲空間,用于固化系統軟件的第二個獨立存儲空間以及用于固化應用程序的第三個獨立存儲空間; 2)將引導、加載程序固化到非易失存儲器的第一個獨立存儲空間;將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間;且將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間之前或之后,從系統軟件映像中抽取系統軟件的符號及地址信息,形成系統數據類型定義文件,根據系統軟件提供的功能接口及系統數據類型定義文件生成系統軟件API接口文件; 3)將系統軟件API接口文件拷貝到應用程序所在工程,并在應用程序源代碼中包含系統軟件API接口文件; 4)將應用程序映像的代碼段、數據段固化到非易失存儲器的第三個獨立存儲空間,完成嵌入式軟件構建。
2.根據權利要求1所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:步驟2)中將系統軟件映像的代碼段、數據段固化到非易失存儲器的第二個獨立存儲空間之前,在操作系統中添加跳轉到應用程序入口地址的代碼。
3.根據權利要求1所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:所述的非易失存儲器為NOR FLASH存儲器、EEPROM存儲器或EPROM存儲器或PROM存儲器。
4.根據權利要求1所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:所述的系統軟件映像是通過對系統軟件進行編譯、鏈接生成的;應用程序映像是通過對應用程序進行編譯、鏈接生成的。
5.根據權利要求1所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:所述的系統軟件為嵌入式實時操作系統、中間件、提供用戶使用的底層軟件或驅動軟件。
6.根據權利要求5所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:當系統軟件為嵌入式實時操作系統時,從系統軟件映像中抽取系統軟件的符號及地址信息的工具采用read-elf工具。
7.根據權利要求6所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:所述的系統軟件API接口文件為userApp.h。
8.根據權利要求6所述的基于代碼隔離的嵌入式軟件構建方法,其特征在于:所述的應用程序為多任務程序,應用程序映像的文件格式為elf格式、coff格式或a.0ut格式。
9.一種嵌入式軟件的調用方法,其特征在于,權利要求1?8中任意一項權利要求所述的基于代碼隔離的嵌入式軟件構建方法構建的嵌入式軟件,包括以下步驟: 1)引導、加載程序分別加載系統軟件和應用程序到RAM的不同地址空間,并跳轉到系統軟件入口執行; 2)系統軟件啟動后,應用程序通過系統軟件API接口文件完成操作系統的功能調用并返回應用程序。
【文檔編號】G06F9/44GK104407852SQ201410619253
【公開日】2015年3月11日 申請日期:2014年11月5日 優先權日:2014年11月5日
【發明者】褚哲, 韓源冬, 焦淼, 袁成軍, 羅榮海 申請人:中國航天科技集團公司第九研究院第七七一研究所