電子工程師都知道,半導體技術發展迅猛,帶動了各種芯片技術的不斷升級。在數據存儲方面,從最初的掩膜ROM,發展到現在的Flash技術,存儲技術的不斷改進,相對應的編程技術也在不斷發展。 記得老一輩工程師在燒寫51單片機的時候還是用一臺碩大的編程器進行程序下載,而且還是一次性的(OTP),每次都小心謹慎的把代碼調試了又調試后才下載看效果。現在簡單到只需一個串口下載器即可實現程序下載,基本不需要考慮編程次數的問題,一有想法隨時編譯下載更新。 在這個發展過程中,也誕生了很多編程技術,比如ISP、IAP、ICP,另外還有JTAG編程、SWD編程、UART編程等等。玩單片機的對這些詞應該都不陌生,但他們之間有什么區別呢?首先看下他們的定義: ISP:InSystem Programing,在系統編程 ICP:InCircuit Programing,在電路編程 IAP:InApplication Programing,在應用編程 JTAG編程:通過JTAG協議進行編程 SWD編程:通過SWD協議進行編程 UART編程:通過UART進行編程 看似很亂,其實捋清楚他們之間的層次關系就不會亂了。用個圖來形象表示一下: 從圖上看,ISP和ICP是處于最頂層的技術。描述的是一種編程結構,所用使用到的協議、通信端口等,不同芯片有不同的定義。 IAP在第二層,是一種編程方式。實現方式是將一段目標芯片可執行的代碼通過某種通信協議下載到芯片RAM中并由芯片執行,由該代碼實現具體操作以達到編程的目的。這種方式需要芯片支持通過某種通信協議對芯片的RAM進行讀寫并能控制其CPU。這是在編程結構下的一種編程方式,像AK100Pro、SmartPRO5000U-Plus等燒錄器,都用到了這種編程方式。 最下面的是硬件通信協議,UART是最早應用在單片機里面的串行通信技術。JTAG和SWD是ARM內核芯片興起之后,逐漸流行起來的,這三種技術描述的是編程過程中硬件層使用的通信協議,是最底層的一些技術規范。 用一個表格來對比這幾種通信協議的特性: 綜合上面的內容,只要UART、JTAG、SWD這些硬件通信協議能保證電氣連接的規范性和穩定性,那么ISP、IAP就能對芯片正確地編程。
最近在整理客戶的一些疑問,給自己充充電,也跟大家一起學習下。 ISP、ICP、IAP三種編程方式區別: ISP:In SYSTEM Programing,在系統編程 ICP:In CIRCUIT Programing,在電路編程 IAP:Inapplicating Programing,在應用編程 新唐M0提供2種編程模式:ISP和ICP ISP與ICP的差別 For ISP (1)MCU必須處于可執行程序的狀態 (除了上電,還要接XTAL),且必須預燒ISP-code(即ISP LDROM固件)在LDROM里面 (2)燒錄范圍只限于APROM,DataFlash或CONFIG (但對使用者來說,應該夠了!) (3)chip在LOCK的狀態下,仍然可以只更新某一區塊 (APROM, DataFlash或CONFIG) (4)因為燒錄的動作取決于ISP-code的寫法,所以給系統設計者的彈性較大 (5)不需要額外硬件 For ICP (1)MCU只要處于上電狀態即可,不必預燒任何code在MCU里面 (2)燒錄范圍涵蓋整顆MCU,包括APROM, DataFlash, CONFIG, LDROM和 ROMMAP (3)chip在LOCK的狀態下,無法只更新某一區塊,只能在erase-ALL之后,更新某一區塊,再逐一燒回其它區塊(因為ICP的本質就是走串行接口的WriterMode, chip被LOCK之后,除了erase-ALL,所有燒錄動作皆會被禁止) (4)因為燒錄純粹是ICP硬件的行為,MCU無法自己更新自己,所以給系統設計者的彈性較小(例如:無法藉由ICP去實現IAP的功能) (5)需要其他硬件支持(如NU-LINK等) 什么是 IAP(In-Application PROGRAMMING) IAP指的是,MCU在運行的狀態下,利用ISP的機制,不透過外接工具 (例如: ISP Programmer) 的幫忙,去更新APROM, DataFlash或CONFIG.要實現這種功能, 系統必須有取得更新數據的能力,例如:處于某一種聯機的狀態. (注:有時候,ISP/IAP的分別并不是那么清楚!我之前做得一個系統式通過網絡服務器去IAP的) 形象點得描述是: 1、ISP是把房子拆了再重造一間,但是地基保留,那么在造好之前當然是不能住人的啦! 2、ICP是對房子地基與房子的整體重構; 2、IAP是在造好的房子里邊進行一些裝修,當然人可以繼續住啦!
|