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