張宗元 周永濤




摘? 要:本文所設(shè)計(jì)與實(shí)現(xiàn)的IAP(In Application Programming)是圍繞ATMEL公司設(shè)計(jì)生產(chǎn)的ATmega64型單片機(jī)進(jìn)行的,主要完成了ATmega64單片機(jī)的IAP功能,實(shí)現(xiàn)芯片程序通過串口、GPRS、WiFi、以太網(wǎng)等方式進(jìn)行自我更新,以提高生產(chǎn)效率,節(jié)約芯片在實(shí)際現(xiàn)場(chǎng)應(yīng)用過程中產(chǎn)生的出差費(fèi)用,提高產(chǎn)品穩(wěn)定性。
關(guān)鍵詞:IAP;ATmega64;GPRS;WiFi;以太網(wǎng)
一、IAP介紹
In Application Programming簡稱IAP,其核心就是單片機(jī)芯片可以引導(dǎo)一個(gè)常駐Flash的啟動(dòng)加載程序(Bootloader Program)通過串口、GPRS、WiFi、以太網(wǎng)等方式接收用戶程序,通過對(duì)Flash編程將其更新保存至Flash中。芯片的啟動(dòng)加載程序具備讀寫整個(gè)Flash存儲(chǔ)器空間的權(quán)限,其中包括其自身所占用空間,故BootLoader程序甚至能夠修改編輯自身、將自己刪除。
二、ATmega64芯片介紹
ATmega64芯片是高性能、低功耗的8位AVR微處理器芯片,其具備先進(jìn)的RISC架構(gòu),同時(shí)絕大多數(shù)指令的執(zhí)行周期為一個(gè)時(shí)鐘,內(nèi)部具備64K字節(jié)大容量可編程Flash,F(xiàn)lash擦鞋壽命為10000次。ATmega芯片的Flash具備有獨(dú)立鎖定位的可選Boot代碼區(qū),通過片上Boot程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程,其Boot區(qū)大小通過BOOTSZ0與BOOTSZ1來調(diào)節(jié)大小。
三、IAP實(shí)現(xiàn)原理
IAP程序位于ATmega芯片F(xiàn)lash的高端區(qū)域,從0x7000開始最大至0x7FFF結(jié)束,該區(qū)域的Flash具備同時(shí)讀-寫(Read-While-Write)自編程機(jī)制。當(dāng)ATmega芯片上電啟動(dòng)時(shí),首先運(yùn)行IAP程序進(jìn)行檢查是否需要進(jìn)行程序升級(jí),如果需要程序升級(jí)則Boot區(qū)代碼主動(dòng)鎖定Flash低端區(qū)域,并且芯片駐留在Boot區(qū)等待接收串口或WiFi、GPRS、以太網(wǎng)模塊傳遞過來的二進(jìn)制數(shù)據(jù),將接收來的二進(jìn)制數(shù)據(jù)按頁存儲(chǔ)至Flash內(nèi),對(duì)應(yīng)用程序進(jìn)行更新升級(jí)。當(dāng)傳輸至數(shù)據(jù)尾端時(shí),IAP程序主動(dòng)跳轉(zhuǎn)至Flash的應(yīng)用程序區(qū),開始執(zhí)行應(yīng)用程序,從而完成整個(gè)Flash的升級(jí)過程。
三、基于串口的IAP實(shí)現(xiàn)原理
ATmega64芯片具備兩路TTL串口電路,能夠?qū)崿F(xiàn)標(biāo)準(zhǔn)的串口通信,IAP程序通過初始化芯片的串口寄存器來使能串口,PC端通信軟件將ATmega芯片的應(yīng)用程序二進(jìn)制文件以二進(jìn)制流的形式按照固定波特率發(fā)送給芯片的IAP程序,IAP程序集成二進(jìn)制流解碼處理,將二進(jìn)制數(shù)據(jù)按照PC端軟件發(fā)送順序依次從Flash的應(yīng)用程序起始地址按頁寫入。當(dāng)傳輸至二進(jìn)制數(shù)據(jù)的末尾時(shí),進(jìn)行判斷最后一幀數(shù)據(jù)是否滿足一頁,如果不滿足一頁,則使用0xFF進(jìn)行填充將最后一頁數(shù)據(jù)更新完成后,IAP程序關(guān)閉串口寄存器、定時(shí)器等、中斷開關(guān)等在IAP程序運(yùn)行期間的硬件及中斷資源,然后跳轉(zhuǎn)至應(yīng)用程序區(qū)首地址開始執(zhí)行用戶的應(yīng)用程序。
四、基于網(wǎng)絡(luò)模塊的IAP實(shí)現(xiàn)原理
聯(lián)網(wǎng)模塊包括WiFi、GPRS、以太網(wǎng)等練完模塊,ATmega芯片搭配該類網(wǎng)絡(luò)模塊可以實(shí)現(xiàn)芯片應(yīng)用程序的遠(yuǎn)程升級(jí)。當(dāng)芯片運(yùn)行在應(yīng)用程序時(shí)若收到服務(wù)器遠(yuǎn)程的遙控升級(jí)指令,應(yīng)用程序需要在EEPROM中設(shè)置特定的標(biāo)記位,并且跳轉(zhuǎn)至Flash的Boot區(qū)開始運(yùn)行IAP程序,IAP程序初始化網(wǎng)絡(luò)模塊,通過http方式下載特定二進(jìn)制文件,并將文件更新至應(yīng)用程序區(qū)Flash內(nèi),進(jìn)而完成應(yīng)用程序的遠(yuǎn)程升級(jí)。
五、總結(jié)與展望
基于串口的IAP升級(jí)與基于網(wǎng)絡(luò)模塊的IAP遠(yuǎn)程升級(jí)可以互相配合,充分利用Boot區(qū)Flash大小限制將二者融合,讓ATmega芯片實(shí)現(xiàn)既能近距離串口升級(jí)又能遠(yuǎn)程升級(jí),在提高生產(chǎn)效率的同時(shí),降低運(yùn)維成本,保證產(chǎn)品的穩(wěn)定性。