在實(shí)際生產(chǎn)中,廠(chǎng)家們?yōu)榱藫屨际袌?chǎng),往往是一邊發(fā)布產(chǎn)品一邊完善技術(shù);此外,要想做出成熟的產(chǎn)品,必須要與用戶(hù)形成良好的互動(dòng),利用客戶(hù)的反饋信息來(lái)完善升級。所以,廠(chǎng)家常常需要升級設備的固件程序,如果對用戶(hù)手中的大量設備進(jìn)行現場(chǎng)ISP升級,那么不但浪費人力與時(shí)間,繁瑣的操作還會(huì )影響客戶(hù)對產(chǎn)品的印象。
在網(wǎng)絡(luò )飛速發(fā)展的時(shí)代,將終端設備接入到網(wǎng)絡(luò )中可以有效地解決上述問(wèn)題,廠(chǎng)家只需要將最新的固件放到指定的服務(wù)器上,設備通過(guò)網(wǎng)絡(luò )遠程訪(fǎng)問(wèn)服務(wù)器,自動(dòng)下載更新固件程序??蛻?hù)無(wú)需去現場(chǎng)拆卸設備,無(wú)需isp下載軟件。方便快捷,穩定可靠,設備可以遠程自動(dòng)檢測下載升級,尤其是在大批量升級中,優(yōu)點(diǎn)顯著(zhù)。
CH563是一款帶網(wǎng)絡(luò )接口的單片機,可以廣泛應用于各種嵌入式產(chǎn)品的開(kāi)發(fā),使用CH563可以很好的實(shí)現該方案:CH563作為用戶(hù)的終端設備,通過(guò)TFTP協(xié)議訪(fǎng)問(wèn)廠(chǎng)家的服務(wù)器,服務(wù)器上保存有最新的固件,CH563可以下載該固件,并進(jìn)行升級。
1.TFTP協(xié)議實(shí)現遠程下載
?TFTP協(xié)議是基于UDP的一種簡(jiǎn)單的文件傳輸協(xié)議,它由TFTP客戶(hù)端與服務(wù)器組成,CH563做TFTP客戶(hù)端,遠程連接廠(chǎng)家的TFTP服務(wù)器,下載服務(wù)器上的固件程序,TFTP交互流程如下:
1、由客戶(hù)端發(fā)起讀文件/寫(xiě)文件的請求,同時(shí)可以進(jìn)行請求連接
2、服務(wù)器監聽(tīng)到請求,打開(kāi)連接,并向客戶(hù)端發(fā)送文件,以每個(gè)定長(cháng)為512字節的塊進(jìn)行發(fā)送。每個(gè)數據包包含一個(gè)數據塊,在發(fā)送下一個(gè)包的時(shí)候必須被客戶(hù)端確認回應一個(gè)回應包。
3、當發(fā)現某個(gè)數據包小于512個(gè)字節,說(shuō)明傳輸終止。
4、如果出現網(wǎng)絡(luò )丟包,收件方(客戶(hù)端)會(huì )超時(shí),并且重傳最后的接收包(可以是數據包或者回應包),因此這將可以讓發(fā)送者重新發(fā)送丟失包。當之前的包已經(jīng)接受成功之后,發(fā)送者只需要保持一個(gè)重傳包。
注意:發(fā)送方要做的事情:發(fā)送數據,接收回應包;接收者要做的:發(fā)送回應包,接收數據。如下圖所示:
2.FLASH區域的劃分與固件的存儲
CH563的用戶(hù)程序是保存在FLASH地址0開(kāi)始的區域內,每次復位或上電之后,單片機總是從地址0開(kāi)始運行用戶(hù)程序。為了保存下載的新固件,這里將FLASH劃分出一塊備用區域,等待校驗完成后,才替換舊版固件
FLASH劃分示意圖:
0---64k
當前用戶(hù)程序
64k---128k
保存下載的新固件
1、CH563將從TFTP服務(wù)器上下載的固件保存在FLASH地址64k開(kāi)始的區域內。
2、對FLASH里保存的固件進(jìn)行校驗,如長(cháng)度校驗或者自定義校驗方式
3、校驗如果通過(guò),那么就把FLASH里的當前用戶(hù)程序擦除(地址0-64KB),將保存的新固件寫(xiě)入到0- ? 64K的FLASH里。
4、寫(xiě)入完畢后,單片機執行復位命令,此時(shí),單片機運行的就是新的固件程序了。
?
下面給出563TFTP遠程升級的完整例程以及相關(guān)軟件工具,配合CH563評估板,使用步驟如下:
1、? 電腦上打開(kāi)TFTPD64.exe,建立起TFTP服務(wù)器,電腦的IP地址設為:192.168.10.100,將要下載的BIN文件CH563.BIN放到軟件指定的目錄內。
2、? CH563評估板上電,通過(guò)網(wǎng)線(xiàn)連接電腦,按下PB7引腳上的DOWNLOAD鍵,563就會(huì )向電腦TFTP服務(wù)器發(fā)送下載請求,一鍵完成下載升級復位。
?
例程包下載:
?