摘要
TI 的MSP430支持在主程序中加載Bootloader的方式進行在線升級操作,通過在線升級功能,客戶可以通過外部處理器隨時更新MSP430內部的程序及Bug 的遠程修復。同時TI也提供了基于MSP430G2553的參考代碼,本文詳細的介紹了如何將MSP430G2553的Bootloader移植到MSP430G2755中,使用MSP 430G2553 Host對MSP430G2755 Device進行的升級操作。
本文基于MS430G2755為目標升級對象,詳細講述BootLoader的使用方法,并給出了具體的移植步驟。
Figure1為MSPBoot軟件框架,本文的分析都是基于這個典型軟件框架。
Figure1. MSPBoot軟件框架路
1. MSP430 Main Memory Bootloader 介紹
在MSP430G2xx 中實際上具有一個ROM版本的BSL(Bootloader) ,但是這個BSL僅僅支持外部MCU通過UART進行在線升級,而且而且所有的協議全部固化,無法進行修改或者更改其他接口方式進行升級操作。所以這個需要一個可以在主程序中運行的Bootloader,可以讓外部MCU進行用戶自定義的升級操作。同時TI也提供了一個基于MSP430G2553的參考例程,可以通過如下鏈接進行下載。http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPBoot/latest/index_FDS.html
本文使用的參考代碼版本為MSPBoot_1_01_00_00。
2.MSPBoot的代碼移植流程
2.1MS430G2755 CMD文件的產生
首先用Per工具產生CMD文件(Generating Linker Files), 通過Per的工具會產生兩個CMD文件,其中一個給MSP430G2755的Bootloader使用,另一個給MSP430G2755的應用程序使用。操作指令如下:
?這里面有幾個重要的參數說明如下,
<0x8000 > = Start address of Flash/FRAM
對于MSP430G2553 地址為0xC000 , 而MSP430G2755的地址需要修改為0x8000
<0xFFE0 > = Address of interrupt vector table
中斷向量表的地址0xFFE0, 對于MSP430G2553和MSP430G2755相同
<0xFC00> = Start address of Bootloader
Bootloader的起始地址0xFC00,對于兩者也是相同的
<48 > =Size of the proxy table
這里的48對應于12個中斷向量,每個中斷向量占用4Byte
<6> = Size of shared vectors
在應用程序中一共有3個(P1/Time/Dummy)中斷向量,每個中斷向量占用2Byte, 對應參數為6
<0x1100> = Start address of RAM
RAM的起始地址也需要修改為MSP430G2755的0x1100
<0x20FF > = End address of RAM
RAM的結束地址也需要修改為MSP430G2755的0x20FF
<0x80> = Size of the stack
MSP430G2755默認的堆棧大小為0x80
<0x1000> = Start address of info memory used for bootloader
Information的起始和結束地址MSP430G2553和MSP430G2755一致,無需修改
<0x10BF > = End address of info memory used for bootloader
Information的起始和結束地址MSP430G2553和MSP430G2755一致,無需修改
注意如上修改的參數6,及中斷向量的數量,在Bootloader中的中斷向量不需要修改,只修改MSP430G2755應用程序App中的中斷向量即可,通過下圖可以直觀看到中斷向量的在Bin文件中的分布。
Figure1.MSP430G2755中斷向量
Figure2. MSP430G2755 Bin文件對應虛擬中斷向量表
注意在這里的809C 和80E2 就對應MSP430G2755應用程序中的P1_Isr 和Timer_A,GPIO中斷和定時器中斷。下圖會看到在MSP430G2755 Bootloader中虛擬中斷向量表的分布。
Figure3.MSP430G2755 Bootloader虛擬中斷向量表
2.2工程CMD文件添加到工程中
將2.1步驟中產生的CMD文件,分別添加到MSP430G2755的Bootloader及應用程序App的工程中,如下圖所示:
Figure4.MSP540G2755 CMD文件
2.3應用程序txt轉化c文件
通過CCS編譯器,編譯MSP430G2755的應用程序,編譯完成后會產生一個txt文件下載格式,我們需要將這個產生的txt文件轉換為.c文件,這個.c文件才能給主控MCU使用,通過Bootloader下載到MSP430G2755中。轉化運行指令如下:
通過這步將生成的.c文件,添加到主MCU中的main函數文件路徑中,在這里我們測試的主控MCU是MSP430G2553,添加后的程序如下圖所示:
Figure5.Host MCU添加升級程序
2.4寫入CRC校驗地址信息
通過上步我們在主控MSP430G2553中添加了需要升級的應用程序,同時我們還要在主MCU中修改目標升級芯片(MSP430G2755)的CRC地址信息,修改參考如下,
Figure6. MSP430G2553添加CRC地址信息
注意此時已經不再需要MSPBoot用戶指導手冊中的CRC生成工具,進行CRC的校驗,我們看到其實直接在主MCU中計算了CRC校驗,并且把CRC的值放到指定的位置。
Figure7. MSP430G2553 計算CRC數值
2.5修改MSP430G2755應用程序
在這測試了將之前MSP430G2553默認的P1.1和P1.2口UART,修改為MSP430G2755硬件P3.4和P3.5口UART接收數據的接口。實際的參考代碼如下:
Figure8. MSP430G2755 UART口修改
特別注意,在MSP430G2755應用程序App中,有兩個中斷默認使用即P1口和定時器中斷,不能直接將P1口和Timer的中斷直接屏蔽掉,這樣會導致Host主控MSP430G2553升級MSP430G2553成功后,MSP430G2553并未正常的啟動應用程序。如果在應用程序中不需要這兩個中斷向量,則在第一步產生CMD文件的過程中需要修改<6> = Size of shared vectors 這個參數。
3.小結
本文總結了通過以上步驟我們完成了從MSP430G2553到MSP430G2755 Bootloader的移植,那我們總結MSP430G2755 Bootloader和應用程序App的整個程序架構,分析如下:
我們通過工具讀取了主程序移植了BootLoader的MSP430G2755的總代碼,其中MSP430G2755存儲Flash地址分析如下
從0x8000-0x8100為應用程序
從0xFBC0-0xFBF0 為虛擬的中斷向量表
從0xFC00-0xFFD0 為Bootloder
從0xFFE0-0xFFF0 為真實的中斷向量表
審核編輯:何安
-
嵌入式處理
+關注
關注
0文章
341瀏覽量
10299 -
uart
+關注
關注
22文章
1276瀏覽量
103920
發(fā)布評論請先 登錄
MSP430G2553如何解決.out文件的問題?
請問有沒有辦法對MSP430的固件升級?
應用MSP430G2553與ADS1120檢測K型熱電偶溫度,輸入為正,怎么讀數為負?
MSP430G2553 LaunchPad?開發(fā)套件(MSP-EXP430G2ET)用戶指南

MSP430F2xx、MSP430G2xx系列用戶指南

從MSP430F2xx和MSP430G2xx系列遷移到MSP430FR4xx和MSP430FR2xx系列

MSP430G2x33、MSP430G2x03混合信號微處理器數據表

MSP430G2x01-Q1 MSP430G2x11-Q1混合信號微控制器數據表

MSP430G2x01/MSP430G2x11混合信號微控制器數據表

MSP430G2x52/MSP430G2x12混合信號微控制器數據表

MSP430G2x32/MSP430G2x02混合信號微控制器數據表

MSP430G2x53、MSP430G2x13混合信號微控制器數據表

MSP430G2x21 MSP430G2x3混合信號微控制器數據表

評論