MSP430系列單片機常用的程序下載方式為JTAG、BSL,實際產(chǎn)品應用中會用到固件的升級,如果是異地設備,則給升級帶來不少麻煩。有沒有普通用戶就可操作的固件升級方案呢?就像BootLoader,可通過命令選擇啟動方式,甚至實現(xiàn)遠程升級?答案是有的。其原理就是通過FLASH操作,將新的固件刷到FLASH中去,然后轉(zhuǎn)到固件起始地址運行。
MSP430串口升級程序
MSP430 FLASH ROM
1. 如下圖所示, 如下圖所示, 如下圖所示, FLASH ROM為 32K 字節(jié)(FLASH大小要根據(jù)你用的具體型號做調(diào)整),分為 64 個段,每個段分為512字節(jié),512字節(jié)又細分為 8個塊 ,每塊64字節(jié)。
2. MSP430F247每次最小可擦除1個段的空間,除操作是向該寫滿 0XFF。
3. 32K字節(jié)的 FLASH ROM起始地址為 0X0FFFF –0X080000,對應Segment0 – Segment63.
4. RST復位中斷向量地址為0x0FFFE,其由編譯器自動寫入跳轉(zhuǎn)到main()函數(shù)的指令。
中斷向量
當有外部復位、軟件復位等,都會觸發(fā)名為Reset的不可屏蔽中斷,此時MCU會自動將中斷向量0xFFFE裝入PC指針,從而引導程序運行。
除了Reset中斷,還有其它例如UART、SPI、TIMER等中斷,中斷向量記錄了中斷子程序的入口地址,中斷向量表如下:
存儲空間劃分
增加串口升級功能需要有該部分程序支撐,因此FLASH ROM被劃分成兩部分:引導分區(qū)、應用分區(qū),引導分區(qū)運行bootloader,當需更新代碼時,該部分程序會讀取串口發(fā)送的程序文件,并將其下載到應用分區(qū);應用分區(qū)用于存放應用程序。
具體分區(qū)見下圖:
這里系統(tǒng)分區(qū)占了1.5KB的空間,其中包括了bootloader代碼分區(qū)和中斷向量分區(qū)。應用程序分區(qū)也包括代碼區(qū)和中斷向量區(qū)兩部分,但這里的中斷向量卻是虛擬中斷向量,原因:中斷向量表不能重新映射。
具體實現(xiàn)
程序更新步驟:1、設備上電; 2、運行bootloader程序; 3、延時等待遠程升級命令;4、收到更新命令進入升級功能;5、將應用分區(qū)擦除;6、將接收的程序?qū)懭霊梅謪^(qū);7、跳轉(zhuǎn)PC指針到應用程序的復位地址;8、運行新的應用程序。
程序運行的步驟:1、設備上電; 2、運行bootloader程序; 3、延時等待遠程升級命令;4、接收命令超時;5、判斷應用分區(qū)是否有可運行的程序;6、跳轉(zhuǎn)PC指針到應用程序的復位地址;7、運行應用程序。(如果沒有可運行的程序、則一直停留在bootloader)
關(guān)鍵技術(shù):
1、通過移動PC指針實現(xiàn)了bootloader到應用程序的切換、同時也實現(xiàn)了虛擬中斷向量表。
2、通過FLASH ROM的讀寫操作實現(xiàn)應用程序的更新
總結(jié)
順利實現(xiàn)MSP430的遠程升級,這里我要感謝梁先生的網(wǎng)絡資料。其實,只要單片機有FLASH的讀寫接口,就能根據(jù)此原理實現(xiàn)bootloader,同時接口也不局限與串口,只要有機制獲取新程序,就可以通過這種方式實現(xiàn)對MCU的升級。
編輯:hfy
-
單片機
+關(guān)注
關(guān)注
6067文章
44982瀏覽量
650278 -
msp430
+關(guān)注
關(guān)注
181文章
2406瀏覽量
231129 -
FlaSh
+關(guān)注
關(guān)注
10文章
1678瀏覽量
151746
發(fā)布評論請先 登錄
用msp430單片機如何設計軟件濾波?
請問有沒有辦法對MSP430的固件升級?
請問ADS112C04作為一個模數(shù)轉(zhuǎn)化器,怎么和msp430單片機相連,進行編程呢?
使用MSP430 MCU實現(xiàn)CRC

基于MSP430單片機的軟件玻璃液晶驅(qū)動程序

msp430單片機的優(yōu)缺點介紹
采用低成本MSP430單片機的外部可編程看門狗定時器監(jiān)控系統(tǒng)

利用超低功耗單片機 MSP430 作為系統(tǒng)伴隨芯片應用報告

提高MSP430G系列單片機的Flash擦寫壽命的方法

評論