介紹
在實際生產(chǎn)中,為了不斷產(chǎn)品優(yōu)化,廠家常常遇到升級設(shè)備固件程序的情況,如果對用戶手中的大量設(shè)備進行現(xiàn)場 ISP 升級,則需要大量人力與時間。
在網(wǎng)絡(luò)飛速發(fā)展的時代,將終端設(shè)備接入到網(wǎng)絡(luò)中可以有效地解決上述問題,廠家只需要將最新的固件放到指定的服務(wù)器上,設(shè)備通過網(wǎng)絡(luò)遠(yuǎn)程訪問服務(wù)器,自動下載更新固件程序。方便快捷,穩(wěn)定可靠,尤其是在大批量升級中,優(yōu)點顯著。
CH563是一款帶網(wǎng)絡(luò)接口的單片機,可以廣泛應(yīng)用于各種嵌入式產(chǎn)品的開發(fā),使用CH563可以很好的實現(xiàn)該方案:CH563作為用戶的終端設(shè)備,通過TCP協(xié)議訪問廠家的服務(wù)器,服務(wù)器上保存有最新的固件,CH563可以下載該固件,并進行升級。
方案簡介
具體的操作流程可以看“CH563IAP升級使用教程V1.1”;
詳細(xì)要點:
1.?????? CH563 FLASH 0-4KB地址存放IAP代碼,這部分固定存放,在升級過程中不會被擦除。4-64KB地址存放APP用戶代碼,IAP代碼最后會跳轉(zhuǎn)到用戶代碼執(zhí)行。64-128KB地址存放待升級的代碼。EEPROM? 20-24KB地址存放兩個字節(jié)的IAP升級標(biāo)志 0X57? 0XAB。
2.?????? 升級的代碼BIN文件由主機服務(wù)器通過TCP傳給CH563,經(jīng)過TransHexToBin軟件轉(zhuǎn)換的Bin文件前面有固定16字節(jié)長度的信息:
0-1:固定0XAA? 0XBB ;2-3:兩個字節(jié)的bin文件版本號,可以在軟件中設(shè)置。
4-7: 4個字節(jié)的BIN文件長度(字節(jié)數(shù)),由軟件算出。
8-11:checksum校驗和;12-15:保留
如何將兩個代碼分開放入FLASH ,FLASH劃分操作:
1.?????? CH563有一個SCF文件,這是一個ROM分配的文件。
2.?????? CH563的IAP程序因為是放在0-4KB的,所以SCF不需要進行修改。用戶代碼因為是從4KB(0x1000H),所以需要將ROM_LOAD 和FLASH_CODE修改到0x00001000始。
3.?????? 因為APP用戶程序被整體偏移了4KB,所以為了能夠跳轉(zhuǎn)到IRQ_Handler和FIQ_Handler里面,跳轉(zhuǎn)就得分兩步。第一步,IAP的啟動文件里面先跳轉(zhuǎn)到跳轉(zhuǎn)IRQ_Handler這個命令的地址,正常這個命令的地址0x0018,因為用戶程序偏移了4KB,所以變?yōu)榱?x1018。同理,跳轉(zhuǎn)FIQ_Handler這個命令的地址變?yōu)榱?x101c。所以IAP程序的啟動文件里面,需要將這兩個中斷的跳轉(zhuǎn)的命令地址偏移0x1000。這樣才能跳到正確的中斷里面。
4.?????? IAP程序的最后會有一個jumptoapp函數(shù),里面執(zhí)行的內(nèi)容就是跳轉(zhuǎn)到0x1000這個地址區(qū)運行。這樣就完成了IAP程序跳轉(zhuǎn)到APP用戶程序。
例程包下載: