微控制器三種燒錄方式ISP、IAP和ICP有什麼不同?
「來源: |strongerHuang ID:strongerHuang」
編排 | strongerHuang
微信公眾號 | 嵌入式專欄
學習微控制器的同學,或多或少都聽說過ISP、IAP和ICP,都是對微控制器進行程式設計,下面簡單來說下這幾個內容以及區別。
ISP
ISP:In System Programing,在系統程式設計。
ISP 是指可以在板級上進行程式設計,也就是不用拆晶片下來,寫的是整個程式,一般是通過 ISP 介面線來寫。
支援ISP的晶片一般在晶片內部固化了一段(用ISP升級的)boot程式。
比如:使用STC-ISP對STC晶片程式設計,利用Flash loader對STM32程式設計等。
ICP
ICP:In Circuit Programing,在電路程式設計。
ICSP:In-Circuit Serial Programming,在電路序列程式設計。如:對EEPROM程式設計等。
ICP程式設計方式網上各有說法,從字面含義(在電路)來說,所有處於程式設計的晶片都需要上電,都處於電路中。不嚴格來說利用J-Link、ST-Link、e-Link32等工具進行程式設計也屬於在電路程式設計(ICP)。
在維基百科中,ISP(在系統程式設計),也稱為在電路序列程式設計(ICSP)。
IAP
IAP:In applicaTIng Programing,在應用程式設計。在程式執行的過程中進行程式設計(升級程式,更新韌體)。
IAP是使用者自己的程式在執行過程中對User Flash的部分割槽域進行燒寫,目的是為了在產品釋出後可以方便地通過預留的通訊口對產品中的韌體程式進行更新升級。[來自:百度百科]
IAP通訊口
IAP的通訊口有許多種:UART串列埠、ETH乙太網、I2C、SPI......等。按理說只要能傳輸資料的通訊口都能實現IAP的功能。
IAP的應該非常廣泛,可以參考我之前分享的一篇文章:STM32官方IAP例程詳細說明,以及Demo演示
ISP 與 IAP 的區別
1.打個比喻吧
1、ISP 是把房子拆了再重造一間,那麼在造好之前當然是不能住人的啦!
2、IAP 是在造好的房子裡邊進行一些裝修,當然人可以繼續住啦!
2.應用場合
1,ISP 程序升級需要到現場解決,不過好一點的是不必拆機器了;
2,IAP 如果有網管系統的話,用網管下載一切搞定,人不用跑來跑去,
3.ISP 和 IAP 的工作原理
ISP 的實現相對要簡單一些,一般通用做法是內部的儲存器可以由上位機的軟體通過串列埠來進行改寫。對於微控制器來講可以通過 SPI 或其它的序列介面接收上位機傳來的資料並寫入儲存器中。所以即使我們將晶片焊接在電路板上,只要留出和上位機介面的這個串列埠,就可以實現晶片內部儲存器的改寫,而無須再取下晶片。
IAP 的實現相對要複雜一些,在實現 IAP 功能時,微控制器內部一定要有兩塊儲存區,一般一塊被稱為 BOOT 區,另外一塊被稱為儲存區。微控制器上電執行在 BOOT 區,如果有外部改寫程式的條件滿足,則對儲存區的程式進行改寫操作。如果外部改寫程式的條件不滿足,程式指標跳到儲存區,開始執行放在儲存區的程式,這樣便實現了 IAP 功能。
4.ISP 和 IAP 的優點
ISP 技術的優勢是不需要程式設計器就可以進行微控制器的實驗和開發,微控制器晶片可以直接焊接到電路板上,除錯結束即成成品,免去了除錯時由於頻繁地插入取出晶片對晶片和電路板帶來的不便。
IAP 技術是從結構上將 Flash 儲存器對映為兩個儲存體,當執行一個儲存體上的使用者程式時,可對另一個儲存體重新程式設計,之後將程式從一個儲存體轉向另一個。
ISP 的實現一般需要很少的外部電路輔助實現,而 IAP 的實現更加靈活,通常可利用微控制器的序列口接到計算機的 RS232 口,通過專門設計的韌體程式來程式設計內部儲存器,可以通過現有的 INTERNET 或其它通訊方式很方便地實現遠端升級和維護。
免責宣告:本文素材來源網路,版權歸原作者所有。如涉及作品版權問題,請與我聯絡刪除。
------------ END------------