?? 協(xié)議.txt
字號(hào):
上位機(jī)協(xié)議:
1、芯片用不同的波特率往PC機(jī)串口發(fā)送字符“>”、pc端必須返回“<”字符以建立通訊、如果接收不到PC機(jī)的返回字符則說明不需要在線升級(jí)程序、則進(jìn)入用戶應(yīng)用程序區(qū)開始執(zhí)行、
2、通訊鏈接建立后、芯片開始發(fā)送自身芯片型號(hào)、FLASH區(qū)大小、EEPROM大小以及在線編程的頁面大小等信息給PC機(jī)、PC機(jī)程序應(yīng)該顯示此時(shí)鏈接的芯片的參數(shù)、
3、然后芯片發(fā)送字符“!”給PC機(jī)、提示PC機(jī)可以發(fā)送數(shù)據(jù)了、于是PC機(jī)就先發(fā)送一個(gè)16位的數(shù)據(jù)頁面編號(hào)、從0x0000開始(以后依次是0x0001、0x0002……)、接著發(fā)送一串固定大小(與頁面大小一致)的數(shù)據(jù)給芯片、這個(gè)數(shù)據(jù)就是要更新的二進(jìn)制數(shù)據(jù)、當(dāng)一頁數(shù)據(jù)發(fā)送完成后、PC機(jī)接著發(fā)送一個(gè)校驗(yàn)碼、要是這個(gè)校驗(yàn)碼與芯片內(nèi)部計(jì)算出來的一致、說明程序接收無誤、就將這頁程序數(shù)據(jù)由FLASH的0x0000地址開始寫入、如果校驗(yàn)出錯(cuò)、就向PC端發(fā)送“@”提示PC機(jī)再次發(fā)送這頁數(shù)據(jù)、如此反復(fù)直至程序被完全寫入FLASH區(qū)、如果最后一頁數(shù)據(jù)不滿、則用0xFF來填滿再發(fā)送、
4、pc機(jī)完成發(fā)送任務(wù)后、向芯片發(fā)送0xFFFF指令、以示程序數(shù)據(jù)發(fā)送完成、芯片接收到這個(gè)數(shù)據(jù)后即完成了更新工作、跳轉(zhuǎn)到新的用戶應(yīng)用程序區(qū)開始執(zhí)行、
對(duì)于加密則是必須的、建議在提供給用戶的HEX文件里暗藏幾個(gè)字節(jié)的認(rèn)證碼、在升級(jí)前先將它們分離出來、加密后發(fā)送到芯片、芯片的bootload程序收到后解密、如果校驗(yàn)通過就給予升級(jí)、否則予以拒絕、甚至校驗(yàn)失敗若干次后清空原來的程序等等、當(dāng)然上位機(jī)的程序要自己編寫、雙方的程序都有一個(gè)隨機(jī)認(rèn)證碼表、以免被惡人監(jiān)聽COM口獲得校驗(yàn)碼、避免程序被非法修改、
--------田旭/12/04/06年
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -