利用SD卡實現(xiàn)嵌入式Linux系統(tǒng)的自動升級
(2)判斷SD卡中是否有內(nèi)核映像文件
如果存在,則將其燒寫到Flash相應的分區(qū)當中。實現(xiàn)這個功能需要使用到Uboot中的run_command函數(shù),由于kernel的映像文件一般不會超過5 MB,所以在燒寫kernel的時候不需要檢查映像文件的大小。檢查內(nèi)核映像文件是否存在也是通過執(zhí)行命令的方式,如果存在,那么Env環(huán)境變量fileexist的值就是YES,并且此時的內(nèi)核映像已經(jīng)存在于SDRAM當中,可以直接通過命令燒寫到Flash相應的分區(qū)當中。具體的代碼如下:
(3)判斷SD卡中是否有文件系統(tǒng)映像文件
如果存在,則寫入到相應的Flash分區(qū)當中。本實驗設(shè)備上使用的文件系統(tǒng)是Yaffs2,通過Uboot命令燒寫Yaffs2文件系統(tǒng)的時候,必須要知道它的實際大小。由于升級很可能導致文件系統(tǒng)大小的變化,所以這里必須將讀取到SDRAM當中的文件大小記錄下來,這個工作在Uboot中已經(jīng)完成,我們只需要通過getenv(filesize)就可以獲得載入SDRAM當中的文件大小,其他的步驟和燒寫內(nèi)核映像是一樣的。具體代碼如下:
經(jīng)過上面3個步驟修改的Uboot程序可支持SD卡自動升級的功能,需要注意這段代碼應該放在Uboot自動加載系統(tǒng)之前,推薦將這些代碼放在main_loop函數(shù)中。
結(jié)語
本文通過定制擴展Uboot實現(xiàn)了用SD卡方式進行嵌入式設(shè)備操作系統(tǒng)的自動升級,這種方式不但克服了傳統(tǒng)升級方式的局限性,而且具有一定商業(yè)價值。目前,該方法經(jīng)過調(diào)試,系統(tǒng)運行正常。顯然,要通過SD卡實現(xiàn)系統(tǒng)升級,需要嵌入式設(shè)備具有SD卡接口,因此,它并不適合所有的嵌入式系統(tǒng),但是這種實現(xiàn)機制可供借鑒。本文引用地址:http://www.ex-cimer.com/article/148225.htm linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
linux相關(guān)文章:linux教程
評論