ISP与IAP的区别
ISP(In-System Programming)在系統(tǒng)可編程,指電路板上的空白器件可以編程寫入最終用戶代碼, 而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程。IAP(In-Application Programming) 指MCU可以在系統(tǒng)中獲取新代碼并對(duì)自己重新編程,即可用程序來(lái)改變程序。ISP和IAP技術(shù)是未來(lái)儀器儀表的發(fā)展方向。
?? 1?? ISP和IAP的工作原理
?? ISP的實(shí)現(xiàn)相對(duì)要簡(jiǎn)單一些,一般通用做法是內(nèi)部的存儲(chǔ)器可以由上位機(jī)的軟件通過(guò)串口來(lái)進(jìn)行改寫。對(duì)于單片機(jī)來(lái)講可以通過(guò)SPI或其它的串行接口接收上位機(jī)傳來(lái)的數(shù)據(jù)并寫入存儲(chǔ)器中。所以即使我們將芯片焊接在電路板上,只要留出和上位機(jī)接口的這個(gè)串口,就可以實(shí)現(xiàn)芯片內(nèi)部存儲(chǔ)器的改寫,而無(wú)須再取下芯片。
?? IAP的實(shí)現(xiàn)相對(duì)要復(fù)雜一些,在實(shí)現(xiàn)IAP功能時(shí), 單片機(jī)內(nèi)部一定要有兩塊存儲(chǔ)區(qū),一般一塊被稱為BOOT區(qū),另外一塊被稱為存儲(chǔ)區(qū)。單片機(jī)上電運(yùn)行在BOOT區(qū),如果有外部改寫程序的條件滿足,則對(duì)存儲(chǔ)區(qū)的程序進(jìn)行改寫操作。如果外部改寫程序的條件不滿足,程序指針跳到存儲(chǔ)區(qū),開(kāi)始執(zhí)行放在存儲(chǔ)區(qū)的程序,這樣便實(shí)現(xiàn)了IAP功能。
?? 2?? ISP和IAP在單片機(jī)中的應(yīng)用
?? 2.1 傳統(tǒng)編程方法的不足
?? 在一般的單片機(jī)的實(shí)驗(yàn)或開(kāi)發(fā)時(shí),編程器是必不可少的裝置。仿真、調(diào)試完的程序需要借助編程器燒到單片機(jī)內(nèi)部或外接的程序存儲(chǔ)器中。普通的編程器價(jià)格從幾百元到幾千元不等,對(duì)于一般的單片機(jī)用戶來(lái)說(shuō)還是一筆不小的開(kāi)支。另外,在開(kāi)發(fā)過(guò)程中,程序每改動(dòng)一次就要拔下電路板上的芯片編程后再插上,這樣不但麻煩也很容易對(duì)芯片和電路板造成損傷,另外在程序需要升級(jí)做改動(dòng)時(shí),必須將設(shè)備返廠或是技術(shù)人員到現(xiàn)場(chǎng)操作,既不方便也造成成本浪費(fèi)。
?? 2.2 ISP和IAP的優(yōu)點(diǎn)
?? ISP技術(shù)的優(yōu)勢(shì)是不需要編程器就可以進(jìn)行單片機(jī)的實(shí)驗(yàn)和開(kāi)發(fā),單片機(jī)芯片可以直接焊接到電路板上,調(diào)試結(jié)束即成成品,免去了調(diào)試時(shí)由于頻繁地插入取出芯片對(duì)芯片和電路板帶來(lái)的不便。
?? IAP技術(shù)是從結(jié)構(gòu)上將Flash存儲(chǔ)器映射為兩個(gè)存儲(chǔ)體,當(dāng)運(yùn)行一個(gè)存儲(chǔ)體上的用戶程序時(shí),可對(duì)另一個(gè)存儲(chǔ)體重新編程,之后將程序從一個(gè)存儲(chǔ)體轉(zhuǎn)向另一個(gè)。
?? ISP的實(shí)現(xiàn)一般需要很少的外部電路輔助實(shí)現(xiàn), 而IAP的實(shí)現(xiàn)更加靈活,通常可利用單片機(jī)的串行口接到計(jì)算機(jī)的RS232口,通過(guò)專門設(shè)計(jì)的固件程序來(lái)編程內(nèi)部存儲(chǔ)器,可以通過(guò)現(xiàn)有的INTERNET或其它通訊方式很方便地實(shí)現(xiàn)遠(yuǎn)程升級(jí)和維護(hù)。
?? 2.3 產(chǎn)品分析
?? 目前市場(chǎng)上不少的單片機(jī)具有ISP和IAP功能。
?? ST公司的μPSD32××系列單片機(jī)片內(nèi)帶128KB/256KB的FLASH存儲(chǔ)器及32KB Boot ROM,通過(guò)JTAG串行口能很容易地實(shí)現(xiàn)ISP功能。IAP功能則可由用戶在應(yīng)用中實(shí)現(xiàn)。
?? ATMEL公司的單片機(jī)AT89S8252,提供了一個(gè)SPI串行接口對(duì)內(nèi)部程序存儲(chǔ)器編程(ISP)。SST公司的單片機(jī)SST89C54,其最大的特點(diǎn)內(nèi)部有兩塊獨(dú)立的FLASH存儲(chǔ)器,具有IAP(應(yīng)用中在線編程)功能,對(duì)于8052系列的其它公司的單片機(jī)(ATMEL、 WINBOND、ISSI)可以直接代換,軟硬件無(wú)須做任何改動(dòng)。
?? PHILIPS公司的P89C51RX2xx系列是帶ISP/IAP的8位Flash單片機(jī)。PHILIPS公司為了使ISP技術(shù)和IAP技術(shù)得以推廣,在芯片上免費(fèi)提供了Boot ROM固件,并且巧妙地解決了固件和FLASH的地址覆蓋問(wèn)題及一些具體實(shí)現(xiàn)細(xì)節(jié)問(wèn)題,使它們的實(shí)現(xiàn)變得簡(jiǎn)單。
?? 此外在外圍器件中ST公司的PSD系列產(chǎn)品片內(nèi)帶大容量存儲(chǔ)器,支持ISP及IAP功能。
ISP,In System Programing
?????? 主要是指代芯片的燒寫方式,以往寫片子需要把片子拿下來(lái),離開(kāi)電路,用
???? 編程器燒,換句話說(shuō),芯片不能不脫離應(yīng)用系統(tǒng)進(jìn)行寫入。
?????? ISP 主要針對(duì)這個(gè)問(wèn)題,使用JTAG或者串行口(MCU 內(nèi)部有Boot Loader ,
???? 通過(guò)指定的方式激活之,它可以和PC或其它上位機(jī)通過(guò)串口聯(lián)系,不用使單片
???? 機(jī)離開(kāi)應(yīng)用系統(tǒng)而更新內(nèi)部的程序/設(shè)置)進(jìn)行程序的燒寫操作。
?????? 因此,具有ISP 功能的MCU 可以不使用編程器進(jìn)行編程。當(dāng)然,實(shí)現(xiàn)ISP 可
???? 能需要一些硬件電路支持,具體的在數(shù)據(jù)手冊(cè)中有說(shuō)明。
IAP,In Application Programing
?????? 單片機(jī)內(nèi)部具有一些可擦寫的非易失存儲(chǔ)器,如Flash。在單片機(jī)獨(dú)立運(yùn)行時(shí),
???? 不具備IAP 功能的單片機(jī)并不能對(duì)Flash的數(shù)據(jù)進(jìn)行修改,比如,對(duì)自身的某一
???? 個(gè)模塊的代碼,數(shù)據(jù)進(jìn)行修改。
?????? 具備了IAP 功能的MCU ,能夠通過(guò)使用各自公司開(kāi)發(fā)的技術(shù),對(duì)于自身進(jìn)行修
???? 改。
簡(jiǎn)言之:ISP=>修改MCU 內(nèi)部數(shù)據(jù)需要有外部介入;
?????????? IAP=>修改MCU 內(nèi)部數(shù)據(jù)可以不用外部介入。
二者可以說(shuō)是數(shù)據(jù)更新的一種實(shí)現(xiàn)機(jī)制。
一般具備ISP 功能后,就不要編程器了,而是使用下載線進(jìn)行編程工作。
但是不是說(shuō)他們就一定不支持編程器了,具體型號(hào)具體分析。
是否需要仿真器進(jìn)行仿真和是否具備ISP和IAP沒(méi)有必然的聯(lián)系。
只不過(guò)具備了IAP功能,可以在MCU內(nèi)寫入監(jiān)控程序,模擬一個(gè)仿真器,
當(dāng)然,這個(gè)監(jiān)控程序是要消耗資源的,和使用硬件的仿真器還有一定的差異。
IAP的應(yīng)用,在51上可能比較多,就是SST出的那個(gè)SoftICE功能。
他的MCU 其實(shí)不具備ISP功能,需要使用編程器燒一個(gè)Boot Loader進(jìn)去,
然后,利用IAP功能,就可以通過(guò)串行口下載數(shù)據(jù)了。
SST的那個(gè),使用的是自己開(kāi)發(fā)的一個(gè)SoftICE軟件,和Keil C的Mon51接口。
看DataSheet上說(shuō),先要用編程器燒Boot Loader進(jìn)去,
然后,用串口燒SoftICE進(jìn)去,然后就可以用了。
ISP:in system programming,
IAP: in applicatin programming
但兩者的操作方式,結(jié)果和應(yīng)用場(chǎng)合有什么區(qū)別
ISP:
用寫入器將code燒入,不過(guò),芯片可以在目標(biāo)板上,不用取出來(lái),在設(shè)計(jì)目標(biāo)板的時(shí)候就將接口設(shè)計(jì)在上面,所以叫"在系統(tǒng)編程",即不用脫離系統(tǒng);
IAP:
在應(yīng)用編程,有芯片本身(或通過(guò)外圍的芯片)可以通過(guò)一系列操作將code寫入,比如一款支持Iap的單片機(jī),內(nèi)分3個(gè)程序區(qū),1作引導(dǎo)程序區(qū),2作運(yùn)行程序區(qū),3作下載區(qū),芯片通過(guò)串口接收到下載命令,進(jìn)入引導(dǎo)區(qū)運(yùn)行引導(dǎo)程序,在引導(dǎo)程序下將new code內(nèi)容下載到下載區(qū),下載完畢并校驗(yàn)通過(guò)后再將下載區(qū)內(nèi)容復(fù)制到2區(qū),運(yùn)行復(fù)位程序,則Iap完成;
應(yīng)用場(chǎng)合:
1,ISP 程序升級(jí)需要到現(xiàn)場(chǎng)解決,不過(guò)好一點(diǎn)的是不必拆機(jī)器了;
2,IAP 如果有網(wǎng)管系統(tǒng)的話,用網(wǎng)管下載一切搞定,人不用跑來(lái)跑去,
這可能是他們的優(yōu)點(diǎn)或應(yīng)用吧
典型IAP:IC卡電話機(jī)
內(nèi)含V.xx MODEM芯片,MCU自帶引導(dǎo)區(qū),可遠(yuǎn)程下載更新程序。
========================================================
在線編程目前有兩種實(shí)現(xiàn)方法:在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP)。ISP一般是通過(guò)單片機(jī)專用的串行編程接口對(duì)單片機(jī)內(nèi)部的Flash存儲(chǔ)器進(jìn)行編程,而IAP技術(shù)是從結(jié)構(gòu)上將Flash存儲(chǔ)器映射為兩個(gè)存儲(chǔ)體,當(dāng)運(yùn)行一個(gè)存儲(chǔ)體上的用戶程序時(shí),可對(duì)另一個(gè)存儲(chǔ)體重新編程,之后將控制從一個(gè)存儲(chǔ)體轉(zhuǎn)向另一個(gè)。ISP的實(shí)現(xiàn)一般需要很少的外部電路輔助實(shí)現(xiàn),而IAP的實(shí)現(xiàn)更加靈活,通常可利用單片機(jī)的串行口接到計(jì)算機(jī)的RS232口,通過(guò)專門設(shè)計(jì)的固件程序來(lái)編程內(nèi)部存儲(chǔ)器。
總結(jié),簡(jiǎn)單滴說(shuō),就是ISP是在設(shè)計(jì)板子的時(shí)候留了個(gè)下載程序的口出來(lái),可以通過(guò)這個(gè)口和PC上的燒寫軟件通信,然后直接把程序下載到電路板的MCU上。(MCU的整個(gè)程序系統(tǒng)被更改了喔)而,IAP則需要MCU里面有兩部分程序,一部分事固件程序簡(jiǎn)稱boot,另一部分叫做flash(存用戶代碼的喔),單片機(jī)上電首先運(yùn)行boot再執(zhí)行flash(所以說(shuō)嘛,這個(gè)要求就高了哦,要求 MCU里面有固件,才可以進(jìn)行程序更新重新燒寫flash,刷機(jī)啊~~!!)
總結(jié)
以上是生活随笔為你收集整理的ISP与IAP的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言中malloc、realloc与c
- 下一篇: ARM的流水线与PC值的关系