專利名稱:應用自動編譯框架來快速開發(fā)嵌入式系統的方法及裝置的制作方法
技術領域:
本發(fā)明提供一種開發(fā)一操作系統的方法及裝置,特別指一種應用一自動編譯框架來快速開發(fā)一嵌入式操作系統的方法及裝置。
背景技術:
隨著嵌入式系統(Embedded System)的發(fā)展,相關的應用裝置也日漸普及,舉例來說,信息家電(information appliance,IA)、智能型手機(smartphone)、機頂盒(set-top-box)、多媒體音像播放機、打印機、路由器與個人數字助理等應用嵌入式系統結構的裝置均是目前本領域極力發(fā)展的產品,一般而言,嵌入式系統由計算機軟件(嵌入式操作系統)與計算機硬件(系統單芯片)所構成,亦即其基于某一種特殊用途而開發(fā)出來,因此,相較于一般個人計算機,嵌入式系統往往具有穩(wěn)定性高、體積小與成本低的優(yōu)點。對于嵌入式操作系統而言,目前本領域所使用的產品很多,例如Palm OS、Windows CE與Linux等,其中Linux操作系統由于具有免費授權的特性,因此目前大量地應用于嵌入式系統中。
請參閱圖1,圖1為公知開發(fā)一嵌入式操作系統的流程圖。公知開發(fā)嵌入式操作系統的步驟說明如下步驟100準備組成一嵌入式操作系統所需的多個構件原始碼(component source code);步驟102對該多個構件原始碼中尚未完成編譯的一構件原始碼進行配置設定(configure);步驟104編譯(compile)該已完成配置設定的構件原始碼;步驟106該構件原始碼是否成功編譯成一相對應構件?若是,則進行步驟110;否則,進行步驟108;步驟108對該待編譯的構件原始碼重新進行配置設定,接著,回到步驟104;步驟110該多個構件原始碼是否均已編譯成功?若是,則進行步驟112;否則,回到步驟102;步驟112將已編譯完成的多個構件綜合成根文件系統(root filesystem);步驟114去除不必要的構件以減少存儲空間與主存儲器的使用量;步驟116壓縮該根文件系統為一映像文檔;以及步驟118將該映像文檔下載至一目標裝置中,并測試該映像文檔所對應的該根文件系統是否可以正常執(zhí)行。
上述開發(fā)流程簡要說明如下。一嵌入式系統(亦即目標裝置)的開發(fā)者會依據該嵌入式系統的功能需求來設計一適當的嵌入式操作系統,因此,該開發(fā)者首先將該嵌入式操作系統所需的多個構件的構件原始碼(例如,核心的原始碼、函式庫的原始碼與應用程序的原始碼等等)存放于一開發(fā)系統(例如一計算機主機)上。接著,該開發(fā)者便通過該開發(fā)系統所提供的綜合型開發(fā)環(huán)境(integrated development environment,IDE)來對各構件原始碼進行配置設計,由于每一構件具有其功能與運作,因此,該開發(fā)者必須具有廣泛且深入的軟硬件知識,以便了解每一構件的功能與運作以及各構件之間的操作關聯性,因此若一構件所對應的構件原始碼的配置設定產生錯誤,則當該構件原始碼后續(xù)執(zhí)行編譯程序時,該構件原始碼便無法順利地編譯產生所要的構件,亦即,該構件原始碼編譯失敗,所以,該開發(fā)者便必須重新檢視該構件原始碼的配置設定并進行修改,接著,再重新編譯該構件原始碼,上述編譯與校正配置設定的程序會不斷重復執(zhí)行直到該構件原始碼編譯成功為止。
當該多個構件原始碼均已編譯成功之后,該開發(fā)者便使用該開發(fā)系統來將已編譯完成的多個構件綜合成根文件系統,此時,由于公知目標裝置上的存儲容量有限,因此,為了降低存儲空間與主存儲器的使用量,因此便會進一步地將該根文件系統中不必要的構件剔除,舉例來說,開發(fā)過程中所使用的開發(fā)工具(例如編譯器)并不會在該目標裝置上執(zhí)行,因此其便會被去除來降低根文件系統的實際容量。最后,為了于該目標裝置上測試上述的根文件系統,因此,該根文件系統會先壓縮成一映像文檔,接著,該映像文檔便被下載至該目標裝置來測試該根文件系統的運作。若該根文件系統無法正確運作,則該開發(fā)者必須耗費大量時間來執(zhí)行除錯(debug),并且另需重頭以手工操作來執(zhí)行一遍開發(fā)流程,基本上,一個有經驗的開發(fā)者大約需要一周才能順利開發(fā)出一個原型系統(prototype)。
由上述說明可知,公知嵌入式操作系統的開發(fā)方法明顯具有以下三缺點(一)開發(fā)者需要對所采用的構件有充份了解,不然,構件原始碼的配置設定便極易發(fā)生錯誤而無法使構件原始碼順利編譯成功;(二)公知嵌入式操作系統的開發(fā)流程十分復雜,而且環(huán)環(huán)相扣容易出錯;以及(三)開發(fā)者需要驗證與除錯原型系統時,其必須利用特殊軟硬件組合將所開發(fā)的根文件系統下載至目標裝置上,這樣的流程不但復雜而且耗時。
發(fā)明內容
因此本發(fā)明提供一種應用一自動編譯框架來快速開發(fā)一嵌入式操作系統的方法及裝置,以解決上述的問題。
依據本發(fā)明的一實施例,其公開一種開發(fā)一嵌入式操作系統的方法。該方法包含有(a)提供一工具軟件原始碼(utility source code)、一預建配置設定框架(pre-built configuration framework)以及一自動編譯框架(automated building framework);以及(b)執(zhí)行該自動編譯框架來自動地編譯該工具軟件原始碼以產生多個工具程序,以及自動地綜合(integrate)該預建配置設定框架以及該多個工具程序來產生該嵌入式操作系統的根文件系統(root file system)。
依據本發(fā)明的一實施例,其另公開一種開發(fā)一嵌入式操作系統的裝置。該裝置包含有一存儲裝置,其包含有一工具軟件原始碼(utility sourcecode)、一預建配置設定框架(pre-built configuration framework)以及一自動編譯框架(automated building framework);以及一微處理器(microprocessor),耦接于該存儲裝置,用來執(zhí)行該自動編譯框架以自動地編譯該工具軟件原始碼以產生多個工具程序,以及自動地綜合(integrate)該預建配置設定框架以及該多個工具程序來產生該嵌入式操作系統的根文件系統(root file system)。
本發(fā)明快速開發(fā)一嵌入式操作系統的方法與裝置具有以下優(yōu)點(一)開發(fā)者無須知道嵌入式系統的軟硬件知識即可經由自動編譯框架得到一嵌入式操作系統的原型系統;(二)由于預建配置設定框架所包含的軟件元件預先驗證過,所以可節(jié)省開發(fā)過程中進行驗證和除錯的時間;(三)自動編譯框架為自動化處理機制,因此可節(jié)省大量的開發(fā)時間;以及(四)開發(fā)結果為一中介映像文檔,其可讓開發(fā)者依據需求來彈性選擇使用何種測試機制來測試所開發(fā)的根文件系統。
圖1為公知開發(fā)一嵌入式操作系統的流程圖。
圖2為本發(fā)明開發(fā)一嵌入式操作系統的流程圖。
圖3為本發(fā)明開發(fā)一嵌入式操作系統的裝置的功能方塊圖。
主要元件符號說明300計算機主機 302微處理器304存儲裝置306工具軟件原始碼308預建可執(zhí)行碼310預建配置設定框架312自動編譯框架314操作系統316模擬器軟件 318編譯工具組320目標裝置具體實施方式
請參閱圖2,圖2為本發(fā)明開發(fā)一嵌入式操作系統的流程圖。本發(fā)明開發(fā)嵌入式操作系統的操作說明如下步驟200于一開發(fā)系統中準備一工具軟件原始碼(utility sourcecode)、一預建可執(zhí)行碼(pre-built binary)、一預建配置設定框架(pre-built configuration framework)以及一自動編譯框架(automatedbuilding framework);步驟202執(zhí)行該自動編譯框架;步驟204該自動編譯框架自動地讀取該工具軟件原始碼,并自動地編譯該工具軟件原始碼來產生多個工具程序;步驟206該自動編譯框架自動地讀取該預建配置設定框架與該多個工具程序,并自動地將該預建配置設定框架以及該多個工具程序綜合(integrate)成根文件系統(root file system);
步驟208該自動編譯框架自動地產生對應一特定文件系統格式的空白映像文檔;步驟210該自動編譯框架自動地偵測該預建可執(zhí)行碼是否包含有一系統核心(kernel)?若是,則執(zhí)行步驟212;否則,執(zhí)行步驟214;步驟212該自動編譯框架自動地將該預建可執(zhí)行碼(該系統核心除外)綜合至該根文件系統,并自動地將該根文件系統與該系統核心寫入至該空白映像文檔以產生一中介映像文檔(Meta image),接著,執(zhí)行步驟216;步驟214該自動編譯框架自動地將該預建可執(zhí)行碼綜合至該根文件系統,并自動地將該根文件系統寫入至該空白映像文檔以產生一中介映像文檔;以及步驟216測試該中介映像文檔所對應的該根文件系統是否可以正常執(zhí)行。
上述開發(fā)流程詳細說明如下。一開發(fā)者于一開發(fā)系統(例如一計算機主機)上執(zhí)行嵌入式操作系統的開發(fā)程序,首先,該開發(fā)者會先將一工具軟件原始碼、一預建可執(zhí)行碼、一預建配置設定框架以及一自動編譯框架載入該開發(fā)系統(步驟200)。本實施例中,該預建配置設定框架為符合Linux標準庫(Linux standards base,LSB)的文件系統框架,其本身可視為一個簡化版的根文件系統,例如其目錄結構除了根目錄(root)/外,另具有下列目錄/etc、/usr、/dev及/bin等等,此外,構成該預建配置設定框架的所有軟件元件事先經過驗證而可正確地運作,換句話說,該預建配置設定框架所包含的軟件元件會于操作時產生錯誤的機率微乎其微。上述說明中,該預建配置設定框架并未包含任何工具軟件,然而,亦可依據設計需求將部分已完成驗證的工具軟件設置于該預建配置設定框架中,亦屬本發(fā)明的范疇。請注意,本發(fā)明可用來快速地開發(fā)一嵌入式操作系統的原型系統(prototype),因此,該預建配置設定框架所對應的根文件系統并非針對一特定用途的嵌入式系統來建置,相反地,該預建配置設定框架所對應的根文件系統支持大部分嵌入式系統可能會需要的功能,所以,雖然本發(fā)明方法所產生的嵌入式操作系統的原型系統會具有較大的數據量,然而,不論開發(fā)者所要處理的嵌入式系統為何,其都能依據本發(fā)明所公開的技術來快速地開發(fā)出所要的嵌入式操作系統的原型系統。
該工具軟件原始碼包含有對應多個工具軟件的原始碼,舉例來說,該多個工具軟件為一系統殼程序(例如bash shell)、一文件處理工具(例如cp、mv與mkdir等)以及軟件管理程序(例如rpm),本實施例中,該工具軟件原始碼應用BusyBox之類的軟件原始碼來加以建置。另外,該預建可執(zhí)行碼則可包含有一系統核心或多個系統函式庫(例如glibc與libnss等)。對于該自動編譯框架而言,其為一文字型批次檔(script),用來控制嵌入式操作系統的開發(fā)流程,換句話說,該自動編譯框架提供一自動化處理機制,而該自動編譯框架的運作與功能則詳細說明如下。
于該工具軟件原始碼、該預建可執(zhí)行碼、該預建配置設定框架以及該自動編譯框架載入該開發(fā)系統后(步驟200),該開發(fā)者便可執(zhí)行該自動編譯框架來啟動一自動化處理機制(步驟202)。該自動編譯框架會先讀取該工具軟件原始碼,并使用該開發(fā)系統所具有的編譯器(compiler)、鏈接器(linker)、交叉編譯器(cross-compiler)或交叉鏈接器(cross-linker)來對該工具軟件原始碼進行編譯或鏈接的操作,以產生多個工具程序,例如上述的系統殼程序、文件處理工具以及軟件管理程序(步驟204),接著,該自動編譯框架便將該預建配置設定框架以及該多個工具程序綜合成根文件系統(步驟206),此時,原本為一精簡版根文件系統的預建配置設定框架便可經由該多個工具程序的加入而支持更多的功能。然后,該自動編譯框架會產生一空白映像文檔,其所對應的文件系統格式可依據設計需求而符合ISO 9660、JFFS2、EXT2、EXT3、ROMFS、CRAMFS或RAMDISK的規(guī)范,舉例來說,該自動編譯框架線先執(zhí)行一公知指令”dd”來建立一存儲空間,接著在執(zhí)行另一公知指令”mkfs”來格式化該存儲空間以建立對應所需的文件系統格式的空白映像文檔。
如前所述,該預建可執(zhí)行碼可包含有一系統核心或多個系統函式庫。假設該預建可執(zhí)行碼同時包含一系統核心與多個系統函式庫,所以,步驟210便偵測到該預建可執(zhí)行碼包含有系統核心,因此,本實施例中,該自動編譯框架便將該多個系統函式庫綜合至目前的根文件系統而進一步地擴充其功能,此外,該自動編譯框架接著便將該根文件系統與該系統核心一起寫入至該空白映像文檔以產生一中介映像文檔(步驟212),換句話說,該中介映像文檔具有獨立開機的能力。另一方面,假設該預建可執(zhí)行碼僅包含多個系統函式庫而不含系統核心,所以,步驟210便偵測到該預建可執(zhí)行碼不包含有系統核心,因此,本實施例中,該自動編譯框架便將該多個系統函式庫綜合至目前的根文件系統而進一步地擴充其功能,此外,該自動編譯框架接著便將該根文件系統寫入至該空白映像文檔以產生一中介映像文檔(步驟214),由于該中介映像文檔此時僅包含根文件系統,所以其便不具有獨立開機的能力。請注意,假設該預建可執(zhí)行碼僅包含一系統核心,則于步驟212中,目前的根文件系統并不會產生變動,因此于該自動編譯框架僅會將該根文件系統與該系統核心一起寫入至該空白映像文檔以產生一中介映像文檔。
如同公知開發(fā)流程一般,本發(fā)明開發(fā)流程的最后階段必定要測試該中介映像文檔所對應的該根文件系統是否可以正常執(zhí)行(步驟216)。本實施例可采用兩種測試機制(一)執(zhí)行一模擬器軟件(例如VMWare)來對該中介映像文檔進行測試,由于該模擬器軟件與該開發(fā)系統于同一計算機主機上被執(zhí)行,因此,可避免公知開發(fā)流程將該中介映像文檔下載至一目標裝置(例如應用于網路的嵌入式系統)所耗費的時間;以及(二)實際使用一目標裝置(例如應用于網路的嵌入式系統)來對該中介映像文檔進行測試。
由于本發(fā)明開發(fā)嵌入式操作系統的方法采用一自動化運作的自動編譯框架,因此本發(fā)明不需要開發(fā)者手動地控制該中介映像文檔的形成,亦即,若該根文件系統于步驟216無法通過驗證,則開發(fā)者于完成除錯后后,自動編譯框架便可快速地產生另一中介映像文檔來進行測試,因此可大幅地縮短系統開發(fā)時間。
請參閱圖3,圖3為本發(fā)明開發(fā)一嵌入式操作系統的裝置的功能方塊圖。此一實施例中,開發(fā)一嵌入式操作系統的裝置為一計算機主機300,其包含有一微處理器(microprocessor)302與一存儲裝置304(例如一硬盤),如圖3所示,存儲裝置304中存儲有一工具軟件原始碼306、一預建可執(zhí)行碼308、一預建配置設定框架310、一自動編譯框架312、一操作系統314、一模擬器軟件316以及一編譯工具組(compiler toolchain)318。工具軟件原始碼306、預建可執(zhí)行碼308、預建配置設定框架310、自動編譯框架312以及模擬器軟件316的功能與操作已于前詳述,于此不另贅述,而編譯工具組(compiler toolchain)318包含有開發(fā)軟件所需的編譯器、鏈接器、交叉編譯器或交叉鏈接器。一開發(fā)者可使用計算機主機300來開發(fā)一嵌入式操作系統的原型系統,首先,計算機主機300于開機后會載入并執(zhí)行操作系統314(例如Linux操作系統)來作為一開發(fā)系統,因此,當該開發(fā)者輸入一指令至計算機主機300而執(zhí)行自動編譯框架312后,自動編譯框架312便會讀取并使用編譯工具組318來依據工具軟件原始碼306產生多個工具軟件,換句話說,自動編譯框架312依據前述步驟204-214來自動地產生一中介映像文檔。接著,該開發(fā)者可依據其需求將該中介映像文檔載入至一外部的目標裝置320來進行功能驗證,或者通過計算機主機300本身執(zhí)行模擬器軟件316來測試該中介映像文檔是否可正常運作。
相較于公知技術,本發(fā)明快速開發(fā)一嵌入式操作系統的方法與裝置具有以下優(yōu)點(一)開發(fā)者無須知道嵌入式系統的軟硬件知識即可經由自動編譯框架得到一嵌入式操作系統的原型系統;(二)由于預建配置設定框架所包含的軟件元件預先驗證過,所以可節(jié)省開發(fā)過程中進行驗證和除錯的時間;(三)自動編譯框架為自動化處理機制,因此可節(jié)省大量的開發(fā)時間;以及(四)開發(fā)結果為一中介映像文檔,其可讓開發(fā)者依據需求來彈性選擇使用何種測試機制來測試所開發(fā)的根文件系統。
以上所述僅為本發(fā)明的優(yōu)選實施例,凡依本發(fā)明權利要求所進行的等效變化與修改,皆應屬本發(fā)明的涵蓋范圍。
權利要求
1.一種開發(fā)一嵌入式操作系統的方法,其包含有(a)提供一工具軟件原始碼、一預建配置設定框架以及一自動編譯框架;以及(b)執(zhí)行該自動編譯框架來自動地編譯該工具軟件原始碼以產生多個工具程序,以及自動地綜合該預建配置設定框架以及該多個工具程序來產生該嵌入式操作系統的根文件系統。
2.如權利要求1所述的方法,其中步驟(a)還包含有提供一預建可執(zhí)行碼,其未包含該嵌入式操作系統的一系統核心,以及步驟(b)還包含有自動地將該預建可執(zhí)行碼綜合至該根文件系統。
3.如權利要求1所述的方法,其中步驟(b)還包含有自動地產生一空白映像文檔,以及自動地將該根文件系統寫入至該空白映像文檔以產生一中介映像文檔。
4.如權利要求3所述的方法,其中步驟(a)還包含有提供一預建可執(zhí)行碼,其為該嵌入式操作系統的一系統核心,以及步驟(b)還包含有自動地將該系統核心寫入至該中介映像文檔。
5.如權利要求3所述的方法,其中該空白映像文檔所對應的文件系統格式符合ISO 9660、JFFS2、EXT2、EXT3、ROMFS、CRAMFS或RAMDISK的規(guī)范。
6.如權利要求3所述的方法,其中步驟(a)還包含提供一模擬器軟件,以及該方法還包含有執(zhí)行該模擬器軟件來載入該中介映像文檔以測試該根文件系統的運作。
7.如權利要求1所述的方法,其中該預建配置設定框架所包含的所有軟件元件均已完成功能驗證。
8.如權利要求1所述的方法,其中該預建配置設定框架為符合Linux標準庫(LSB)的文件系統框架。
9.如權利要求1所述的方法,其中步驟(a)還包含有提供一編譯工具組,以及該自動編譯框架使用該編譯工具組來自動地編譯該工具軟件原始碼產生該多個工具程序。
10.一種開發(fā)一嵌入式操作系統的裝置,其包含有一存儲裝置,其包含有一工具軟件原始碼、一預建配置設定框架以及一自動編譯框架;以及一微處理器,耦接于該存儲裝置,用來執(zhí)行該自動編譯框架以自動地編譯該工具軟件原始碼以產生多個工具程序,以及自動地綜合該預建配置設定框架以及該多個工具程序來產生該嵌入式操作系統的根文件系統。
11.如權利要求10所述的裝置,其中該存儲裝置還包含有一預建可執(zhí)行碼,其未包含該嵌入式操作系統的一系統核心,以及該微處理器另執(zhí)行該自動編譯框架來自動地將該預建可執(zhí)行碼綜合至該根文件系統。
12.如權利要求10所述的裝置,其中該微處理器另執(zhí)行該自動編譯框架來自動地產生一空白映像文檔,以及自動地將該根文件系統寫入至該空白映像文檔以產生一中介映像文檔。
13.如權利要求12所述的裝置,其中該存儲裝置還包含有一預建可執(zhí)行碼,其為該嵌入式操作系統的一系統核心,以及該微處理器另執(zhí)行該自動編譯框架來自動地將該系統核心寫入至該中介映像文檔。
14.如權利要求12所述的裝置,其中該空白映像文檔所對應的文件系統格式符合ISO 9660、JFFS2、EXT2、EXT3、ROMFS、CRAMFS或RAMDISK的規(guī)范。
15.如權利要求12所述的裝置,其中該存儲裝置還包含有一模擬器軟件,以及該微處理器另執(zhí)行該模擬器軟件來載入該中介映像文檔以測試該根文件系統的運作。
16.如權利要求10所述的裝置,其中該預建配置設定框架所包含的所有軟件元件均已完成功能驗證。
17.如權利要求10所述的裝置,其中該預建配置設定框架為符合Linux標準庫(LSB)的文件系統框架。
18.如權利要求10所述的裝置,其中該存儲裝置還包含有一編譯工具組,以及該自動編譯框架于執(zhí)行時使用該編譯工具組來自動地編譯該工具軟件原始碼產生該多個工具程序。
全文摘要
一種開發(fā)一嵌入式操作系統的方法與裝置。該方法包含有提供一工具軟件原始碼、一預建配置設定框架以及一自動編譯框架;以及執(zhí)行該自動編譯框架來自動地編譯該工具軟件原始碼以產生多個工具程序,以及自動地綜合該預建配置設定框架以及該多個工具程序來產生該嵌入式操作系統的根文件系統。
文檔編號G06F9/44GK1831760SQ20051005432
公開日2006年9月13日 申請日期2005年3月8日 優(yōu)先權日2005年3月8日
發(fā)明者曾瑞源 申請人:光寶科技股份有限公司