基于ARM的嵌入式Bootloader實現(xiàn)自動升級
Bootloader在系統(tǒng)初次安裝或傳統(tǒng)升級時燒寫內(nèi)核和文件系統(tǒng)時用Sigma Designs 公司提供的tera term軟件燒寫,步驟為:
1) cd ../armutils_2.5.80.0/bin
2) uuencode romfs-config-envision8624L-romfs-rom.bin.gz x > romfs-config-envision8624L-romfs-rom.bin.gz.uuencode //生成uuencode編碼的文件(為ascii碼,用于在windows環(huán)境下燒入flash);
3) 運行tera term出現(xiàn)boot >
4)運行config serial fast,然后選菜單setupàserial port,設(shè)置baud rate為115200(串口波特率);
5)在Boot>download serial romfs gz ,準備接受文件;
6)選菜單file-->send file,選中romfs-config-envision8620L-romfs-rom.bin.gz.uuencode,確定后,你會看到tera term下載文件;
7). Boot> flash romfs,把文件燒到flash中;
在本實驗中,升級時將生成的內(nèi)核和文件系統(tǒng)映像文件直接以二進制形式燒進去,不需要用uuencode轉(zhuǎn),即:把romfs-dtv-EM8624L-romfs.bin放在CF卡或移動硬盤相應(yīng)的文件中進行升級即可。實現(xiàn)的偽代碼為:
#define FLASH_SIZE 0X8000000
#define LOADER_FLASHBASE 0X46030000 //romfs存放的起始物理地址
if (fp = fopen(UPDATEFILE , ”rb”)) == NULL)return;www.51kaifa.com
else
{
Flash_erase_region(LOADER_FLASHBASE , romfs_len); //刪除0x46030000開始的romfs_len長度的flash區(qū)域;
Flash_write_data(LOADER_FLASHBASE ,UPDATEFILE, romfs_len); //把要升級的romfs燒寫0x46030000開始的romfs_len長度的flash區(qū)域中;
}
remove(UPDATEFILE); //升級完后刪除CF卡或移動硬盤的升級文件,以免下次啟動又要開始升級;
system("reboot"); //重啟新系統(tǒng)
上述函數(shù)調(diào)用放在Bootloader的stage1中執(zhí)行。
4 結(jié)論
本文分析了嵌入式系統(tǒng)的Bootloader的實現(xiàn)過程,并提出了通過CF卡或移動硬盤實現(xiàn)嵌入式系統(tǒng)的自動升級,一方面簡化了升級過程,不需要通過串口將目標板與主機相連來實現(xiàn)系統(tǒng)升級,而只需插入CF卡或移動硬盤就可以完成自動升級,尤其對支持網(wǎng)絡(luò)功能的嵌入式設(shè)備來說,只需遠程地把要升級的文件通過網(wǎng)絡(luò)拷貝到CF卡或硬盤中指定的目錄下即可,不需要帶著主機到現(xiàn)場去升級;另一方面,升級速度也大大提高,因為系統(tǒng)對CF卡或移動硬盤的存取速度遠遠高于串口。
本文作者創(chuàng)新點是:通過CF存儲卡或移動硬盤在嵌入式系統(tǒng)的Bootloader中實現(xiàn)自動升級。經(jīng)過調(diào)試,系統(tǒng)運行正常,達到自動升級的目的,具有一定的商業(yè)價值和社會價值,同時,對同類的嵌入式系統(tǒng)的產(chǎn)品開發(fā)具有一定的借鑒意義。
參考文獻:
[1]王建,許毅平,周曼麗. ARM7嵌入式系統(tǒng)中Bootloader分析與設(shè)計[J]. 微計算機信息,2006,5-2
[2] 詹榮開 . 嵌入式系統(tǒng)Bootloader技術(shù)內(nèi)幕
http://www.ibm.com/developerworks/cn/linux/l-btloader/index.html
[3] 張治斌,喬應(yīng)旭 . SST89C54與CF卡的接口設(shè)計與實現(xiàn)
http://www.chinaecnet.com/xsj06/xsj064331.aspwww.51kaifa.com
[4]Raj Kamal . Embedded Systems Architecture , Programming and Design 清華大學出版社
[5] 單承剛,戴學豐,劉樹東,崔登志 .基于ARM的嵌入式BootLoader設(shè)計與啟動過程 . 微計算機信息2006,32期
[6]周立功等 . ARM微控制器基礎(chǔ)與實踐[M] . 北京:北京航空航天大學出版社 . 2003
評論