專利名稱:通過SD卡對嵌入式Linux設備進行升級的方法
技術(shù)領域:
本發(fā)明涉及嵌入式設備技術(shù),特別涉及嵌入式Linux設備升級的技術(shù)。
背景技術(shù):
在計算機嵌入式應用技術(shù)領域,Li皿x內(nèi)核憑借其出色性能和開源路線,使得基于 Li皿x的嵌入式手持移動終端設備日益增多,而在此類嵌入式產(chǎn)品研發(fā)過程中,如何采用可 靠且簡便的方法進行系統(tǒng)軟件和應用軟件的實時升級是一個十分關(guān)鍵和重要的環(huán)節(jié),這直接 關(guān)系著產(chǎn)品的生命周期、維護成本、功能完善以及售后服務等諸多方面,目前基于Li皿x的 嵌入式產(chǎn)品研發(fā)過程中通常采用串口環(huán)境進行調(diào)試和軟件升級,故需要產(chǎn)品外接一個RS232 串行調(diào)試接口,而成品樣機則往往無此類串行調(diào)試接口,現(xiàn)有基于MTD (Memory Technology Devices)分區(qū)的嵌入式Li皿x設備系統(tǒng)中, 一般包括YAMON、 Linux內(nèi)核、根文件系統(tǒng)幾個模 塊,應用程序存放在根文件系統(tǒng)中,其中YAM0N和Li皿x內(nèi)核位于N0R-Flash中,對于這二者 的更新必須使用flash—eraseall和flashcp命令,根文件系統(tǒng)則可放在Nandflash上。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題,就是為了解決上述基于Li皿x的嵌入式手持移動終端設備 軟件升級需要外接一個RS232串行調(diào)試接口的缺點,提供一種通過SD卡(Secure Digital Memory Card)對嵌入式Linux設備進行升級的方法。
本發(fā)明解決其技術(shù)問題,采用的技術(shù)方案是,通過SD卡對嵌入式Li皿x設備進行升級的 方法,其特征在于,包括以下步驟
a. 在具有符合該嵌入式Li皿x設備架構(gòu)的開源GCC工具的本地操作系統(tǒng)環(huán)境中,交叉編譯 開源工具包mtd-utils,得到flash—eraseall個flashcp這兩個Linux的MTD分區(qū)更新命令,并 存儲在可作為設備啟動根文件系統(tǒng)的SD卡上;
b. 在SD卡上創(chuàng)建根文件更新列表及作為更新源的程序模塊;
c. 將SD卡插入設備并通過終端觸摸屏的特定操作啟動更新程序,特定操作是指在開發(fā)過 程中確定的通過觸摸屏操作的升級觸發(fā)方式;
d. 根據(jù)更新程序進行升級;
e. 升級完成;
進一步的,步驟c所述更新程序包括設備產(chǎn)品硬件中的更新程序和SD卡的更新程序;
具體的,步驟b所述在SD卡上創(chuàng)建更新程序的指導信息及作為更新源的程序模塊包括創(chuàng) 建應用程序或Linux內(nèi)核或根文件系統(tǒng)或YAMON啟動程序的更新指導信息及其作為更新源的程 序模塊;
再進一步的,步驟d包括以下步驟
dl.更新程序根據(jù)SD卡上的更新列表判斷更新模式,若僅需要更新應用程序則進入fl步 驟,若需要更新內(nèi)核或YAMON則進入gl步驟,若需要修改以只讀模式掛載的MTD分區(qū)內(nèi)容則進 入hl步驟;
fl.更新程序調(diào)用1 inux的標準ki 1 lall命令停止當前應用程序的執(zhí)行; f2.更新程序調(diào)用cp命令將SD卡上的新應用程序復制到合適的位置; f3.更新程序重新創(chuàng)建一個新的進程運行更新后的主應用程序,并進入e步驟; gl.更新程序使用SD卡上的flash—eraseall和flashcp命令將SD卡上的新內(nèi)核文件或新 YAM0N文件覆蓋至N0R-Flash中Linux內(nèi)核或YAMON文件對應的MTD分區(qū); g2.重啟系統(tǒng)并進入e步驟;
hl.更新程序調(diào)用SD卡上的flash—eraseall和flashcp命令進行設備的YAMON和內(nèi)核的更
新;
h2.更新程序在SD卡上特定位置創(chuàng)建重啟時的更新信息標志,并調(diào)用reboot命令重啟系
統(tǒng);
h3.在設備以SD卡為根文件系統(tǒng)重啟后,SD卡上的更新程序部分會根據(jù)SD卡上的更新信 息標志,對在正常使用時使用mount -o ro參數(shù)命令進行掛載的MTD分區(qū)進行mount -o rw參 數(shù)的掛載,并對其中的相應內(nèi)容進行更新;
h4. SD卡中的更新程序部分再次調(diào)用flash—eraseall和flashcp命令將設備系統(tǒng)恢復到 正常執(zhí)行時的YAMON和Li皿x內(nèi)核設置;
h5.更新程序再次調(diào)用reboot命令重啟完成了所有更新后的設備系統(tǒng)并進入e步驟。
本發(fā)明的有益效果是,通過以上步驟可以使得支持SD卡并基于MTD分區(qū)的基于Li皿x的嵌 入式手持移動終端設備在不需要外接RS232串行調(diào)試接口的前提下,可以通過SD卡進行簡單 、快捷、安全的軟件升級,升級過程中無需人為控制。
圖l為實施例的系統(tǒng)流程圖。
具體實施例方式
下面結(jié)合附圖及實施例,詳細描述本發(fā)明的技術(shù)方案。
本發(fā)明提供了一種通過SD卡對基于MTD分區(qū)的嵌入式Li皿x手持移動終端設備進行升級的 方法,首先在具有符合該嵌入式Li皿x設備架構(gòu)的開源GCC工具的本地操作系統(tǒng)環(huán)境中,交叉 編譯開源工具包mtd-utils,得到flash—eraseall個flashcp這兩個Linux的MTD分區(qū)更新命令 ,并存儲在可作為設備啟動根文件系統(tǒng)的SD卡上,再在SD卡上創(chuàng)建更新程序的指導信息及作 為更新源的程序模塊,最后將SD卡插入設備并通過終端觸摸屏的特定操作啟動更新程序進行 升級。
實施例
本例提供一種通過SD卡對基于MTD分區(qū)的嵌入式Li皿x手持移動終端設備進行升級的方法 ,包括應用程序或Linux內(nèi)核或根文件系統(tǒng)或YAMON啟動程序等眾多軟件模塊的自動安全更新 升級,其系統(tǒng)流程圖如圖l。
首先,對于嵌入式Li皿x手持移動終端設備而言,更新程序由設備產(chǎn)品的硬件中的更新 程序和SD卡中的更新程序兩部分組成,由在開發(fā)過程中與應用程序開發(fā)人員協(xié)商所確定的通 過觸摸屏操作的升級觸發(fā)方式來觸發(fā)和啟動,然后在一張擁有足夠空間的具有l(wèi)i皿x ext3文 件系統(tǒng)格式的SD卡上創(chuàng)建設備的Linux根文件系統(tǒng),從而使得該SD卡能夠成功引導系統(tǒng)啟動 ,然后下載flash—eraseall. c和flashcp. c開源代碼,在具有符合該嵌入式Linux設備架構(gòu)的 開源GCC工具的本地操作系統(tǒng)環(huán)境中,交叉編譯開源工具包mtd-utils,得到 flash—eraseall個flashcp這兩個Linux的MTD分區(qū)更新命令,并將其拷貝到SD卡上,為了在 使用SD卡進行軟件升級時安全可靠,避免無意操作導致更新程序被觸發(fā),需要在升級使用的 SD卡文件系統(tǒng)中預留特定的標志信息,即使該SD卡成為升級專用SD卡,同時需要在SD卡上創(chuàng) 建需要進行軟件更新的模塊列表及標志信息,然后在設備系統(tǒng)正常運行的時候插入該SD卡, 并通過觸摸屏操作的升級觸發(fā)方式啟動硬件中的更新程序,更新程序首先通過SD卡中的更新 模塊列表判斷系統(tǒng)是否需要更新YAMON并以SD卡作為根文件系統(tǒng)重新啟動,如果SD卡上的更 新模塊列表中只有主應用程序則不需要重新啟動設備,更新程序首先調(diào)用1 inux的標準 killall命令停止當前應用程序的執(zhí)行,再調(diào)用cp命令將SD卡上的新應用程序復制到合適的 位置,然后更新程序重新創(chuàng)建一個新的進程運行更新后的主應用程序即可讓設備在極短時間 內(nèi)恢復正常運行;如果SD卡上的更新模塊列表中包含Li皿x內(nèi)核或YAMON,更新程序直接使用 SD卡上的flash—eraseall和flashcp命令將SD卡上的新內(nèi)核文件或新YAMON文件覆蓋至 NOR-Flash中Linux內(nèi)核或YAMON對應的MTD分區(qū)即可,其形式如下
flash—eraseall /dev/mtdX,flashcp new—file /dev/mtdX;
因為Linux內(nèi)核在系統(tǒng)啟動后就一直常駐內(nèi)存,所以內(nèi)核更新后需要重新啟動系統(tǒng),而
YAMON作為引導加載根文件系統(tǒng)的模塊被更新后也只會在重啟系統(tǒng)后生效;如果需要修改被 以只讀模式進行掛載的MTD分區(qū)中的內(nèi)容時,則需要在SD卡中首先存放使用SD卡作為引導程 序的YAMON程序,以及mmc直接編譯進內(nèi)核的內(nèi)核程序,當硬件中的更新程序被觸發(fā)后,其首 先調(diào)用SD卡上的flash—eraseall和flashcp命令進行設備的YAMON和內(nèi)核的更新,使得系統(tǒng)重 啟時會以SD卡作為根文件系統(tǒng),并具有mmc直接編入的Li皿x內(nèi)核,隨后更新程序在SD卡上特 定位置創(chuàng)建重啟時的更新信息標志,然后調(diào)用reboot命令重啟系統(tǒng),在設備以SD卡為根文件 系統(tǒng)重啟后,SD卡上的更新程序部分會根據(jù)SD卡上的更新信息標志,對在正常使用時使用 mount -o ro參數(shù)命令進行掛載的MTD分區(qū)進行mount -o rw參數(shù)的掛載,并對其中的相應內(nèi) 容進行更新,完成后SD卡中的更新程序部分會再次調(diào)用flash—eraseall和flashcp命令將設 備系統(tǒng)恢復到正常執(zhí)行時的YAMON和Li皿x內(nèi)核設置,最后更新程序再次調(diào)用reboot命令重啟 完成了所有更新后的設備系統(tǒng)。
在更新程序運行的開始處必須首先確保在插入的SD卡中同時擁有flash—eraseall和 flashcp命令,并且整個過程中使用flash—eraseall必須和flashcp成對先后出現(xiàn),在執(zhí)行 flash—erseall擦除命令之前必須先確保SD卡上具有最新的作為更新源的程序模塊,為了防 止更新源的程序模塊錯誤和無效,需要對更新源的程序模塊的時效使用Li皿x的test命令進 行檢査,為了防止flash—eraseall和flashcp命令在設備正常的根文件系統(tǒng)也存在,避免在 執(zhí)行了f lash—eraseall命令之后無法再執(zhí)行flashcp命令而導致系統(tǒng)崩潰無法自動恢復的情 況,更新程序在使用這兩條命令時應該使用SD卡上這兩條命令的絕對路徑。
權(quán)利要求
1.通過SD卡對嵌入式Linux設備進行升級的方法,其特征在于,包括以下步驟a.在具有符合該嵌入式Linux設備架構(gòu)的開源GCC工具的本地操作系統(tǒng)環(huán)境中,交叉編譯開源工具包mtd-utils,得到flash eraseall個flashcp這兩個Linux的MTD分區(qū)更新命令,并存儲在可作為設備啟動根文件系統(tǒng)的SD卡上;b.在SD卡上創(chuàng)建根文件更新列表及作為更新源的程序模塊;c.將SD卡插入設備并通過終端觸摸屏的特定操作啟動更新程序,特定操作是指在開發(fā)過程中確定的通過觸摸屏操作的升級觸發(fā)方式;d.根據(jù)更新程序進行升級;e.升級完成。
2.根據(jù)權(quán)利要求l所述通過SD卡對嵌入式Li皿x設備進行升級的方法 ,其特征在于,步驟c所述更新程序包括設備產(chǎn)品硬件中的更新程序和SD卡的更新程序。
3.根據(jù)權(quán)利要求l所述通過SD卡對嵌入式Li皿x設備進行升級的方法 ,其特征在于,步驟b所述在SD卡上創(chuàng)建更新程序的指導信息及作為更新源的程序模塊包括 創(chuàng)建應用程序或Linux內(nèi)核或根文件系統(tǒng)或YAMON啟動程序的更新指導信息及其作為更新源的 程序模塊。
4.根據(jù)權(quán)利要求l、 2或3所述通過SD卡對嵌入式Li皿x設備進行升級 的方法,其特征在于,步驟d包括以下步驟dl.更新程序根據(jù)SD卡上的更新列表判斷更新模式,若僅需要更新應用程序則進入fl步 驟,若需要更新內(nèi)核或YAMON則進入gl步驟,若需要修改以只讀模式掛載的MTD分區(qū)內(nèi)容則進 入hl步驟;fl.更新程序調(diào)用1 inux的標準ki 1 lall命令停止當前應用程序的執(zhí)行;f2.更新程序調(diào)用cp命令將SD卡上的新應用程序復制到合適的位置;f3.更新程序重新創(chuàng)建一個新的進程運行更新后的主應用程序,并進入e步驟;gl.更新程序使用SD卡上的flash—eraseall和flashcp命令將SD卡上的新內(nèi)核文件或新 YAM0N文件覆蓋至N0R-Flash中Linux內(nèi)核或YAMON文件對應的MTD分區(qū); g2.重啟系統(tǒng)并進入e步驟;hl.更新程序調(diào)用SD卡上的flash—eraseall和flashcp命令進行設備的YAMON和內(nèi)核的更新;h2.更新程序在SD卡上特定位置創(chuàng)建重啟時的更新信息標志,并調(diào)用reboot命令重啟系統(tǒng);h3.在設備以SD卡為根文件系統(tǒng)重啟后,SD卡上的更新程序部分會根據(jù)SD卡上的更新信 息標志,對在正常使用時使用mount -o ro參數(shù)命令進行掛載的MTD分區(qū)進行mount -o rw參 數(shù)的掛載,并對其中的相應內(nèi)容進行更新;h4. SD卡中的更新程序部分再次調(diào)用flash—eraseall和flashcp命令將設備系統(tǒng)恢復到 正常執(zhí)行時的YAMON和Limx內(nèi)核設置;h5.更新程序再次調(diào)用reboot命令重啟完成了所有更新后的設備系統(tǒng)并進入e步驟。
全文摘要
本發(fā)明涉及嵌入式設備技術(shù),解決了嵌入式Linux手持移動終端設備軟件升級需要外接一個RS232串行調(diào)試接口的缺點,提供了一種通過SD卡對嵌入式Linux設備進行升級的方法,其技術(shù)方案概括為通過SD卡對嵌入式Linux設備進行升級的方法,其特征在于,包括以下步驟a.交叉編譯得到更新命令,并存儲在可作為設備啟動根文件系統(tǒng)的SD卡上;b.在SD卡上創(chuàng)建根文件更新列表及更新源程序模塊;c.將SD卡插入設備并通過特定操作啟動更新程序;d.進行升級;e.升級完成。其有益效果是,可通過SD卡對嵌入式Linux設備進行簡單、快捷、安全的軟件升級,適用于基于MTD分區(qū)的嵌入式Linux手持移動終端設備。
文檔編號G06F9/445GK101344854SQ20081030414
公開日2009年1月14日 申請日期2008年8月22日 優(yōu)先權(quán)日2008年8月22日
發(fā)明者曉 周, 程遠兵 申請人:四川長虹電器股份有限公司