2010年11月19日 星期五

怎麼更新LPC1114 中的firmware? (2/2) ISP/UART

上一篇文章提到"怎麼更新LPC1114 中的firmware? (1/2) LPC-LINK"後,又提到 ISP (In System Programming) 方式.
不過因為在開始說明操作步驟前要先完成幾件事情:
  1. 下載 Flash Magic ,並且安裝.許多NXP的MCU都可透過這個軟體更新MCU內Flash code.若有新的MCU,Flash Magic會很快的被更新,所以記得要去下載新版本.
  2. 檢查你的PC/NB有沒有COM PORT? 若沒有,則要去購買USB 轉COM Port的線材.
  3. DIY RS232(COM) level shift ,以及兩個按鈕.接到 MCU的RESET及ISP 兩個pin腳.線路如(圖1)
  4. 將LPCXpresso project設定能build出 Hex檔案(因為Flash Magic只讀這種格式)

(圖1)

   
看看上面步驟3以及圖1.花了我不少時間,還有金錢去完成.
現在終於可以繼續進行.(可見有LPCXpresso真的是很方便啊).

假設你步驟 1~3 都完成了,那現在你應該可以啟動Flash Magic見到下圖2的畫面.

(圖2)

還有一個LPCXpresso 加上DIY 的Base Board 如圖3.當然不同規劃,所以你的板子可能不是長成醬.

(圖3)
線路都確認過後.將USB接上,目前電源都由USB透過LPCXpresso供應.
LPCXpresso (LPC1114) 的線路圖以及兩邊腳位定義請參考 線路圖 (PDF檔案).

接著要怎麼測試連線有沒有問題?
  1. 接上USB,若在這之前你試過Blinky的專案,那LPCXpresso上的LED2應該開始bling-bling的閃了
  2. 按下線路圖(圖1)中的K2,也就是ISP按鍵
  3. 再按下K1,也就是RESET按鍵
  4. 再來K1/K2都可以放開,這時候LED2應該就不會閃爍,因為已經進入ISP mode
  5. 開啟Flash Magic,見圖2.
  6. (Step1-Communications )中選擇Select Device ,選 ARM Cortex-> LPC1114/301
  7. (Step1-Communications )中選擇COM PORT,例如我是使用USB TO COM,查是COM6
  8. (Step1-Communications )中設定Baud Rate :115200
  9. (Step1-Communications )中設定Interface : None(ISP)
  10. (Step1-Communications )中設定Oscillator(MHz): 12
  11. 先使用上方ISP-> Read Device Signature,若硬體接線與操作都正確會出現圖4 中訊息,表示已經進入ISP mode且通訊正常
(圖4)

到這裡ISP 更新Flash code就幾乎快完成了.
但是還記得一開始提的4個步驟中的第4點. "將LPCXpresso project設定能build出 Hex檔案(因為Flash Magic只讀這種格式)" .
這裡需要在使用LPCXpresso IDE,如何在LPCXpresso build 後產生Hex file:
  1. 在Project view裡選取Blinky專案後滑鼠右鍵功能的最後一項Properties或是'Alt+Enter' ,會出現Properties for Blinky
  2. C/C++ Build -> Settings -> Build Steps -> Post-build steps -> Command: 內文 "arm-none-eabi-size ${BuildArtifactFileName};# arm-none-eabi-objcopy -O ihex ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.hex ; " 
  3. 將上面那個 # 刪除 , 或是加入2.中#之後的文字. Apply 後 OK. (圖5)
  4. 重新再Build一次 Blinky
  5. 就會在Debug內找到 blinky.hex (圖6)
(圖5)
(圖6)
Hex file已經產生了,再回到Flash Magic.
Step1的部分前面在測試連線的時候已經設定過,設定值是會被保留.所以可以不用再作設定.
若還沒設定過就逐步檢查設定.
  1. (Step1-Communications )中選擇Select Device ,選 ARM Cortex-> LPC1114/301
  2. (Step1-Communications )中選擇COM PORT,例如我是使用USB TO COM,查是COM6
  3. (Step1-Communications )中設定Baud Rate :115200
  4. (Step1-Communications )中設定Interface : None(ISP)
  5. (Step1-Communications )中設定Oscillator(MHz): 12
  6. (Step2 - Erase ) 勾選 Erase all Flash+Code Rd Prot
  7. (Step3 - Hex File) Browse ,選擇你的workspace下,Blinky\Debug\blink.hex
  8. (Step4 - Options) 勾選Verify after programming
  9. (Step5 - Start! ) 按下Start! 就開始更新Flash動作 
  10. 注意左下方狀態欄,會有進度與狀況回報
  11. 更新與驗證完成後,按下K1作RESET動作,MCU就開始執行新的code

2 則留言:

  1. 請問一下,LPC1114的UART如何做receive?
    是不是有sample code?

    回覆刪除
  2. Hi,
    http://ics.nxp.com/support/lpcxpresso/ 你可以找lpc1114 sample code 其中 project "uart" 裡面就包含T/R. 你可以參考.
    ~MCU diy~

    回覆刪除

Related Posts Plugin for WordPress, Blogger...