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