MSP430系列單片機(jī)常用的程序下載方式為JTAG、BSL,實(shí)際產(chǎn)品應(yīng)用中會(huì)用到固件的升級(jí),如果是異地設(shè)備,則給升級(jí)帶來(lái)不少麻煩。有沒(méi)有普通用戶就可操作的固件升級(jí)方案呢?就像BootLoader,可通過(guò)命令選擇啟動(dòng)方式,甚至實(shí)現(xiàn)遠(yuǎn)程升級(jí)?答案是有的。其原理就是通過(guò)FLASH操作,將新的固件刷到FLASH中去,然后轉(zhuǎn)到固件起始地址運(yùn)行。
MSP430串口升級(jí)程序
MSP430 FLASH ROM
1. 如下圖所示, 如下圖所示, 如下圖所示, FLASH ROM為 32K 字節(jié)(FLASH大小要根據(jù)你用的具體型號(hào)做調(diào)整),分為 64 個(gè)段,每個(gè)段分為512字節(jié),512字節(jié)又細(xì)分為 8個(gè)塊 ,每塊64字節(jié)。
2. MSP430F247每次最小可擦除1個(gè)段的空間,除操作是向該寫(xiě)滿 0XFF。
3. 32K字節(jié)的 FLASH ROM起始地址為 0X0FFFF –0X080000,對(duì)應(yīng)Segment0 – Segment63.
4. RST復(fù)位中斷向量地址為0x0FFFE,其由編譯器自動(dòng)寫(xiě)入跳轉(zhuǎn)到main()函數(shù)的指令。

中斷向量
當(dāng)有外部復(fù)位、軟件復(fù)位等,都會(huì)觸發(fā)名為Reset的不可屏蔽中斷,此時(shí)MCU會(huì)自動(dòng)將中斷向量0xFFFE裝入PC指針,從而引導(dǎo)程序運(yùn)行。
除了Reset中斷,還有其它例如UART、SPI、TIMER等中斷,中斷向量記錄了中斷子程序的入口地址,中斷向量表如下:


存儲(chǔ)空間劃分
增加串口升級(jí)功能需要有該部分程序支撐,因此FLASH ROM被劃分成兩部分:引導(dǎo)分區(qū)、應(yīng)用分區(qū),引導(dǎo)分區(qū)運(yùn)行bootloader,當(dāng)需更新代碼時(shí),該部分程序會(huì)讀取串口發(fā)送的程序文件,并將其下載到應(yīng)用分區(qū);應(yīng)用分區(qū)用于存放應(yīng)用程序。
具體分區(qū)見(jiàn)下圖:

這里系統(tǒng)分區(qū)占了1.5KB的空間,其中包括了bootloader代碼分區(qū)和中斷向量分區(qū)。應(yīng)用程序分區(qū)也包括代碼區(qū)和中斷向量區(qū)兩部分,但這里的中斷向量卻是虛擬中斷向量,原因:中斷向量表不能重新映射。
具體實(shí)現(xiàn)
程序更新步驟:1、設(shè)備上電; 2、運(yùn)行bootloader程序; 3、延時(shí)等待遠(yuǎn)程升級(jí)命令;4、收到更新命令進(jìn)入升級(jí)功能;5、將應(yīng)用分區(qū)擦除;6、將接收的程序?qū)懭霊?yīng)用分區(qū);7、跳轉(zhuǎn)PC指針到應(yīng)用程序的復(fù)位地址;8、運(yùn)行新的應(yīng)用程序。
程序運(yùn)行的步驟:1、設(shè)備上電; 2、運(yùn)行bootloader程序; 3、延時(shí)等待遠(yuǎn)程升級(jí)命令;4、接收命令超時(shí);5、判斷應(yīng)用分區(qū)是否有可運(yùn)行的程序;6、跳轉(zhuǎn)PC指針到應(yīng)用程序的復(fù)位地址;7、運(yùn)行應(yīng)用程序。(如果沒(méi)有可運(yùn)行的程序、則一直停留在bootloader)
關(guān)鍵技術(shù):
1、通過(guò)移動(dòng)PC指針實(shí)現(xiàn)了bootloader到應(yīng)用程序的切換、同時(shí)也實(shí)現(xiàn)了虛擬中斷向量表。
2、通過(guò)FLASH ROM的讀寫(xiě)操作實(shí)現(xiàn)應(yīng)用程序的更新
總結(jié)
順利實(shí)現(xiàn)MSP430的遠(yuǎn)程升級(jí),這里我要感謝梁先生的網(wǎng)絡(luò)資料。其實(shí),只要單片機(jī)有FLASH的讀寫(xiě)接口,就能根據(jù)此原理實(shí)現(xiàn)bootloader,同時(shí)接口也不局限與串口,只要有機(jī)制獲取新程序,就可以通過(guò)這種方式實(shí)現(xiàn)對(duì)MCU的升級(jí)。
編輯:hfy
-
單片機(jī)
+關(guān)注
關(guān)注
6078文章
45577瀏覽量
673544 -
msp430
+關(guān)注
關(guān)注
182文章
2406瀏覽量
233676 -
FlaSh
+關(guān)注
關(guān)注
10文章
1759瀏覽量
155894
發(fā)布評(píng)論請(qǐng)先 登錄
探索MSP430FG461x和MSP430CG461x混合信號(hào)微控制器
探索MSP430F663x系列混合信號(hào)微控制器的魅力
深入剖析MSP430F563x系列混合信號(hào)微控制器
德州儀器MSP430F55xx系列MCU深度解析
德州儀器MSP430F14x與MSP430F13x系列混合信號(hào)微控制器深度剖析
探秘 MSP430F55xx 系列單片機(jī):低功耗與高性能的完美融合
MSP430FR413x系列單片機(jī):低功耗設(shè)計(jì)的理想之選
MSP430FW42x系列混合信號(hào)微控制器深度解析
MSP430F563x系列單片機(jī):低功耗與高性能的完美結(jié)合
MSP430FR572x系列微控制器:低功耗設(shè)計(jì)的理想之選
探索MSP430FR572x系列:超低功耗混合信號(hào)微控制器的卓越之選
請(qǐng)問(wèn)rt-thread 能在msp430上跑起來(lái)嗎?
MSP430常用內(nèi)聯(lián)函數(shù)說(shuō)明
MSP-FET430閃存仿真工具(FET)手冊(cè)
TPS65835 集成 MSP430 的高級(jí)電源管理 IC (PMIC)數(shù)據(jù)手冊(cè)
基于MSP430系列單片機(jī)的遠(yuǎn)程升級(jí)方案
評(píng)論