ISP IAP ICP JTAG SWD的程式設計特點

2021-07-29 16:28:15 字數 1943 閱讀 1732

分享從eeworld看到的乙個有用的小經驗

電子工程師都知道,半導體技術發展迅猛,帶動了各種晶元技術的不斷公升級。在資料儲存方面,從最初的掩膜rom,發展到現在的flash技術,儲存技術的不斷改進,相對應的程式設計技術也在不斷發展。

在這個發展過程中,也誕生了很多程式設計技術,比如isp、iap、icp,另外還有jtag程式設計、swd程式設計、uart程式設計等等。玩微控制器的對這些詞應該都不陌生,但他們之間有什麼區別呢?首先看下他們的定義:

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

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

jtag程式設計:通過jtag協議進行程式設計

swd程式設計:通過swd協議進行程式設計

uart程式設計:通過uart進行程式設計

看似很亂,其實捋清楚他們之間的層次關係就不會亂了。用個圖來形象表示一下:

從圖上看,isp和icp是處於最頂層的技術。描述的是一種程式設計結構,所用使用到的協議、通訊埠等,不同晶元有不同的定義。

最下面的是硬體通訊協議,uart是最早應用在微控制器裡面的序列通訊技術。jtag和swd是arm核心晶元興起之後,逐漸流行起來的,這三種技術描述的是程式設計過程中硬體層使用的通訊協議,是最底層的一些技術規範。

用乙個**來對比這幾種通訊協議的特性:

綜合上面的內容,只要uart、jtag、swd這些硬體通訊協議能保證電氣連線的規範性和穩定性,那麼isp、iap就能對晶元正確地程式設計。

進一步辨析一下isp和iap兩個概念:

什麼是isp: 

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

什麼是iap: 

在應用程式設計,有晶元本身(或通過外圍的晶元)可以通過一系列操作將code寫入,比如一款支援iap的微控制器及給程式儲存器程式設計的**(或是處理器外部提供的執行**),然後通過某種與pc計算機的通訊方式(如,ether網口),將使用者指定的某個在pc上編譯完成的mcu可執行的二進位制**檔案程式設計入mcu內的程式儲存器。

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[1,0];philips為一段iap子程式,儲存在ff00h~ffffh位址空間中),達到引導到bootrom的目的。

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

最後一種:並行程式設計模式。不需要bootrom,直接設定晶元的多個引腳來讓晶元識別命令(如:擦除、寫入、驗證等),從p口傳位址、資料,就可以寫入flash

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

Linux系統程式設計之sigaction特性演示

1 驗證在訊號處理函式期間,該訊號多次遞送,那麼只在處理之行結束後,處理一次 include include include void catch sig int num int main while 1 return 0 輸出 這說明在訊號處理函式期間,該訊號多次遞送,那麼只在處理之行結束後,處理...

特基礎特基礎的東西隨便寫寫

include include include using namespace std 定義人類 person 資料成員 m strname 成員函式 attack class person 定義士兵類 soldier 士兵類公有繼承人類 資料成員 m strname 成員函式 attack cla...

生命的特度

rel file list href file c 5cdocume 7e1 5cthreed 7e1 5clocals 7e1 5ctemp 5cmsohtmlclip1 5c01 5cclip filelist.xml rel edit time data href file c 5cdocum...