微控制器ISP IAP和ICP幾種燒錄方式的區別

2021-10-23 21:20:21 字數 3683 閱讀 9011

玩微控制器的都應該聽說過這幾個詞。一直搞不太清楚他們之間的區別。今天查了資料後總結整理如下。

isp:in system programing,在系統程式設計

icp:in circuit programing,在電路程式設計

isp是指可以在板級上進行程式設計,也就是不用拆晶元下來,寫的是整個程式,一般是通過isp介面線來寫。

iap雖然同樣也是在板級上進行程式設計,但是是自已對自已進行程式設計,在應用中進行程式設計,也即可以只是更改某一部分而不影響系統的其它部分,另外介面程式是自已寫的,這樣可以進行遠端公升級而不影響應用。

打個比喻吧:

1、isp是把房子拆了再重造一間,那麼在造好之前當然是不能住人的啦!

2、iap是在造好的房子裡邊進行一些裝修,當然人可以繼續住啦!

icp是在電路程式設計,是lpc晶元的程式設計方式,相當於atmel的isp,而lpc的isp就相當於atmel的iap了。

isp於iap的區別

isp:in system programming, 在系統程式設計

但兩者的操作方式,結果和應用場合有什麼區別

什麼是isp:

用寫入器將code燒入,不過,晶元可以在目標板上,不用取出來,在設計目標板的時候就將介面設計在上面,所以叫"在系統程式設計",即不用脫離系統;

什麼是iap:

應用場合:

1,isp 程式公升級需要到現場解決,不過好一點的是不必拆機器了;

這可能是他們的優點或應用吧

isp和iap最大的不同是:由誰來觸發。

isp有4種觸發方式:

1.由外部硬體電路:如vdd保持高電平,給rst連續3個脈衝;

2.檢測狀態位:如ispen,為0時pc指標從0000h開始執行;為1時,通過「引導向量」計算出「isp**」的位置。每次復位後都會檢測該狀態位;

3.中止控制符訊號觸發晶元復位:中止控制符訊號就是指在非同步序列口的接收腳上出現長 達一幀長度的低電平,這裡一幀的長度與非同步序列口的工作模式有關。

4.直接呼叫isp:使用者程式也可以呼叫,但是很危險。

4種方式的目的是相同的——進入isp子程式,比如philips出廠的isp子程式在1e00h-1fffh,只要能引導pc指標指向1e00h就可以了。

而進入isp**的目的是:進入bootrom。

iap的觸發比較簡單一些,沒有外部觸發。通過一些指示位(sst為sc0/sc1、sfcf;philips為一段iap子程式,儲存在ff00h~ffffh位址空間中),達到引導到bootrom的目的。

殊途同歸,isp、iap所進入的bootrom裡面駐留的boot**,才是最終目標。

用lpc2000的iap,你自己分配好flash空間,指定乙個block用來存放你的資料,然後通過iap進行寫操作。每次開機後,從這個block讀你的資料。

iap的實現

通常在使用者需要實現iap功能時,即使用者程式執行中作自身的更新操作,需要在設計韌體程式時編寫兩個專案**,第乙個專案程式不執行正常的功能操作,而只是通過某種通訊管道(如usb、usart)接收程式或資料,執行對第二部分**的更新;第二個專案**才是真正的功能**。這兩部分專案**都同時燒錄在user flash中,當晶元上電後,首先是第乙個專案**開始執行,它作如下操作:

1)檢查是否需要對第二部分**進行更新

2)如果不需要更新則轉到4)

3)執行更新操作

4)跳轉到第二部分**執行

第一部分**必須通過其它手段,如jtag或isp燒入;第二部分**可以使用第一部分**iap功能燒入,也可以和第一部分**一道燒入,以後需要程式更新是再通過第一部分iap**更新。

對於stm32來說,因為它的中斷向量表位於程式儲存器的最低位址區,為了使第一部分**能夠正確地響應中斷,通常會安排第一部分**處於flash的開始區域,而第二部分**緊隨其後。

在第二部分**開始執行時,首先需要把cpu的中斷向量表映像到自己的向量表,然後再執行其他的操作。

如果iap程式被破壞,產品必須返廠才能重新燒寫程式,這是很麻煩並且非常耗費時間和金錢的。針對這樣的需求,stm32在對flash區域實行讀保護的同時,自動地對使用者flash區的開始4頁設定為寫保護,這樣可以有效地保證iap程式(第一部分**)區域不會被意外地破壞。

isp的實現相對要簡單一些,一般通用做法是內部的儲存器可以由上位機的軟體通過串列埠來進行改寫。對於微控制器來講可以通過spi或其它的序列介面接收上位機傳來的資料並寫入儲存器中。所以即使我們將晶元焊接在電路板上,只要留出和上位機介面的這個串列埠,就可以實現晶元內部儲存器的改寫,而無須再取下晶元。

iap的實現相對要複雜一些,在實現iap功能時,微控制器內部一定要有兩塊儲存區,一般一塊被稱為boot區,另外一塊被稱為儲存區。微控制器上電執行在boot區,如果有外部改寫程式的條件滿足,則對儲存區的程式進行改寫操作。如果外部改寫程式的條件不滿足,程式指標跳到儲存區,開始執行放在儲存區的程式,這樣便實現了iap功能。

2.1 傳統程式設計方法的不足

在一般的微控制器的實驗或開發時,程式設計器是必不可少的裝置。**、除錯完的程式需要借助程式設計器燒到微控制器內部或外接的程式儲存器中。普通的程式設計器**從幾百元到幾千元不等,對於一般的微控制器使用者來說還是一筆不小的開支。另外,在開發過程中,程式每改動一次就要拔下電路板上的晶元程式設計後再插上,這樣不但麻煩也很容易對晶元和電路板造成損傷,另外在程式需要公升級做改動時,必須將裝置返廠或是技術人員到現場操作,既不方便也造成成本浪費。

2.2 isp和iap的優點

isp技術的優勢是不需要程式設計器就可以進行微控制器的實驗和開發,微控制器晶元可以直接焊接到電路板上,除錯結束即成成品,免去了除錯時由於頻繁地插入取出晶元對晶元和電路板帶來的不便。

iap技術是從結構上將flash儲存器對映為兩個儲存體,當執行乙個儲存體上的使用者程式時,可對另乙個儲存體重新程式設計,之後將程式從乙個儲存體轉向另乙個。

isp的實現一般需要很少的外部電路輔助實現,而iap的實現更加靈活,通常可利用微控制器的序列口接到計算機的rs232口,通過專門設計的韌體程式來程式設計內部儲存器,可以通過現有的internet或其它通訊方式很方便地實現遠端公升級和維護。

2.3 產品分析

目前市場上不少的微控制器具有isp和iap功能。

st公司的μpsd32××系列微控制器片內帶128kb/256kb的flash儲存器及32kb boot rom,通過jtag序列口能很容易地實現isp功能。iap功能則可由使用者在應用中實現。

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或其它上位機通過串列埠聯絡,不用使微控制器離開應用系統而更新內部的程式/設定)進行程式的燒寫操作。

單片微控制器

微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...

單片微控制器

微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...

微控制器及微控制器系統

微控制器及微控制器系統 1 什麼是微控制器?微控制器是將 處理器 cpu 隨機儲存器 ram 唯讀儲存器 rom或eprom 定時器晶元和一些輸入 輸出介面電路整合在乙個晶元上的微控制器 microcontroller 處理器包括運算器 控制器和暫存器3個主要部分,是微控制器的核心。儲存器按工作方式...