<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 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字節(jié)二進制數(shù)據轉換成4字節(jié)可打印的ASCII字符集。因為Hex格式是將1字節(jié)二進制數(shù)據轉換成2字節(jié)ASCII數(shù)據,所以UU編碼的效率高于Hex格式。

            UU編碼的編碼方法如下:

            因為3字節(jié)二進制數(shù)據共24Bits,把它們按6Bits分成4份,這樣就變成了4個字節(jié),再把新生成的4個字節(jié)每個都加上0x20,若這樣處理后的數(shù)值為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) +

           ?。ǎ╥nbytep [1] 0xF0) 》 4));

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

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

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

            若原數(shù)據字節(jié)數(shù)不是3的倍數(shù),則以0x00填充。

            數(shù)據通過UU編碼之后,以UU編碼行的形式打包發(fā)送。

            UU編碼行的第一個字節(jié)表示數(shù)據的長度,且為UU編碼。

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

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

            LPC2000系列UU編碼發(fā)送規(guī)則

            LPC2000系列規(guī)定:

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

            2.在發(fā)送20個UU編碼行之后,應該發(fā)送數(shù)據校驗和。

            數(shù)據校驗和即為上次校驗和計算之后所有發(fā)送的原始數(shù)據的和。

            數(shù)據校驗和以ASCII碼的方式發(fā)送,以 “\”結束。

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

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

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

            所以實際發(fā)送4096字節(jié)數(shù)據的過程如下:

            WRITE 63BYTES(1)

            WRITE 63BYTES(2)

            WRITE 63BYTES(3)

            ……

            WRITE 63BYTES(18)

            WRITE 63BYTES(19)

            WRITE 63BYTES(20)

            WRITE CHECKSUM(已發(fā)送900字節(jié))

            WRITE 63BYTES(21)

            WRITE 63BYTES(22)

            WRITE 63BYTES(23)

            ……

            WRITE 63BYTES(38)

            WRITE 63BYTES(39)

            WRITE 63BYTES(40)

            WRITE CHECKSUM(已發(fā)送1800字節(jié))

            WRITE 63BYTES(41)

            WRITE 63BYTES(42)

            WRITE 63BYTES(43)

            ……

            WRITE 63BYTES(58)

            WRITE 63BYTES(59)

            WRITE 63BYTES(60)

            WRITE CHECKSUM(已發(fā)送2700字節(jié))

            WRITE 63BYTES(61)

            WRITE 63BYTES(62)

            WRITE 63BYTES(63)

            ……

            WRITE 63BYTES(78)

            WRITE 63BYTES(79)

            WRITE 63BYTES(80)

            WRITE CHECKSUM(已發(fā)送3600字節(jié))

            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(已發(fā)送4096字節(jié))

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



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();