在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LPC21XX系列ARM微處理器ISP升級(jí)程序設(shè)計(jì)

            LPC21XX系列ARM微處理器ISP升級(jí)程序設(shè)計(jì)

            作者: 時(shí)間:2011-03-14 來(lái)源:網(wǎng)絡(luò) 收藏


            在系統(tǒng)中編程,英文簡(jiǎn)稱ISP,即In System Programming,是Lattice半導(dǎo)體公司首先提出來(lái)的一種讓我們能在產(chǎn)品設(shè)計(jì)、制造過程中的每個(gè)環(huán)節(jié),甚至在產(chǎn)品賣給最終用戶以后,具有對(duì)其器件、電路板或整個(gè)電子系統(tǒng)的邏輯和功能隨時(shí)進(jìn)行重組或重新編程的技術(shù)。
            ISP使得MCU、CPLD等不必從目標(biāo)板中拔出,通過串口或?qū)S孟螺d電纜就可實(shí)現(xiàn)本地或遠(yuǎn)程下載來(lái)實(shí)現(xiàn)程序升級(jí)。
            飛利浦的LPC2000系列片內(nèi)含F(xiàn)LASH的ARM7微處理器支持ISP和IAP(In ApplIcation Programming——在應(yīng)用編程)。
            LPC2000系列微處理器通過其UART0與PC(或其他設(shè)備)的COM口聯(lián)機(jī)實(shí)現(xiàn)ISP。
            復(fù)位時(shí),P0.14為低電平會(huì)使LPC2000系列微處理器進(jìn)入ISP功能模式,否則進(jìn)入正常工作模式。
            P0.14在復(fù)位后默認(rèn)初始化為高阻模式,用戶需要提供外部硬件條件——上拉或接地,使引腳處于一個(gè)確定的狀態(tài),否則可能導(dǎo)致功能紊亂——非預(yù)期的ISP模式或正常工作模式。
            飛利浦提供公用的ISP下載程序,但是在某些情況下,例如為了程序統(tǒng)一性,個(gè)性化或固件的保密性,我們有必要設(shè)計(jì)自己的ISP下載程序。
            ISP處理過程
            I(yíng)SP的整個(gè)過程如下圖所示:

            1. ISP模式的進(jìn)入
            復(fù)位時(shí)P0.14的3ms以上持續(xù)的低電平是LPC2000系列微處理器進(jìn)入ISP功能模式的必要條件。PC的串口應(yīng)設(shè)定為8個(gè)數(shù)據(jù)位、1個(gè)停止位和無(wú)奇偶校驗(yàn),波特率建議設(shè)置為9600bps,由于受ISP處理速度的影響,過高的波特率并不見得會(huì)提高ISP處理速度,反而容易導(dǎo)致ISP處理沒有響應(yīng)。
            2. 自動(dòng)波特率檢測(cè)
            LPC2000系列微處理器在進(jìn)入ISP模式之后,會(huì)自動(dòng)進(jìn)行“自動(dòng)波特率檢測(cè)”,因?yàn)槲⑻幚砥鞑⒉磺宄约核B接的晶振頻率和PC程序所設(shè)置的串口波特率。在“自動(dòng)波特率檢測(cè)”通過之后,微處理器就進(jìn)入處理PC程序所發(fā)送的ISP命令的狀態(tài)。
            自動(dòng)波特率檢測(cè)的流程如下圖所示:

            PC機(jī)先發(fā)送一個(gè)同步字“?”,若微處理器因?yàn)樵趶?fù)位時(shí)檢測(cè)到P0.14為低電平而進(jìn)入了ISP模式,則微處理器會(huì)發(fā)送“Synchronized\r\n”給PC,PC在接收到“Synchronized\r\n”之后,回發(fā)“Synchronized\r\n”給微處理器,微處理器在收到“Synchronized\r\n”之后,發(fā)送“Synchronized\r\nOK\r\n”給PC,PC在收到“Synchronized\r\nOK\r\n”之后,以ASCII碼的形式發(fā)送晶振頻率(kHz)給微處理器。例如晶振頻率為12MHz,則PC發(fā)送給微處理器的字串為“12000\r\n”。微處理器在接收到晶振頻率之后會(huì)發(fā)送“OK\r\n”給PC作為響應(yīng)。
            注意事項(xiàng):
            (1) 處理器與PC的數(shù)據(jù)交換過程中,所有數(shù)據(jù)均以“\r\n”作為結(jié)尾,十六進(jìn)制為0x0D,0x0A。
            (2) 任何發(fā)送或接收出錯(cuò)之后,只能通過PC軟件提示“操作失敗”,并要求用戶重啟(復(fù)位/開關(guān)電源)微處理器來(lái)解決。
            (3) 所有數(shù)字均以ASCII碼的形式發(fā)送。
            3.ISP命令處理
            在自動(dòng)波特率檢測(cè)之后,PC就可以通過串口發(fā)送ISP命令和數(shù)據(jù)給微處理器了。
            ISP命令簡(jiǎn)介
            LPC2000系列微處理器支持的ISP命令如下表所示,更詳細(xì)的介紹參見周立功網(wǎng)站的http://www.zlgmcu.com/philips/arm/about/LPC2000_FLASH.pdf以及《ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)》一書。
            ISP命令簡(jiǎn)單匯總
            ISP命令 功能
            U 23130 解鎖。在對(duì) FLASH編程、擦除運(yùn)行之前必須執(zhí)行該命令。
            B 波特率>停止位>設(shè)置波特率。
            A 1/0>回聲開關(guān)??刂莆⑻幚砥魇欠駥⒔邮盏降臄?shù)據(jù)回發(fā)給 PC。
            W RAM地址>長(zhǎng)度>PC寫數(shù)據(jù)到微處理器RAM。數(shù)據(jù)格式為UU碼。
            R RAM地址>長(zhǎng)度>PC從微處理器RAM讀數(shù)據(jù)。數(shù)據(jù)格式為UU碼。
            P 起始扇區(qū)>結(jié)束扇區(qū)>選定即將操作的扇區(qū)范圍。
            C FLASH地址>RAM地址>字節(jié)數(shù)>命令微處理器將 RAM中的數(shù)據(jù)燒寫到FLASH中。
            G 地址>模式>執(zhí)行 FLASH或RAM中的代碼。
            E 起始扇區(qū)>結(jié)束扇區(qū)>擦除選定的扇區(qū)。
            I(yíng) 起始扇區(qū)>結(jié)束扇區(qū)>檢查指定的扇區(qū)是否為空。
            J讀器件 ID。
            K讀 BOOT代碼版本號(hào)。
            M 地址1>地址2>字節(jié)數(shù)>比較 FLASH和/或RAM中的數(shù)據(jù)。
            注意事項(xiàng):
            (1) 處理器與PC的數(shù)據(jù)交換過程中,所有數(shù)據(jù)均以“\r\n”作為結(jié)尾,十六進(jìn)制為0x0D,0x0A。
            (2) 任何發(fā)送或接收出錯(cuò)之后,只能通過PC軟件提示“操作失敗”,并要求用戶重啟(復(fù)位/開關(guān)電源)微處理器來(lái)解決。
            (3) 所有數(shù)字均以ASCII碼的形式發(fā)送。
            (4) 所有參數(shù)均以空格作為分隔符, 十六進(jìn)制為0x20。
            ISP命令的響應(yīng)
            在執(zhí)行ISP命令之后,微處理器會(huì)發(fā)送“0\r\n”之類的字串給PC作為響應(yīng)。這里的“0”即為執(zhí)行結(jié)果?!?”表示執(zhí)行結(jié)果正確,非“0”表示執(zhí)行失敗,至于非“0”的具體的含義,參見周立功網(wǎng)站的http://www.zlgmcu.com/philips/arm/about/LPC2000_FLASH.pdf以及《ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)》一書。
            ISP讀取器件ID的過程
            這里之所以介紹通過ISP讀取器件ID的過程,是因?yàn)橥ㄟ^ISP命令來(lái)燒寫程序相對(duì)通過ISP讀取器件ID來(lái)說(shuō)復(fù)雜很多,而且燒寫程序之前往往包含讀取器件ID部分。
            下面為對(duì)ISP2106讀器件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\r\n
            WRITE 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A
            Synchronized\r\n
            READ 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A 0x4F 0x4B 0x0D 0x0A
            Synchronized\r\nOK\r\n
            WRITE 0x31 0x32 0x30 0x30 0x30 0x0D 0x0A
            12000\r\n
            READ 0x31 0x32 0x30 0x30 0x30 0x0D 0x0A 0x4F 0x4B 0x0D 0x0A
            12000\r\nOK\r\n
            WRITE 0x55 0x20 0x32 0x33 0x31 0x33 0x30 0x0D 0x0A
            U 23130\r\n
            READ 0x55 0x20 0x32 0x33 0x31 0x33 0x30 0x0D 0x0A 0x30 0x0D 0x0A
            U 23130\r\n0\r\n
            WRITE 0x4A 0x0D 0x0A
            J\r\n
            READ 0x4A 0x0D 0x0A 0x30 0x0D 0x0A
            J\r\n0\r\n
            READ 0x34 0x32 0x39 0x33 0x39 0x38 0x34 0x30 0x35 0x30 0x0D 0x0A
            4293984050
            
            其中WRITE和READ是針對(duì)PC而言的。
            UU編碼簡(jiǎn)介
            向FLASH中燒寫的程序代碼是通過UU編碼之后傳給微處理器的。
            UU編碼算法將3字節(jié)二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成4字節(jié)可打印的ASCII字符集。因?yàn)镠ex格式是將1字節(jié)二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成2字節(jié)ASCII數(shù)據(jù),所以UU編碼的效率高于Hex格式。
            UU編碼的編碼方法如下:
            因?yàn)?字節(jié)二進(jìn)制數(shù)據(jù)共24Bits,把它們按6Bits分成4份,這樣就變成了4個(gè)字節(jié),再把新生成的4個(gè)字節(jié)每個(gè)都加上0x20,若這樣處理后的數(shù)值為0x20,則用0x60取代。用C語(yǔ)言表示的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) +
            ((inbytep [2] 0xC0) >> 6));
            outbuf [3] = ENCODE_BYTE (inbytep [2] 0x3F);
            若原數(shù)據(jù)字節(jié)數(shù)不是3的倍數(shù),則以0x00填充。
            數(shù)據(jù)通過UU編碼之后,以UU編碼行的形式打包發(fā)送。
            UU編碼行的第一個(gè)字節(jié)表示數(shù)據(jù)的長(zhǎng)度,且為UU編碼。
            UU編碼規(guī)定:任何UU編碼行的長(zhǎng)度都不應(yīng)超過61個(gè)字節(jié)(字符),也就是說(shuō),一個(gè)UU編碼最多可以包含45字節(jié)原始的二進(jìn)制數(shù)據(jù)。
            例如,對(duì)一個(gè)用十六進(jìn)制表示的數(shù)據(jù)“18F09FE518F09FE518F09FE518F09FE5”,(注意該數(shù)據(jù)實(shí)際長(zhǎng)度為16字節(jié),因?yàn)轱@示的問題,這里采用HEX表示。)在經(jīng)過UU編碼之后,數(shù)據(jù)變?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ù)據(jù),且每個(gè)數(shù)據(jù)包都以 “\r\n”結(jié)束,所以在UU編碼行長(zhǎng)度為61字節(jié)的時(shí)候,發(fā)送器實(shí)際發(fā)送的數(shù)據(jù)長(zhǎng)度為63字節(jié)(61個(gè)字節(jié)UU編碼+2字節(jié)“\r\n”)。
            2.在發(fā)送20個(gè)UU編碼行之后,應(yīng)該發(fā)送數(shù)據(jù)校驗(yàn)和。
            數(shù)據(jù)校驗(yàn)和即為上次校驗(yàn)和計(jì)算之后所有發(fā)送的原始數(shù)據(jù)的和。
            數(shù)據(jù)校驗(yàn)和以ASCII碼的方式發(fā)送,以 “\r\n”結(jié)束。
            接收器在收到校驗(yàn)和后與它接收的數(shù)據(jù)的校驗(yàn)和相比較,如果校驗(yàn)和匹配,接收器就發(fā)送“OK\r\n”,并等待下一次發(fā)送。如果校驗(yàn)和不匹配,接收器就發(fā)送“RESEND\r\n”。
            3.在數(shù)據(jù)發(fā)送結(jié)束,即使不足20個(gè)UU編碼行也仍然應(yīng)該發(fā)送數(shù)據(jù)校驗(yàn)和。
            由于FLASH的燒寫通常是以4096字節(jié)為單位的,所以在每發(fā)送4096字節(jié)之后也必須發(fā)送一個(gè)數(shù)據(jù)校驗(yàn)和。(4096字節(jié)=91個(gè)UU編碼行+1個(gè)字節(jié)=4×20個(gè)UU編碼行+11UU編碼行+1個(gè)字節(jié))
            所以實(shí)際發(fā)送4096字節(jié)數(shù)據(jù)的過程如下:
            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ù)據(jù)的情況,實(shí)際上若沒關(guān)閉“回聲”,微處理器會(huì)將上面所有數(shù)據(jù)回發(fā)一次,另外還有校驗(yàn)和響應(yīng)等。
            LPC2000系列微處理器ISP編程完整過程
            WRITE ?
            READSynchronized\r\n
            WRITE Synchronized\r\n
            READSynchronized\r\n
            READOK\r\n
            WRITE 12000\r\n
            READ12000\r\n
            READOK\r\n
            WRITE U 23130\r\n
            READU 23130\r\n
            READ0\r\n
            WRITE P 0 1\r\n
            READP 0 1\r\n
            READ0\r\n
            WRITE E 0 1\r\n
            READE 0 1\r\n
            READ0\r\n
            WRITE W 1073742336 4096\r\n
            READW 1073742336 4096\r\n
            READ0\r\n
            
            發(fā)送4096字節(jié)UU編碼后的數(shù)據(jù)
            WRITE P 0 0\r\n
            READP 0 0\r\n
            READ0\r\n
            WRITE C 0 1073742336 4096\r\n
            READC 0 1073742336 4096\r\n
            READ0\r\n
            
            發(fā)送4096字節(jié)UU編碼后的數(shù)據(jù)
            WRITE P 0 0\r\n
            READP 0 0\r\n
            READ0\r\n
            WRITE C 4096 1073742336 4096\r\n
            READC 4096 1073742336 4096\r\n
            READ0\r\n
            
            發(fā)送4096字節(jié)UU編碼后的數(shù)據(jù)
            WRITE P 1 1\r\n
            READP 1 1\r\n
            READ0\r\n
            WRITE C 8192 1073742336 4096\r\n
            READC 8192 1073742336 4096\r\n
            READ0\r\n
            發(fā)送92字節(jié)UU編碼后的數(shù)據(jù)
            WRITE P 1 1\r\n
            READP 1 1\r\n
            READ0\r\n
            WRITE C 12288 1073742336 4096\r\n
            READC 12288 1073742336 4096\r\n
            READ0\r\n
            實(shí)際程序長(zhǎng)度12,380字節(jié)

            程序下載:
            LPC21XXISP.rarhttp://www.dragon-2008.com/download/ArmDsp/LPC21XXISP.rar
            參考資料:
            1.LPC210X Datasheet
            2.LPC2000系列ARM Flash存儲(chǔ)器系統(tǒng)和編程
            http://www.zlgmcu.com/philips/arm/about/LPC2000_FLASH.pdf
            3.《ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)》
            相關(guān)連接:
            1.Intel HEX文件格式http://www.dragon-2008.com/ArmDsp/ARTICLE/INTEL-HEX.htm
            2.UU編碼簡(jiǎn)介http://www.dragon-2008.com/ArmDsp/ARTICLE/UUCODE.htm
            (綜合電子論壇)
            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉