新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于GPRS的51單片機(jī)固件升級(jí)系統(tǒng)設(shè)計(jì)

基于GPRS的51單片機(jī)固件升級(jí)系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2011-11-22 來(lái)源:網(wǎng)絡(luò) 收藏

2.1 升級(jí)系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件由兩部分組成:主程序和升級(jí)程序,分別對(duì)應(yīng)于Main工程和Update工程。Main工程負(fù)責(zé)與遠(yuǎn)端服務(wù)器進(jìn)行通信,接收服務(wù)器發(fā)送的指令并進(jìn)行相應(yīng)操作;而Update工程編譯、鏈接時(shí),在其編譯器鏈接選項(xiàng)中設(shè)置CODE(OxE000,PR?MAIN?UPDATE(0xE000)),可將Upd-ate工程編譯、鏈接后生成的hex文件燒寫(xiě)到單片機(jī)內(nèi)部Flash以0xE000作為起始地址處,同時(shí)默認(rèn)地將Main工程編譯、鏈接生成的二進(jìn)制文件燒寫(xiě)到內(nèi)部Flash的起始地址處。單片機(jī)在執(zhí)行主程序過(guò)程中,檢測(cè)到升級(jí)標(biāo)志置1后,單片機(jī)跳轉(zhuǎn)到升級(jí)程序地址處執(zhí)行固件升級(jí)程序;升級(jí)完畢后,復(fù)位單片機(jī),程序又從內(nèi)部Flash的零地址開(kāi)始執(zhí)行更新的固件程序。圖4為主程序流程,圖5為相應(yīng)的固件升級(jí)程序流程。主程序在運(yùn)行過(guò)程中受遠(yuǎn)程服務(wù)器的實(shí)時(shí)控制。當(dāng)固件程序需要更新時(shí),在服務(wù)器端將準(zhǔn)備更新的固件編譯、鏈接后生成的hex或bin文件放入某一固定目錄內(nèi),啟用FTP服務(wù)器(如FtpMan),通過(guò)TCP/IP協(xié)議發(fā)送遠(yuǎn)程升級(jí)指令給測(cè)試終端;終端收到升級(jí)指令后啟動(dòng)相應(yīng)的FTP接收功能,將遠(yuǎn)端文件分解成多個(gè)數(shù)據(jù)包并逐個(gè)存儲(chǔ)在外部Flash中;存儲(chǔ)完畢后,主程序會(huì)對(duì)該接收文件進(jìn)行CRC校驗(yàn),若校驗(yàn)無(wú)誤,則通過(guò)函數(shù)指針跳轉(zhuǎn)到升級(jí)程序功能區(qū),啟動(dòng)升級(jí)程序,將二進(jìn)制文件從外部Flash中轉(zhuǎn)移到內(nèi)部Flash對(duì)應(yīng)的地址空間中去。單片機(jī)復(fù)位重啟后,就可以從內(nèi)部Flash的起始地址處執(zhí)行更新完畢的程序。


2.2 函數(shù)指針應(yīng)用
當(dāng)主程序檢測(cè)到升級(jí)標(biāo)志后,主程序跳轉(zhuǎn)到升級(jí)程序地址處執(zhí)行升級(jí)固件程序,此處使用了函數(shù)指針的功能。

結(jié)語(yǔ)
本文設(shè)計(jì)了基于網(wǎng)絡(luò)傳輸?shù)慕K端,給出了合理的芯片選型,以及獨(dú)立的固件升級(jí)程序。該升級(jí)系統(tǒng)已應(yīng)用到實(shí)際產(chǎn)品應(yīng)用中,并取得了很好的效果。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉