單片機的燒錄方式主要可以分爲三種,分別爲ICP(在電路編程)、IAP(在應用編程)以及ISP(在系統編程)。玩單片機的同學都應該聽所說IAP、ICP和ISP這幾個詞,在此小編在幫你們“鞏固”一下知識。首先先來介紹這幾個小夥伴的名字。
- ICP(In Circuit Programing)在電路編程
- ISP(In System Programing)在系統編程
- IAP(In applicating Programing)在應用編程
1、ICP(In Circuit Programing)
使用過新唐單片機的一定知道,新唐單片機配套了一套編程工具,那就是NuMicro_ICP_Programming_Tool。就像ST芯片配置的有J-Flash工具一樣。
使用對應廠家的軟件以及仿真器都可以燒錄程序,目前主流的有Jtag(Joint Test Action Group)以及SWD(Serial Wire Debug)接口。而ICP編程就是以SWD接口進行的。
下圖爲Jtag接口和SWD接口的區別:
執行ICP功能,僅需要3個引腳RESET、ICPDA及 ICPCK。RESET用於進入或退出ICP模式,ICPDA爲數據輸入輸出腳,ICPCK爲編程時鐘輸入腳。用戶需要在系統板上預留VDD、GND以及這三個腳。
新唐官方給了詳細的描述,ICP是指“在電路編程”,PC上運行的軟件“NuMicro ICP編程工具”透過SWD的端口更新晶片內部APROM、LDROM、數據閃存(DataFlash)和目標用戶配置字(Config)芯片。
2、ISP(In System Programing)
ISP是指“在系統上編程”,目標芯片使用USB/UART/SPI/I²C/RS-485/CAN周邊接口的LDROM引導代碼去更新晶片內部APROM、數據閃存(DataFlash)和用戶配置字(Config)。
3、IAP(In applicating Programing)
IAP就是通過軟件實現在線電擦除和編程的方法。IAP技術是從結構上將Flash存儲器映射爲兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之後將程序從一個存儲體轉向另一個。
最後我們以燒錄過程中使用的燒錄工具以及具體案例來詳細介紹這三種燒錄方式。
1、ICP使用SWD接口進行燒錄程序。常用的燒錄工具爲J-Link、ST-Link、Nu-Link。與之配套的燒錄軟件爲J-Flash、NuMicro_ICP_Programming_Tool、st-link utility。
2、ISP是使用引導程序通過USB/UART等接口進行燒錄的,首先就是需要有BoodLoad程序。最常見的燒錄方式就是學習8051單片機時使用的STC-ISP燒錄工具了。
3、IAP就是通過軟件實現在線電擦除和編程的方法,沒有使用任何工具,僅僅是通過軟件的方法來更新Flash中的數據。
講述一個案例,那就是通過4G模塊來遠程更新程序。將Flash分成兩塊區域,第一塊爲Boodload程序,第二塊區域存放的是應用程序APP。4G模塊和目標板通訊,通訊中包含是否更新的位,如果主板接收到需要更新的位,就往Flash中寫入一個標誌位,比如'P',之後程序跳到第一段程序Boodload程序中執行,首先判斷Flash中的是否有更新程序的標誌位'P',如果有則通過規定的協議進行更新應用程序中的程序,更新完畢後清除Flash中的更新標誌位,跳轉到應用程序中去執行。如果沒有更新程序標誌位‘P’,跳到應用程序執行。
總結:
-
ICP:使用SWD接口進行燒錄,如J-Link燒錄器和J-Flash軟件配合使用。
-
ISP:使用引導程序(Bootload)加上外圍UART/USB等接口進行燒錄。
-
IAP:軟件自身實現在線電擦除和編程的方法,不使用任何工具。程序通常分成兩塊,分別爲引導程序和應用程序。
最後我問大家一個問題,在使用IAP編程時候,可否將引導程序和應用程序合成只有一個代碼區的應用程序,這樣還能實現軟件更新嗎?具體又怎麼操作?大家可以思考一下,答案是可行的。