關於新唐科技NuMicro ISP的介紹和使用方式

目前新唐科技主流的幾款微控制器均支援ICP、ISP及IAP三種燒錄方式,本文主要介紹NuMicro ISP的使用方式並實作。在這之前讓我們先來了解以上三種燒錄方式的差異,但不同的微控制器設計製造商可能對這些名詞有不同的定義。
ICP全稱為"In circuit programming"中文為"在電路上燒錄程式",意思上就是該單晶片可以在工作電壓之下直接進行燒錄。早期的單晶片的程式記憶體為EPROM,更新程式前必須從電路中拔下來以紫外線清洗機將舊有的程式給清除乾淨,再插上燒錄器燒上新的程式。新一點的單晶片(如89C51)內部的程式記憶體為EEPROM,抹除及燒錄需使用12V高壓來進行,雖然可透過電氣的方式抹除舊有的程式並燒錄,但工作電壓5V依然需將其從電路中拔下來。這兩種燒錄方式在開發上都會造成不方便。而近期所出的單晶片則使用Flash Memory作為程式記憶體,能夠在工作電壓下直接進行讀寫、抹除故稱為"In circuit programming"。

ISP全稱為"In system programming"中文為"在系統上燒錄程式",此種燒錄方式是透過微控制器內部的程式對該程式以外的記憶體進行更新,通常會將一段更新用的程式碼放在程式記憶體的開頭或者特定的區塊,我們稱作為Bootloader。以新唐的微控制器舉例,記憶體主要分為LDROM和APROM,LDROM容量不大通常只有4KB,只擺一支小程式讀取UART、USB或其他通訊界面傳進來的的資料,並將這些資料存入APROM以達到更新的目的。所以這種燒錄方式只要在第一次透過燒錄器將Bootloader存入LDROM,往後使用者若要更新程式只要透過UART或者USB即可,無須再使用燒錄器。這個做法就跟Arduino UNO一樣透過Bootloader從UART進行軟體的更新。

#題外話
講到在這邊跟大家分享,我一位教微控制器實習的大學老師,自己設計了一塊課堂要使用的8051開發板,核心晶片使用89C51、用RS-232作為燒錄介面,做實驗時完全不需要將89C51拔下來插上燒錄器。整體的架構大致上就是在89C51裡的EEPROM放個讀取UART的程式並且會將UART的資料放入外部記憶體中,外部記憶體則是一顆16KB的SRAM。使用時完全不須斷電透過一顆搖頭開關切換要執行內部程式記憶體or外部程式記憶體,選擇燒錄或執行使用者程式。

IAP全稱為"In application programming"中文為"在應用上程式設計"。IAP的話比較複雜不單單只做韌體更新而已,IAP的功能最主要是能夠在開啟此功能的情況下能隨時跳至記憶體空間中不同的位址執行程式也能修改其他位址的程式記憶體內容。

Nuvoton - 常見問答/ ISP、ICP以及IAP是什麼功能?
http://www.nuvoton.com/hq/support/faq/2f6694f9-b033-11e4-a0ab-4511a3410ebb
Nuvoton - 技術參考手冊/ TRM_M051(BN_DN_DE)_Series_EN_Rev1.03.pdf (Page146~157)
http://www.nuvoton.com/resource-files/TRM_M051%28BN_DN_DE%29_Series_EN_Rev1.03.pdf

好,那我們現在來實際測試看看ISP的功能。
步驟基本上是
ㄧ、透過ICP燒錄LDROM之ISP bootloader
二、啟用ISP燒錄(PA10 pull low)並連接USB或UART cable
三、打開ISP操作軟體透過ISP燒錄將APROM燒錄進MCU

ㄧ、透過ICP燒錄LDROM之ISP bootloader
首先我們可以在新唐的官網 >> 技術支援 >> 工具和軟體 >> 軟體 >> 燒錄軟體工具 中下載到"ISP Programming Tool V2.03.0621.zip"
http://www.nuvoton.com/hq/support/tool-and-software/software
該壓縮檔中三個資料夾
(1) Application Program: 存放PC端的操作軟體
(2) Nuvoton Standard ISP Code: 存放燒錄至LDROM的韌體,包含binary和source code
(3) User Manual: PC端操作軟體的使用手冊 
本篇我們使用NuTiny-SDK-NUC220做示範,包含透過USB HID Transfer及UART兩種通訊方式進行ISP燒錄
接著我們同樣到新唐官網的燒錄軟體工具下載"ICP_Programming_Tool_V2.02.6629",並將NuMicro ICP Programming Tool安裝完畢。執行後選擇正確的目標晶片(NUC200系列)後按下繼續執行軟體。

接著將NuTiny-SDK-NUC220開發板連接USB線插上電腦,注意可看見開發板的兩端都有USB連接器,其中一邊為Nu-Link-Me ICP燒錄的USB,另一邊為NUC220自身的USB。在此我們要先透過ICP將ISP的bootloader燒錄進LDROM中,故要連接Nu-Link-Me那一端如下。
連接完畢、待作業系統將驅動程式安裝完畢後,就可以點選ICP Programming Tools左上角的連接,連接成功後就會顯示晶片完整的型號、記憶體的容量等資訊
接著我們點選LDROM並將檔案選擇為"NUC200_220_ISP_HID_PA10.bin",這個是透過USB HID Transfer燒錄的程式。
點選配置位欄位中的設定,並將啟動選擇點選成LDROM
最後將編成欄位中勾選LDROM和配置位,其他的不要勾選。完畢後按下右下角的開始將會進行燒錄。過程中可能會詢問是否要更新Nu-Link的韌體,再依指示完成更新步驟即可。

二、啟用ISP燒錄(PA10 pull low)並連接USB或UART cable
\NuMicro_ISP_Programming_Tool_V2.03\(2) Nuvoton Standard ISP Code\Source Code\NUC200BSPv3.zip 中的程式碼可以得知將PA10下拉後可進入ISP燒錄(#define DetectPin                   PA10),另外由UM_NuTiny-SDK-NUC220_EN_Rev1.00.pdf P.12 的電路圖可得知,PA10位在NUC220VE3AN第10腳,故我們將PA10接地後插上USB cable。也可以將USB cable插好之後將PA10接地,此時還是會繼續執行APROM中的程式,按下reset後即可進入LDROM。
 正確連接後打開裝置管理員應可發現多了ㄧ個HID device
接著執行NuvoISP.exe
按下上方的Connect
接著選擇APROM。注意在ISP Tools中只能讀取.bin,不像ICP Tools能自動轉換.hex或其他格式
如要將Keil的輸出檔新增.bin可以在Option for Target >> User >> After Build新增ㄧ段"C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin Objects\@L.axf --output Objects\@L.bin"如下
Config bit的部分也可以設定ㄧ些選項,唯獨開機只能保持LDROM開機
最後將Programming欄位中的APROM、Config bits、Erase勾選起來,按下右下角的Start進行燒錄。燒錄完成後將PA10與GND分離後即可執行APROM中的程式。
---------------------------------------------------------------
如依照上述燒錄LDROM的步驟,只要將將LDROM的程式改為"NUC200_220_ISP_UART0_PB0_PB1.bin",我們則可以透過UART對APROM燒錄。
由於改用UART進行燒錄了,首先我們要先將USB TO TTL插上NUC220的PB0(RXD)及PB1(TXD),USB TO TTL的TXD要對NUC220的RXD、USB TO TTL的RXD要對NUC220的TXD。
USB TO TTL                                                NUC220
             TX -----------------------------------------> RX
             RX <----------------------------------------- TX
一樣我們可以從 UM_NuTiny-SDK-NUC220_EN_Rev1.00.pdf 中看到PB0(RXD)及PB1(TXD)分別位於32及33腳
ISP操作軟的部分要先將介面選擇成UART、也記得將COM PORT選擇至正確的PORT
按下Connect之後會一直在等待的狀態,此時按下TinyBoard上的RESET按鈕就可以讓NUC220重啟從LDROM開機,此時操作軟體也會顯示Connected
最後選擇APROM以後按下右下角的Start即可燒錄完成

ICP、ISP、IAP的功能比較

留言

這個網誌中的熱門文章

無法被取代的指針型三用電表(一):前言

新唐火神板開箱實作(一):NuMaker-Volcano與NuEclipse IDE入門篇