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