新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用SD卡實(shí)現(xiàn)嵌入式Linux系統(tǒng)的自動(dòng)升級(jí)

利用SD卡實(shí)現(xiàn)嵌入式Linux系統(tǒng)的自動(dòng)升級(jí)

作者: 時(shí)間:2012-12-06 來源:網(wǎng)絡(luò) 收藏

摘要:提出了一種擴(kuò)展實(shí)現(xiàn)嵌入式設(shè)備操作系統(tǒng)維護(hù)與升級(jí)的方法。該方法將待升級(jí)的內(nèi)核和文件系統(tǒng)映像放入中,當(dāng)系統(tǒng)重啟時(shí),擴(kuò)展后的會(huì)自動(dòng)檢測(cè)并讀取中的映像文件,再燒寫到嵌入式設(shè)備實(shí)現(xiàn)。該方法較傳統(tǒng)的通過JTAG口、串口或者網(wǎng)口連接到主機(jī),在主機(jī)上通過手動(dòng)輸入控制命令完成內(nèi)核或者文件系統(tǒng)的升級(jí)方式更為便捷高效。
關(guān)鍵詞:;;

引言
隨著現(xiàn)代工業(yè)社會(huì)逐步向智能化社會(huì)的過度,嵌入式在現(xiàn)代經(jīng)濟(jì)生活中扮演著至關(guān)重要的角色。32位的高性能、低成本、低功耗的嵌入式RISC(Reduced InstructionSet Computer)微處理器——ARM(Advanced RISC Machines)已經(jīng)成為應(yīng)用最廣泛的嵌入式微處理器。
目前,基于ARM的嵌入式系統(tǒng)在各個(gè)領(lǐng)域都有著廣泛的應(yīng)用,嵌入式系統(tǒng)的維護(hù)與升級(jí)也變的日益重要。由于新技術(shù)的不斷涌現(xiàn)和對(duì)系統(tǒng)功能、性能等要求的不斷提高,開發(fā)者必須能夠針對(duì)系統(tǒng)進(jìn)行升級(jí)和維護(hù),以延長(zhǎng)系統(tǒng)的使用周期,改善系統(tǒng)性能,增強(qiáng)系統(tǒng)適應(yīng)性。
傳統(tǒng)的嵌入式系統(tǒng)升級(jí),首先通過JTAG接口將Bootloader燒寫到目標(biāo)板的Flash中,然后在Bootloader中,將內(nèi)核映像文件和文件系統(tǒng)映像文件通過串口或者網(wǎng)絡(luò)下載并燒寫到Flash。若需對(duì)內(nèi)核或文件系統(tǒng)升級(jí),則要按照上述方法重新燒寫新的映像文件,直接覆蓋原來的映像文件。這類方法,一方面必須將嵌入式設(shè)備和主機(jī)通過串口線或者網(wǎng)線相連接;另一方面需要人工手動(dòng)輸入控制命令,而且通過串口或網(wǎng)絡(luò)下載映像文件速度非常慢。
本文針對(duì)嵌入式操作系統(tǒng)提出了一種新的升級(jí)機(jī)制,即通過將映像文件拷貝到SD卡中,由擴(kuò)展后的Uboot實(shí)現(xiàn)系統(tǒng),這個(gè)方法可以有效克服傳統(tǒng)升級(jí)方法的局限,簡(jiǎn)化系統(tǒng)升級(jí)步驟,提高升級(jí)速度。

1 工作原理
一個(gè)嵌入式系統(tǒng)從軟件的角度看通??梢苑譃?個(gè)層次:Bootloader、Linux內(nèi)核、文件系統(tǒng)和用戶應(yīng)用程序。這4個(gè)層次中,Boot loader一般是按照嵌入式系統(tǒng)的硬件配置定制的,是嵌入式系統(tǒng)加電以后運(yùn)行的第一段軟件代碼。要對(duì)Bootloader升級(jí)只能通過人工手動(dòng)完成,不過一般嵌入式系統(tǒng)在硬件平臺(tái)沒有變化的情況下是不需要對(duì)Bootloader進(jìn)行升級(jí)的。用戶應(yīng)用程序只是運(yùn)行在Linux操作系統(tǒng)上的一個(gè)程序,其升級(jí)方法簡(jiǎn)單,一般可以通過網(wǎng)絡(luò)直接進(jìn)行升級(jí)。Linux內(nèi)核和文件系統(tǒng)的升級(jí)不像Bootloader那樣基本不需要升級(jí),也不像應(yīng)用程序那樣很容易完成升級(jí)。目前,對(duì)于Linux內(nèi)核和文件系統(tǒng)的升級(jí)一般都是在Bootloader中實(shí)現(xiàn)的。
通過對(duì)Uboot的功能進(jìn)行擴(kuò)充,加入了系統(tǒng)升級(jí)的功能。例如,用戶需要對(duì)嵌入式設(shè)備上的Linux內(nèi)核或文件系統(tǒng)進(jìn)行升級(jí),只需要將新的Linux內(nèi)核或文件系統(tǒng)映像,命名為指定的名稱拷貝到SD卡中。如果此時(shí)系統(tǒng)處于非運(yùn)行狀態(tài),只需要重新啟動(dòng)嵌入式設(shè)備即可進(jìn)行升級(jí)
過程;如果系統(tǒng)處于運(yùn)行狀態(tài),Linux系統(tǒng)會(huì)自動(dòng)檢測(cè)SD卡是否存在相應(yīng)的升級(jí)文件,存在則自動(dòng)reboot,這樣也完成了系統(tǒng)的升級(jí)。
不論系統(tǒng)是否處于運(yùn)行狀態(tài),真正的系統(tǒng)升級(jí)過程都是在Uboot中完成的。設(shè)備重啟時(shí),首先運(yùn)行Uboot,在這過程中Uboot完成系統(tǒng)初始化之后,在引導(dǎo)內(nèi)核之前先檢查SD卡中是否有Linux內(nèi)核或文件系統(tǒng)映像文件。若有,則讀取映像文件到SDRAM當(dāng)中,然后通過Uboot中的Flas h命令將內(nèi)核或者文件系統(tǒng)映像燒寫到相應(yīng)的分區(qū)當(dāng)中來完成升級(jí);若無,則直接啟動(dòng)系統(tǒng),具體流程如圖1所示。

本文引用地址:http://www.butianyuan.cn/article/148225.htm

a.JPG


linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁 1 2 3 4 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉