新聞中心

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

ARM微處理器ISP升級(jí)程序設(shè)計(jì)與應(yīng)用

作者: 時(shí)間:2012-12-29 來(lái)源:網(wǎng)絡(luò) 收藏
  在系統(tǒng)中編程,英文簡(jiǎn)稱(chēng),即In System Programming,是Lattice半導(dǎo)體公司首先提出來(lái)的一種讓我們能在產(chǎn)品設(shè)計(jì)、制造過(guò)程中的每個(gè)環(huán)節(jié),甚至在產(chǎn)品賣(mài)給最終用戶(hù)以后,具有對(duì)其器件、電路板或整個(gè)電子系統(tǒng)的邏輯和功能隨時(shí)進(jìn)行重組或重新編程的技術(shù)。

  使得MCU、CPLD等不必從目標(biāo)板中拔出,通過(guò)串口或?qū)S孟螺d電纜就可實(shí)現(xiàn)本地或遠(yuǎn)程下載來(lái)實(shí)現(xiàn)程序升級(jí)。

  飛利浦的LPC2000系列片內(nèi)含F(xiàn)LASH的7支持和IAP(In ApplIcation Programming——在應(yīng)用編程)。

  LPC2000系列通過(guò)其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)初始化為高阻模式,用戶(hù)需要提供外部硬件條件——上拉或接地,使引腳處于一個(gè)確定的狀態(tài),否則可能導(dǎo)致功能紊亂——非預(yù)期的ISP模式或正常工作模式。

  飛利浦提供公用的ISP下載程序,但是在某些情況下,例如為了程序統(tǒng)一性,個(gè)性化或固件的保密性,我們有必要設(shè)計(jì)自己的ISP下載程序。

  ISP處理過(guò)程

  ISP的整個(gè)過(guò)程如下圖所示:

  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處理速度的影響,過(guò)高的波特率并不見(jiàn)得會(huì)提高ISP處理速度,反而容易導(dǎo)致ISP處理沒(méi)有響應(yīng)。

  2. 自動(dòng)波特率檢測(cè)

  大多數(shù)SCI模塊硬件不支持自動(dòng)波特率檢測(cè)。一般情況下嵌入式控制器的SCI時(shí)鐘由PLL提供,設(shè)計(jì)的系統(tǒng)工作會(huì)改變PLL復(fù)位時(shí)的工作狀態(tài),這樣很難支持自動(dòng)波特率檢測(cè)功能。而在TMS320F2812處理器上,增強(qiáng)功能的SCI模塊硬件支持自動(dòng)波特率檢測(cè)邏輯。寄存器SCIFFCT位ABD和CDC位控制自動(dòng)波特率邏輯,使能SCIRST位使自動(dòng)波特率邏輯工作。增加自動(dòng)波特率檢測(cè)功能的SCI通信接口除了能夠滿足正常通信自動(dòng)檢測(cè)系統(tǒng)的通信速率外,還支持采用SOl接口上電引導(dǎo)裝載程序?這對(duì)于通過(guò)上位機(jī)采用SCI接口實(shí)時(shí)更新系統(tǒng)軟件非常重要。

  當(dāng)CDC為1時(shí),如果ABD也置位表示自動(dòng)波特率檢測(cè)開(kāi)始工作,就會(huì)產(chǎn)生SCI發(fā)送FIFO中斷(TXINT)。同時(shí)在中斷服務(wù)程序中必須使用軟件將CDC位清0,否則如果中斷服務(wù)程序執(zhí)行完CDC仍然為1,則以后不會(huì)產(chǎn)生中斷。具體操作步驟如下。

 ?。?)將SCIFFCT中的CDC位(位13)置位,清除ABD位(位15),使能SCI的自動(dòng)波特率檢測(cè)模式。

 ?。?)初始化波特率寄存器為1或限制在500 Kb/s內(nèi)。

 ?。?)允許SCI以期望的波特率從一個(gè)主機(jī)接收字符“A”或字符“a”。如果第一個(gè)字符是“A”或“a”,則說(shuō)明自動(dòng)波特率檢測(cè)硬件已經(jīng)檢測(cè)到SCI通信的波特率,然后將ABD位置1。

 ?。?)自動(dòng)檢測(cè)硬件將用檢測(cè)到的波特率的十六進(jìn)制值刷新波特率寄存器的值,這個(gè)刷新邏輯器也會(huì)產(chǎn)生一個(gè)CPU中斷。

 ?。?)通過(guò)向SCIFFCT寄存器的ABD CLR位(位13)寫(xiě)入1清除ABD位,響應(yīng)中斷。寫(xiě)0清除CDC位,禁止自動(dòng)波特率邏輯。

 ?。?)讀到接收緩沖為字符“A”或“a”時(shí),清空緩沖和緩沖狀態(tài)位。

 ?。?)當(dāng)CDC為1時(shí),如果ABD也置位表示自動(dòng)波特率檢測(cè)開(kāi)始工作,就會(huì)產(chǎn)生SCI發(fā)送FIFO中斷(TXINT),同時(shí)在中斷服務(wù)程序中必須使用軟件將CDC位清0。

  LPC2000系列微處理器在進(jìn)入ISP模式之后,會(huì)自動(dòng)進(jìn)行“自動(dòng)波特率檢測(cè)”,因?yàn)槲⑻幚砥鞑⒉磺宄约核B接的晶振頻率和PC程序所設(shè)置的串口波特率。在“自動(dòng)波特率檢測(cè)”通過(guò)之后,微處理器就進(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\”給PC,PC在接收到“Synchronized\”之后,回發(fā)“Synchronized\”給微處理器,微處理器在收到“Synchronized\”之后,發(fā)送“Synchronized\OK\”給PC,PC在收到“Synchronized\OK\”之后,以ASCII碼的形式發(fā)送晶振頻率(kHz)給微處理器。例如晶振頻率為12MHz,則PC發(fā)送給微處理器的字串為“12000\”。微處理器在接收到晶振頻率之后會(huì)發(fā)送“OK\”給PC作為響應(yīng)。

  注意事項(xiàng):

 ?。?) 處理器與PC的數(shù)據(jù)交換過(guò)程中,所有數(shù)據(jù)均以“\”作為結(jié)尾,十六進(jìn)制為0x0D,0x0A。

  (2) 任何發(fā)送或接收出錯(cuò)之后,只能通過(guò)PC軟件提示“操作失敗”,并要求用戶(hù)重啟(復(fù)位/開(kāi)關(guān)電源)微處理器來(lái)解決。

  (3) 所有數(shù)字均以ASCII碼的形式發(fā)送。

  3.ISP命令處理

  在自動(dòng)波特率檢測(cè)之后,PC就可以通過(guò)串口發(fā)送ISP命令和數(shù)據(jù)給微處理器了。

  ISP命令簡(jiǎn)介

  LPC2000系列微處理器支持的ISP命令如下表所示。

  ISP命令簡(jiǎn)單匯總

  ISP命令 功能

  U 23130  解鎖。在對(duì) FLASH編程、擦除運(yùn)行之前必須執(zhí)行該命令。

  B 波特率>停止位>  設(shè)置波特率。

  A 1/0>  回聲開(kāi)關(guān)。控制微處理器是否將接收到的數(shù)據(jù)回發(fā)給 PC。

  W RAM地址>長(zhǎng)度>  PC寫(xiě)數(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ù)燒寫(xiě)到FLASH中。

  G 地址>模式>  執(zhí)行 FLASH或RAM中的代碼。

  E 起始扇區(qū)>結(jié)束扇區(qū)>  擦除選定的扇區(qū)。

  I 起始扇區(qū)>結(jié)束扇區(qū)>  檢查指定的扇區(qū)是否為空。

  J  讀器件 ID。

  K  讀 BOOT代碼版本號(hào)。

  M 地址1>地址2>字節(jié)數(shù)>  比較 FLASH和/或RAM中的數(shù)據(jù)。

  ISP讀取器件ID的過(guò)程

  這里之所以介紹通過(guò)ISP讀取器件ID的過(guò)程,是因?yàn)橥ㄟ^(guò)ISP命令來(lái)燒寫(xiě)程序相對(duì)通過(guò)ISP讀取器件ID來(lái)說(shuō)復(fù)雜很多,而且燒寫(xiě)程序之前往往包含讀取器件ID部分。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: ARM 微處理器 ISP 升級(jí)程序

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉