午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法

文檔序號:6432858閱讀:179來源:國知局
專利名稱:在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法,尤其涉及一種利用Linux的信號機(jī)制來控制重置系統(tǒng)從而執(zhí)行閃存文件系統(tǒng)的升級的方法。
背景技術(shù)
文件系統(tǒng)決定操作系統(tǒng)的數(shù)據(jù)以及用戶數(shù)據(jù)在存儲設(shè)備上的組織形式。在嵌入式系統(tǒng)中,其文件系統(tǒng)是嵌入式操作系統(tǒng)用來管理文件操作的功能模塊,提供一系列功能強(qiáng)大的數(shù)據(jù)輸入、輸出以及管理的接口。標(biāo)準(zhǔn)化的接口保證程序具有層次性并且增加程序的可移植性。嵌入式文件系統(tǒng)一般采用基于NOR技術(shù)的閃存。閃存除了存儲數(shù)據(jù),還可以存儲直接執(zhí)行的代碼。但是,與一般的塊設(shè)備不同,嵌入式系統(tǒng)中使用的閃存在運(yùn)行中不能夠?qū)ν粌?nèi)存地址寫入兩次,而必須先進(jìn)行耗時(shí)的擦除操作,并且一次擦除一個(gè)扇區(qū),而扇區(qū)一般為64K字節(jié)。目前,許多嵌入式系統(tǒng)采用基于Linux的操作系統(tǒng)。圖1示出嵌入式Linux系統(tǒng)的分區(qū)。參照圖2,嵌入式Linux系統(tǒng)分為引導(dǎo)加載程序(bootloader)分區(qū)110、用于存儲 bootloader的環(huán)境變量的分區(qū)120、Linux內(nèi)核分區(qū)130以及文件系統(tǒng)分區(qū)140。閃存文件系統(tǒng)的升級一般是在啟動引導(dǎo)程序(boot)下直接進(jìn)行升級版本的燒寫。首先,進(jìn)入引導(dǎo)加載程序,將新版本的鏡像文件從計(jì)算機(jī)下載到嵌入式系統(tǒng)開發(fā)板內(nèi)存。然后,擦除相應(yīng)的閃存空間,再將新版本的鏡像文件從開發(fā)板內(nèi)存復(fù)制到閃存中的指定位置。使用這種直接升級閃存的方法時(shí),存在這樣的問題由于原文件系統(tǒng)資源沒有得到釋放,而一些進(jìn)程往往還在運(yùn)行,并且升級時(shí)用到的命令也都存儲在文件系統(tǒng)中,所以如果此時(shí)直接使用升級鏡像文件覆蓋原文件系統(tǒng)的相應(yīng)文件,容易發(fā)生異常情況。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法,通過使用Linux系統(tǒng)的信號機(jī)制對控制重置嵌入式系統(tǒng)從而執(zhí)行閃存文件系統(tǒng)的升級,從而避免在升級過程中發(fā)生異常,并且減少系統(tǒng)重啟的次數(shù)。為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法。所述方法包括將升級用鏡像文件下載到內(nèi)存目錄中,并且將升級所需的應(yīng)用工具復(fù)制到所述內(nèi)存目錄下;終止全部與升級無關(guān)的應(yīng)用進(jìn)程;卸載文件系統(tǒng),并且將所述內(nèi)存目錄掛載到嵌入式系統(tǒng)的根目錄下;在被掛載的根目錄下的指定目錄中創(chuàng)建初始化文件, 并且寫入用于執(zhí)行閃存文件系統(tǒng)升級操作的指令;和發(fā)送用于重新啟動初始化程序的系統(tǒng)重置信號。其中,根據(jù)發(fā)送的系統(tǒng)重置信號,嵌入式系統(tǒng)重新運(yùn)行初始化程序,所述初始化程序根據(jù)創(chuàng)建的初始化文件中的指令,執(zhí)行閃存文件系統(tǒng)升級操作。優(yōu)選地,所述嵌入式系統(tǒng)是嵌入式Linux系統(tǒng),所述初始化程序是Linux中的init 程序,所述初始化文件是Linux的inittab文件,并且使用“kill HUPl”命令來發(fā)送系統(tǒng)重置信號。所述內(nèi)存目錄可以是/tmp目錄,并且所述指定目錄可以是根目錄下的etc目錄。優(yōu)選地,在執(zhí)行閃存文件系統(tǒng)升級操作后,提示用戶重啟系統(tǒng)。


通過下面結(jié)合附圖進(jìn)行的描述,本發(fā)明的上述和其他特點(diǎn)將會變得更加清楚,其中圖1是示出一般Linux嵌入式系統(tǒng)的分區(qū)的示意圖;和圖2是示出根據(jù)本發(fā)明的在嵌入式系統(tǒng)中進(jìn)行閃存升級的方法的處理的流程圖。
具體實(shí)施例方式以下,參照附圖來詳細(xì)說明本發(fā)明的實(shí)施例。本發(fā)明的在嵌入式Linux系統(tǒng)中對閃存進(jìn)行升級的方法先將升級鏡像文件和升級用的應(yīng)用工具拷貝到內(nèi)存目錄下,將內(nèi)存目錄掛載(mount)到系統(tǒng)的根目錄下,然后利用Linux的信號機(jī)制來控制閃存升級處理。在Linux系統(tǒng)中,當(dāng)Linux的內(nèi)核初始化完畢后,init程序開始運(yùn)行,而inittab 文件是用于配置init程序的文件。init程序在運(yùn)行起來后,一直運(yùn)行,不允許其終止。但是,Linux的系統(tǒng)重置信號能夠終止當(dāng)前運(yùn)行的init程序,并重新啟動新的init程序,本發(fā)明正是利用了這種信號機(jī)制,在對inittab文件進(jìn)行用于閃存升級的修改后,通過發(fā)送系統(tǒng)重置信號來觸發(fā)閃存的升級操作。圖2是示出根據(jù)本發(fā)明的在嵌入式系統(tǒng)中進(jìn)行閃存升級的方法的處理的流程圖。參照圖2,在操作S210,將升級鏡像文件下載到內(nèi)存目錄中,并且將執(zhí)行升級所需的應(yīng)用工具復(fù)制到內(nèi)存目錄下。通常,嵌入式Linux系統(tǒng)啟動后,文件系統(tǒng)被掛載到根目錄下。內(nèi)存通常被掛載到/tmp目錄下,嵌入式Linux系統(tǒng)可先進(jìn)入/tmp,嵌入式Linux系統(tǒng)使用tftp將內(nèi)核鏡像文件和文件系統(tǒng)鏡像文件下載到/tmp目錄中。復(fù)制到內(nèi)存目錄下的應(yīng)用工具包括執(zhí)行閃存升級需要使用的操作指令、命令以及腳本等。在操作S220,嵌入式Linux系統(tǒng)終止全部與升級無關(guān)的應(yīng)用進(jìn)程。這里所說的與升級無關(guān)的應(yīng)用進(jìn)程主要是指,例如用戶正在運(yùn)行的一些應(yīng)用進(jìn)程,這些進(jìn)程與執(zhí)行閃存升級無關(guān),一般不包括內(nèi)核運(yùn)行的系統(tǒng)進(jìn)程。這樣,可以保證在實(shí)際執(zhí)行升級的過程中,在原文件系統(tǒng)中只有與升級相關(guān)的應(yīng)用進(jìn)程在運(yùn)行。在操作S230,嵌入式Linux系統(tǒng)卸載文件系統(tǒng),并且將內(nèi)存目錄掛載到根目錄。這里,嵌入式Linux系統(tǒng)可以使用umoimt命令來卸載現(xiàn)有的文件系統(tǒng),釋放文件系統(tǒng)的資源; 然后,將所述內(nèi)存目錄掛載到根目錄作為臨時(shí)的根目錄。在操作S240,嵌入式Linux系統(tǒng)重建inittab文件,并且在重建的inittab文件中寫入用于執(zhí)行升級操作的指令。例如,可以使用以下指令echo‘ sysinit/bin/firmware-upgrade-stage2‘ > etc/inittab假設(shè)firmware-upgrade-stagd是用于執(zhí)行升級文件的閃存燒寫操作的文件命令或腳本。上述指令在新掛載的根目錄下創(chuàng)建了一個(gè)inittab文件,并且寫入firmware-upgrade_stage2。根據(jù)本發(fā)明的示例性實(shí)施例,在inittab文件中,還寫入其他用于系統(tǒng)啟動的指令或命令,如“restart:/sbin/init”等。在操作S250,發(fā)送系統(tǒng)重置信號給正在運(yùn)行的init進(jìn)程。例如,使用以下指令exec/usr/sbin/chroot./bin/sh-c' /bin/kiIl-HUP 1上述命令導(dǎo)致正在運(yùn)行的init程序(init的進(jìn)程為1)終止,并且重新啟動新的 init程序。重新運(yùn)行init程序使得整個(gè)系統(tǒng)與在操作S230掛載的根目錄關(guān)聯(lián),從而確保閃存升級燒寫中從新掛載的根目錄(即原內(nèi)存目錄)調(diào)取命令,而不是從原根目錄調(diào)取。在發(fā)送系統(tǒng)重置的信號后,新的init程序在運(yùn)行中,執(zhí)行閃存升級燒寫的命令或腳本(操作S260),如前述示例中的firmware-upgrade-stage2,將在操作S210下載至原內(nèi)存目錄下的內(nèi)核鏡像文件和文件系統(tǒng)鏡像文件分別燒寫到Linux內(nèi)核分區(qū)230和文件系統(tǒng)分區(qū)240中。在完成閃存升級燒寫后,嵌入式Linux系統(tǒng)可以提示用戶重啟系統(tǒng)(操作S270)。可以看出,由在操作S250發(fā)送的系統(tǒng)重置信號觸發(fā)重新啟動init程序,進(jìn)而在 init程序運(yùn)行中根據(jù)寫入到inittab文件的指令執(zhí)行操作S270。根據(jù)本發(fā)明的在嵌入式系統(tǒng)中對閃存進(jìn)行升級的方法,通過先將升級鏡像文件下載到內(nèi)存目錄,將升級所需的應(yīng)用工具也復(fù)制到內(nèi)存目錄,然后將內(nèi)存目錄臨時(shí)掛載到根目錄,在inittab文件中寫入執(zhí)行升級操作的指令,再發(fā)送重置系統(tǒng)的信號,從而在重新運(yùn)行init程序的過程中,執(zhí)行閃存的燒寫,然后一次重啟系統(tǒng)。因此,避免在執(zhí)行升級時(shí)發(fā)生異常,并且能夠較一般的升級方法少重啟系統(tǒng)一次。本發(fā)明不限于上述實(shí)施例,在不脫離本發(fā)明范圍的情況下,可以進(jìn)行各種變形和修改。
權(quán)利要求
1.一種在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法,所述方法包括將升級用鏡像文件下載到內(nèi)存目錄中,并且將升級所需的應(yīng)用工具復(fù)制到所述內(nèi)存目錄下;終止全部與升級無關(guān)的應(yīng)用進(jìn)程;卸載文件系統(tǒng),并且將所述內(nèi)存目錄掛載到嵌入式系統(tǒng)的根目錄下;在被掛載的根目錄下的指定目錄中創(chuàng)建初始化文件,并且寫入用于執(zhí)行閃存文件系統(tǒng)升級操作的指令;和發(fā)送用于重新啟動初始化程序的系統(tǒng)重置信號,其中,根據(jù)發(fā)送的系統(tǒng)重置信號,嵌入式系統(tǒng)重新運(yùn)行初始化程序,所述初始化程序根據(jù)創(chuàng)建的初始化文件中的指令,執(zhí)行閃存文件系統(tǒng)升級操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述嵌入式系統(tǒng)是嵌入式Linux系統(tǒng),所述初始化程序是Linux中的init程序,所述初始化文件是Linux的inittab文件,并且使用 "kill HUP 1”命令來發(fā)送系統(tǒng)重置信號。
3.如權(quán)利要求2所述的方法,其特征在于,所述內(nèi)存目錄是/tmp目錄,并且所述指定目錄是根目錄下的etc目錄。
4.如權(quán)利要求1所述的方法,其特征在于,在執(zhí)行閃存文件系統(tǒng)升級操作后,提示用戶重啟系統(tǒng)。
全文摘要
本發(fā)明提供了一種在嵌入式系統(tǒng)中對閃存文件系統(tǒng)進(jìn)行升級的方法,所述方法包括將升級用鏡像文件下載到內(nèi)存目錄中,并且將升級所需的應(yīng)用工具復(fù)制到所述內(nèi)存目錄下;終止全部與升級無關(guān)的應(yīng)用進(jìn)程;卸載文件系統(tǒng),并且將所述內(nèi)存目錄掛載到嵌入式系統(tǒng)的根目錄下;在被掛載的根目錄下的指定目錄中創(chuàng)建初始化文件,并且寫入用于執(zhí)行閃存文件系統(tǒng)升級操作的指令;和發(fā)送用于重新啟動初始化程序的系統(tǒng)重置信號。其中,根據(jù)發(fā)送的系統(tǒng)重置信號,嵌入式系統(tǒng)重新運(yùn)行初始化程序,所述初始化程序根據(jù)創(chuàng)建的初始化文件中的指令,執(zhí)行閃存文件系統(tǒng)升級操作。
文檔編號G06F9/445GK102298531SQ201110266259
公開日2011年12月28日 申請日期2011年9月8日 優(yōu)先權(quán)日2011年9月8日
發(fā)明者李際勇, 范成龍, 黃曉輝 申請人:北京傲天動聯(lián)技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1