2011年1月3日 星期一

LPC1100 Senondary Bootloader via UART Xmodem

AN10995 LPC1100 Secondary bootloader

如果內建 ISP功能不能滿足你架構上的需求,該怎麼辦 ?
NXP現在提供一個範例,藉此範例可修改為你需要的通訊介面,透過這介面來更新MCU 內Flash的code.
可惜的是這個Boot loader範例還是走UART.( On chip boot loader也是) .

最近要利用這個改為I2C 介面的boot loader.
所以先試過這個AN.(Application Note.)



操作上不難,準備一套LPCXpresso, RS232.  這之前線路都準備過了,請參考

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

將壓縮檔解開後,匯入LPCXpresso 中
將Application 與 Bootloader 都build過.
使用LPCXpresso 將Bootloader 燒錄到LPCXpresso上的LPC1114
與PC透過RS232連線. 不過這次PC端 RS232 軟體使用視窗內建 Hyper Terminal
Hyper Terminal 設定 9600-8-N-1

這時候應該會再Hyper Terminal 上見到如下圖1

圖1

會見到C每隔一小段時間就出現一個C,這表示鋼材燒錄的Bootloader已經開始運作,等著我們透過RS232 傳送資料,並且作燒錄動作

接著選擇傳送檔案
並如下圖2設定.  通訊協定 1K Xmodem ,選擇Application.bin

圖2

接著按傳送.
傳送完成後,將Hyper Terminal 斷線.這時候會見到LPCXpresso板上的LED2開始閃爍,這就表示2nd boot loader已經完成更新Firmware的動作.

8 則留言:

  1. 請問用Keil MDK測試APP部分
    將code 從0x1000開始放
    並且將 0x1000 開始長度0xC0
    的擺置 0x10000000後remap vetor table
    發現直接測試此code 發現無法執行
    請問有什麼我需要修正的。

    回覆刪除
  2. Hi Naurto,
    你是將an10995 改成用Keil MDK嗎?
    ~MCU diy~

    回覆刪除
  3. Hi,
    是的,因為Bootloader部分的inline assemler有問題,就修正。問Avnet FAE他給了LPC11U14 USB bootloader範例
    修正了App 部分
    用將code 從0x1000開始放
    並且將 0x1000 開始長度0xC0
    這裡用Keil MDK memory 配置設定
    在APPt程式部分0x1000 長度0xC0
    擺置 0x10000000後remap vetor table
    compile可以過 flash 至 target board不會執行。
    還麻煩你建議

    回覆刪除
  4. 我有找到APp不可執行的問題了,
    我必須在ox0000執行時讓code jump到0x1000部分

    請問bootloader中的inline assembler
    在kiel compile時都更我說thumb code
    不支援我要如克服這部分。
    還有我有直接將bootloader部分用
    LPCXpresso v3.6.3_317 引入 compile
    但都發生問題無法成功請問還需設定什麼嗎?

    一位還在學習LPC1114的人

    回覆刪除
  5. Hi Naruto,
    恭喜你找到問題.
    關於你發生問題的地方,單憑你前面的敘述,我還真難猜到問題會是哪裡? 本來還在想請你提供更多資訊.不過還好你已經找到了.

    另外對於你新的問題 LPCXpresso 不能compile bootloader(an10995)的問題,我猜有可能是你只匯入 Bootloader 而忘記其他同樣zip中的其他project,而導致不能compile,不然我想an10995 內的bootloader與 appliciation 我都編譯過,應該是沒問題的.

    ~MCU diy~

    回覆刪除
  6. Hi 版主大大,您好。
    請問這個application note 的code download 到 target 之後,是不是就不能用IDE 來download 和 debug ? 以及之後要加入其他 function,是否都要 based on 這個 bootloader 的 code 再加以發展。
    先謝謝您的回覆。
    BR
    Kevin

    回覆刪除
    回覆
    1. Hi Kevin,
      建議可以做兩個project, 要使用 debugger的 對應原始的memory map.
      就可以正常使用IDE除錯.

      刪除

Related Posts Plugin for WordPress, Blogger...