新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM微處理器ISP升級程序設計與應用

        ARM微處理器ISP升級程序設計與應用

        作者: 時間:2012-12-29 來源:網絡 收藏

          下面為對2106讀器件ID的完整的過程: OPEN COM bps:9600, StopBits:1, Parity:No, DataBits:8

          WRITE 0x3F

          ?

          READ 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A

          Synchronized\

          WRITE 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A

          Synchronized\

          READ 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A 0x4F 0x4B 0x0D 0x0A

          Synchronized\OK\

          WRITE 0x31 0x32 0x30 0x30 0x30 0x0D 0x0A

          12000\

          READ 0x31 0x32 0x30 0x30 0x30 0x0D 0x0A 0x4F 0x4B 0x0D 0x0A

          12000\OK\

          WRITE 0x55 0x20 0x32 0x33 0x31 0x33 0x30 0x0D 0x0A

          U 23130\

          READ 0x55 0x20 0x32 0x33 0x31 0x33 0x30 0x0D 0x0A 0x30 0x0D 0x0A

          U 23130\0\

          WRITE 0x4A 0x0D 0x0A

          J\

          READ 0x4A 0x0D 0x0A 0x30 0x0D 0x0A

          J\0\

          READ 0x34 0x32 0x39 0x33 0x39 0x38 0x34 0x30 0x35 0x30 0x0D 0x0A

          4293984050

          其中WRITE和READ是針對PC而言的。

          UU編碼簡介

          向FLASH中燒寫的程序代碼是通過UU編碼之后傳給的。

          UU編碼算法將3字節二進制數據轉換成4字節可打印的ASCII字符集。因為Hex格式是將1字節二進制數據轉換成2字節ASCII數據,所以UU編碼的效率高于Hex格式。

          UU編碼的編碼方法如下:

          因為3字節二進制數據共24Bits,把它們按6Bits分成4份,這樣就變成了4個字節,再把新生成的4個字節每個都加上0x20,若這樣處理后的數值為0x20,則用0x60取代。用C語言表示的UU編碼過程如下:

          #define ENCODE_BYTE(b) (((b) == 0) ? 0x60 : ((b) + 0x20))

          outbuf [0] = ENCODE_BYTE ((inbytep [0] 0xFC) 》 2);

          outbuf [1] = ENCODE_BYTE (((inbytep [0] 0x03) 《 4) +

          ((inbytep [1] 0xF0) 》 4));

          outbuf [2] = ENCODE_BYTE (((inbytep [1] 0x0F) 《 2) +

         ?。ǎ╥nbytep [2] 0xC0) 》 6));

          outbuf [3] = ENCODE_BYTE (inbytep [2] 0x3F);

          若原數據字節數不是3的倍數,則以0x00填充。

          數據通過UU編碼之后,以UU編碼行的形式打包發送。

          UU編碼行的第一個字節表示數據的長度,且為UU編碼。

          UU編碼規定:任何UU編碼行的長度都不應超過61個字節(字符),也就是說,一個UU編碼最多可以包含45字節原始的二進制數據。

          例如,對一個用十六進制表示的數據“18F09FE518F09FE518F09FE518F09FE5”,(注意該數據實際長度為16字節,因為顯示的問題,這里采用HEX表示。)在經過UU編碼之后,數據變為“M/"?Y1CPG^48\)_E/"?Y1CPG^6`7R"Y\/\?Y1CPG^7`````0````$0```!(”。

          LPC2000系列UU編碼發送規則

          LPC2000系列規定:

          1.發送器(通常為PC)以UU編碼行的形式發送實際數據,且每個數據包都以 “\”結束,所以在UU編碼行長度為61字節的時候,發送器實際發送的數據長度為63字節(61個字節UU編碼+2字節“\”)。

          2.在發送20個UU編碼行之后,應該發送數據校驗和。

          數據校驗和即為上次校驗和計算之后所有發送的原始數據的和。

          數據校驗和以ASCII碼的方式發送,以 “\”結束。

          接收器在收到校驗和后與它接收的數據的校驗和相比較,如果校驗和匹配,接收器就發送“OK\”,并等待下一次發送。如果校驗和不匹配,接收器就發送“RESEND\”。

          3.在數據發送結束,即使不足20個UU編碼行也仍然應該發送數據校驗和。

          由于FLASH的燒寫通常是以4096字節為單位的,所以在每發送4096字節之后也必須發送一個數據校驗和。(4096字節=91個UU編碼行+1個字節=4×20個UU編碼行+11UU編碼行+1個字節)

          所以實際發送4096字節數據的過程如下:

          WRITE 63BYTES(1)

          WRITE 63BYTES(2)

          WRITE 63BYTES(3)

          ……

          WRITE 63BYTES(18)

          WRITE 63BYTES(19)

          WRITE 63BYTES(20)

          WRITE CHECKSUM(已發送900字節)

          WRITE 63BYTES(21)

          WRITE 63BYTES(22)

          WRITE 63BYTES(23)

          ……

          WRITE 63BYTES(38)

          WRITE 63BYTES(39)

          WRITE 63BYTES(40)

          WRITE CHECKSUM(已發送1800字節)

          WRITE 63BYTES(41)

          WRITE 63BYTES(42)

          WRITE 63BYTES(43)

          ……

          WRITE 63BYTES(58)

          WRITE 63BYTES(59)

          WRITE 63BYTES(60)

          WRITE CHECKSUM(已發送2700字節)

          WRITE 63BYTES(61)

          WRITE 63BYTES(62)

          WRITE 63BYTES(63)

          ……

          WRITE 63BYTES(78)

          WRITE 63BYTES(79)

          WRITE 63BYTES(80)

          WRITE CHECKSUM(已發送3600字節)

          WRITE 63BYTES(81)

          WRITE 63BYTES(82)

          WRITE 63BYTES(83)

          WRITE 63BYTES(84)

          WRITE 63BYTES(85)

          WRITE 63BYTES(86)

          WRITE 63BYTES(87)

          WRITE 63BYTES(88)

          WRITE 63BYTES(89)

          WRITE 63BYTES(90)

          WRITE 63BYTES(91)

          WRITE 7 BYTES

          WRITE CHECKSUM(已發送4096字節)

          注意上面只包含的PC向微處理器寫數據的情況,實際上若沒關閉“回聲”,微處理器會將上面所有數據回發一次,另外還有校驗和響應等。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀宁县| 孟村| 余干县| 十堰市| 静安区| 兴安县| 高清| 汾阳市| 永安市| 滨海县| 蒙阴县| 烟台市| 苏尼特右旗| 海门市| 方正县| 谢通门县| 桃源县| 松江区| 独山县| 商河县| 任丘市| 阿拉善左旗| 徐汇区| 津市市| 大荔县| 乌海市| 高青县| 青川县| 高陵县| 满洲里市| 永春县| 墨竹工卡县| 和林格尔县| 泰宁县| 宜春市| 古田县| 新巴尔虎右旗| 临沂市| 阿鲁科尔沁旗| 淮南市| 抚远县|