利用SD卡實(shí)現嵌入式Linux系統的自動(dòng)升級
摘要:提出了一種擴展Uboot實(shí)現嵌入式設備操作系統維護與升級的方法。該方法將待升級的內核和文件系統映像放入SD卡中,當系統重啟時(shí),擴展后的Uboot會(huì )自動(dòng)檢測并讀取SD卡中的映像文件,再燒寫(xiě)到嵌入式設備實(shí)現自動(dòng)升級。該方法較傳統的通過(guò)JTAG口、串口或者網(wǎng)口連接到主機,在主機上通過(guò)手動(dòng)輸入控制命令完成內核或者文件系統的升級方式更為便捷高效。
關(guān)鍵詞:SD卡;Uboot;Linux;自動(dòng)升級
引言
隨著(zhù)現代工業(yè)社會(huì )逐步向智能化社會(huì )的過(guò)度,嵌入式在現代經(jīng)濟生活中扮演著(zhù)至關(guān)重要的角色。32位的高性能、低成本、低功耗的嵌入式RISC(Reduced InstructionSet Computer)微處理器——ARM(Advanced RISC Machines)已經(jīng)成為應用最廣泛的嵌入式微處理器。
目前,基于A(yíng)RM的嵌入式系統在各個(gè)領(lǐng)域都有著(zhù)廣泛的應用,嵌入式系統的維護與升級也變的日益重要。由于新技術(shù)的不斷涌現和對系統功能、性能等要求的不斷提高,開(kāi)發(fā)者必須能夠針對系統進(jìn)行升級和維護,以延長(cháng)系統的使用周期,改善系統性能,增強系統適應性。
傳統的嵌入式系統升級,首先通過(guò)JTAG接口將Bootloader燒寫(xiě)到目標板的Flash中,然后在Bootloader中,將內核映像文件和文件系統映像文件通過(guò)串口或者網(wǎng)絡(luò )下載并燒寫(xiě)到Flash。若需對內核或文件系統升級,則要按照上述方法重新燒寫(xiě)新的映像文件,直接覆蓋原來(lái)的映像文件。這類(lèi)方法,一方面必須將嵌入式設備和主機通過(guò)串口線(xiàn)或者網(wǎng)線(xiàn)相連接;另一方面需要人工手動(dòng)輸入控制命令,而且通過(guò)串口或網(wǎng)絡(luò )下載映像文件速度非常慢。
本文針對嵌入式Linux操作系統提出了一種新的升級機制,即通過(guò)將映像文件拷貝到SD卡中,由擴展后的Uboot實(shí)現系統自動(dòng)升級,這個(gè)方法可以有效克服傳統升級方法的局限,簡(jiǎn)化系統升級步驟,提高升級速度。
1 工作原理
一個(gè)嵌入式Linux系統從軟件的角度看通??梢苑譃?個(gè)層次:Bootloader、Linux內核、文件系統和用戶(hù)應用程序。這4個(gè)層次中,Boot loader一般是按照嵌入式系統的硬件配置定制的,是嵌入式系統加電以后運行的第一段軟件代碼。要對Bootloader升級只能通過(guò)人工手動(dòng)完成,不過(guò)一般嵌入式系統在硬件平臺沒(méi)有變化的情況下是不需要對Bootloader進(jìn)行升級的。用戶(hù)應用程序只是運行在Linux操作系統上的一個(gè)程序,其升級方法簡(jiǎn)單,一般可以通過(guò)網(wǎng)絡(luò )直接進(jìn)行升級。Linux內核和文件系統的升級不像Bootloader那樣基本不需要升級,也不像應用程序那樣很容易完成升級。目前,對于Linux內核和文件系統的升級一般都是在Bootloader中實(shí)現的。
通過(guò)對Uboot的功能進(jìn)行擴充,加入了系統升級的功能。例如,用戶(hù)需要對嵌入式設備上的Linux內核或文件系統進(jìn)行升級,只需要將新的Linux內核或文件系統映像,命名為指定的名稱(chēng)拷貝到SD卡中。如果此時(shí)系統處于非運行狀態(tài),只需要重新啟動(dòng)嵌入式設備即可進(jìn)行升級
過(guò)程;如果系統處于運行狀態(tài),Linux系統會(huì )自動(dòng)檢測SD卡是否存在相應的升級文件,存在則自動(dòng)reboot,這樣也完成了系統的升級。
不論系統是否處于運行狀態(tài),真正的系統升級過(guò)程都是在Uboot中完成的。設備重啟時(shí),首先運行Uboot,在這過(guò)程中Uboot完成系統初始化之后,在引導內核之前先檢查SD卡中是否有Linux內核或文件系統映像文件。若有,則讀取映像文件到SDRAM當中,然后通過(guò)Uboot中的Flas h命令將內核或者文件系統映像燒寫(xiě)到相應的分區當中來(lái)完成升級;若無(wú),則直接啟動(dòng)系統,具體流程如圖1所示。
linux相關(guān)文章:linux教程
評論