ISP、IAP、ICP的区别!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ISP、IAP、ICP燒寫方式的區(qū)別
ISP:In System Programing ? ? ? ? ?在系統(tǒng)編程
IAP:In applicating Programing ? ?在應(yīng)用編程
ICP:In Circuit Programing ? ? ? ? ? 在電路編程
注意:片內(nèi)flash存儲(chǔ)器的編程可以通過以下方法來實(shí)現(xiàn):
(1)通過串口USART0進(jìn)行在線系統(tǒng)編程(ISP)。
(2)通過通用嵌入片內(nèi)的固化代碼進(jìn)行的在應(yīng)用編程(IAP)。
(3)通過內(nèi)置的JTAG接口進(jìn)行編程。
ISP、IAP、ICP的區(qū)別:
1、ISP是把房子拆了再重造一間,那么在造好之前當(dāng)然是不能住人的啦!
2、IAP是在造好的房子里邊進(jìn)行一些裝修,裝修的時(shí)候人還住在里面!
3、ICP是在電路編程,是LPC芯片的編程方式,相當(dāng)于ATMEL的ISP,而LPC的ISP就相當(dāng)于ATMEL的IAP了。
ISP是指可以在板級(jí)上進(jìn)行編程,而不用把芯片拆下來放到燒寫器中,即不脫離系統(tǒng),所以稱作“在系統(tǒng)編程”,它是對(duì)整個(gè)程序的擦除和寫入,通過單片機(jī)專用的串行編程接口對(duì)單片機(jī)內(nèi)部的Flash存儲(chǔ)器進(jìn)行編程。即使芯片焊接在電路板上,只要留出和上位機(jī)接口的串行口就能進(jìn)行燒寫。
IAP同樣是在板級(jí)上進(jìn)行編程,MCU獲取新代碼并對(duì)程序的某部分重新編程,即可用程序來改變程序,修改程序的一部分達(dá)到升級(jí)、消除bug的目的,而不影響系統(tǒng)的其它部分,燒寫過程中程序可以繼續(xù)運(yùn)行,另外接口程序是自已寫的,這樣可以進(jìn)行遠(yuǎn)程升級(jí)而不影響應(yīng)用。IAP的實(shí)現(xiàn)更加靈活,通常可利用單片機(jī)的串行口接到計(jì)算機(jī)的RS232口,通過專門設(shè)計(jì)的固件程序來編程內(nèi)部存儲(chǔ)器。
IAP的實(shí)現(xiàn)
程序運(yùn)行在CPU內(nèi)部的高速Flash時(shí)無法完成內(nèi)部Flash中代碼的更新,為解決此問題,IAP從結(jié)構(gòu)上將Flash存儲(chǔ)器映射為兩個(gè)存儲(chǔ)體——應(yīng)用boot區(qū)和程序存儲(chǔ)區(qū),在設(shè)計(jì)固件程序時(shí)編寫兩個(gè)項(xiàng)目代碼,第一個(gè)項(xiàng)目程序存放在應(yīng)用boot區(qū),不執(zhí)行正常的功能操作,而只是通過某種通信管道(如USB、USART)接收程序或數(shù)據(jù),執(zhí)行對(duì)第二部分代碼的更新;第二個(gè)項(xiàng)目代碼才是真正的功能代碼,存放在程序存儲(chǔ)區(qū)。這兩部分項(xiàng)目代碼都同時(shí)燒錄在User Flash中,當(dāng)芯片上電后,首先運(yùn)行應(yīng)用boot區(qū)程序,它作如下操作:
1)檢查是否需要對(duì)第二部分代碼進(jìn)行更新
2)如果不需要更新則轉(zhuǎn)到4)
3)執(zhí)行更新操作
4)跳轉(zhuǎn)到第二部分代碼執(zhí)行。
應(yīng)用boot區(qū)代碼為一個(gè)簡(jiǎn)單的應(yīng)用程序,實(shí)現(xiàn)從外部Flash導(dǎo)入應(yīng)用程序代碼以及向應(yīng)用程序代碼區(qū)入口跳轉(zhuǎn)的功能。應(yīng)用boot通常存放在CPU內(nèi)部Flash的開始部分,必須通過其它手段,如JTAG或ISP燒入,而且一旦寫入后不再修改。
程序存儲(chǔ)區(qū)代碼可以使用第一部分代碼IAP功能燒入,也可以和第一部分代碼一道燒入,以后需要程序更新時(shí)再通過第一部分IAP代碼更新。
對(duì)于STM32來說,因?yàn)樗闹袛嘞蛄勘砦挥诔绦虼鎯?chǔ)器的最低地址區(qū),為了使第一部分代碼能夠正確地響應(yīng)中斷,第一部分代碼通常位于Flash的開始區(qū)域(bootloader),而第二部分代碼緊隨其后。在第二部分代碼開始執(zhí)行時(shí),首先需要把CPU的中斷向量表映像到自己的向量表,然后再執(zhí)行其他的操作。
如果IAP程序被破壞,產(chǎn)品必須返廠才能重新燒寫程序,這是很麻煩并且非常耗費(fèi)時(shí)間和金錢的。針對(duì)這樣的需求,STM32在對(duì)Flash區(qū)域?qū)嵭凶x保護(hù)的同時(shí),自動(dòng)地對(duì)用戶Flash區(qū)的開始4頁(yè)設(shè)置為寫保護(hù),這樣可以有效地保證IAP程序(第一部分代碼)區(qū)域不會(huì)被意外地破壞。
ISP、IAP、ICP與傳統(tǒng)燒寫方式的區(qū)別
1)在開發(fā)階段
改code時(shí), 不再需要將MCU從板子上拔起來, 拿到燒錄器上燒, 然后再裝回去. 可以直接利用ISP/ICP Programmer做板上燒錄, 為開發(fā)者提供了極大的便利性.
2)在量產(chǎn)階段
客戶可以采用”先焊到板子上再燒code”的方式, 將燒code的動(dòng)作安排在生產(chǎn)線的某一站.
那么傳統(tǒng)的方式 (先將code燒好再焊到板子上)有什么缺點(diǎn)?
傳統(tǒng)的方式是這樣的: 拆封–>從tray盤取出chip–>燒錄–>把chip放回tray盤.
這樣的流程比起上面建議的方式: 增加了燒錄時(shí)間, 容易造成QFP包裝的chip彎腳, 或忘了燒code即放回tray盤.
3)在成品階段
已組裝好的成品若要改code, 可以透過預(yù)留的接口, 利用ISP或ICP, 更新MCU, 不需要拆機(jī).
什么是 IAP (In-Application Programming)?
IAP指的是, MCU在運(yùn)行的狀態(tài)下, 利用ISP的機(jī)制, 不透過外接工具 (例如: ISP Programmer) 的幫忙, 去更新APROM, DataFlash 或 CONFIG. 要實(shí)現(xiàn)這種功能,
系統(tǒng)必須有取得更新數(shù)據(jù)的能力, 例如: 處于某一種聯(lián)機(jī)的狀態(tài).
(注: 有時(shí)候, ISP/IAP的分別并不是那么清楚!)
ISP與ICP的差別
For ISP
(1) MCU必須處于可執(zhí)行程序的狀態(tài) (除了上電, 還要接XTAL), 且必須預(yù)燒ISP-code在LDROM里面
(2) 燒錄范圍只限于APROM, DataFlash或CONFIG (但對(duì)使用者來說, 應(yīng)經(jīng)夠了!)
(3) chip在LOCK的狀態(tài)下, 仍然可以只更新某一區(qū)塊 (APROM, DataFlash或CONFIG)
(4) 因?yàn)闊浀膭?dòng)作取決于ISP-code的寫法, 所以給系統(tǒng)設(shè)計(jì)者的彈性較大
For ICP
(1) MCU只要處于上電狀態(tài)即可, 不必預(yù)燒任何code在MCU里面
(2) 燒錄范圍涵蓋整顆MCU, 包括 APROM, DataFlash, CONFIG, LDROM 和 ROMMAP
(3) chip在LOCK的狀態(tài)下, 無法只更新某一區(qū)塊, 只能在erase-ALL之后, 更新某一區(qū)塊, 再逐一燒回其它區(qū)塊(因?yàn)镮CP的本質(zhì)就是走串行接口的Writer Mode, chip被LOCK之后, 除了erase-ALL, 所有燒錄動(dòng)作皆會(huì)被禁止)
(4) 因?yàn)闊浖兇馐荌CP硬件的行為, MCU無法自己更新自己, 所以給系統(tǒng)設(shè)計(jì)者的彈性較小(例如: 無法藉由ICP去實(shí)現(xiàn)IAP的功能)
ISP與ICP的使用場(chǎng)合
依這兩者的特性, 配合客戶的系統(tǒng)需求, 而后才建議客戶使用ISP或ICP.
注:上述差別的第(3)點(diǎn)和第(4)點(diǎn), 可能是ICP帶給使用者的最大限制. 站在使用者的觀點(diǎn), 若ISP與ICP只能擇一的話, ISP會(huì)是必要的選擇。
目前市場(chǎng)上不少的單片機(jī)具有ISP/IAP功能
ATMEL公司的單片機(jī)AT89SXXXX系列,提供了一個(gè)SPI串行接口對(duì)內(nèi)部程序存儲(chǔ)器編程(ISP)。
ATMEL公司的單片機(jī)AVR系列,提供了一個(gè)SPI串行接口對(duì)內(nèi)部程序存儲(chǔ)器編程(ISP)。
PHILIPS 公司的P89C51RX2xx系列是帶ISP/IAP的8位Flash單片機(jī)。PHILIPS公司為了使ISP技術(shù)和IAP技術(shù)得以推廣,在芯片上免費(fèi)提供了Boot ROM固件,并且巧妙地解決了固件和FLASH的地址覆蓋問題及一些具體實(shí)現(xiàn)細(xì)節(jié)問題,使它們的實(shí)現(xiàn)變得簡(jiǎn)單。
ST公司的μPSD32××系列單片機(jī)片內(nèi)帶128KB/256KB的FLASH存儲(chǔ)器及32KB Boot ROM,通過JTAG串行口能很容易地實(shí)現(xiàn)ISP功能,IAP功能則可由用戶在應(yīng)用中實(shí)現(xiàn)。
SST公司的單片機(jī)SST89C54,其最大的特點(diǎn)內(nèi)部有兩塊獨(dú)立的FLASH存儲(chǔ)器,具有IAP功能,對(duì)于8052系列的其它公司的單片機(jī)(ATMEL、 WINBOND、ISSI)可以直接代換,軟硬件無須做任何改動(dòng)。
PHILIPS公司的P89C51RX2xx系列是帶ISP/IAP的8位Flash單片機(jī)。PHILIPS公司為了使ISP技術(shù)和IAP技術(shù)得以推廣,在芯片上免費(fèi)提供了Boot ROM固件,并且巧妙地解決了固件和FLASH的地址覆蓋問題及一些具體實(shí)現(xiàn)細(xì)節(jié)問題,使它們的實(shí)現(xiàn)變得簡(jiǎn)單。
很多家公司的單片機(jī)都具備ISP功能,ISP在單片機(jī)領(lǐng)域的應(yīng)用成為了必然的趨勢(shì)。此外在外圍器件中ST公司的PSD系列產(chǎn)品片內(nèi)帶大容量存儲(chǔ)器,支持ISP及IAP功能。
總結(jié)
以上是生活随笔為你收集整理的ISP、IAP、ICP的区别!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在windows下 格式化SD卡或U盘最
- 下一篇: CMSIS对异常和中断标识符、中断处理函