引導加載程序 (BSL) 是內置到 MSP 低功耗微控制器 (MCU) 中的應用。借助該應用,用戶可以與 MCU 通信,以便從其存儲器中讀取數據或向其中寫入數據。該功能主要用于在原型設計、最終生產和服務期間對器件進行編程。可以根據需要修改可編程存儲器(閃存或 FRAM)和數據存儲器 (RAM)。不同的 BSL 可提供與之通信的不同外設,例如 UART、I2C、SPI 或 USB。本文將對MSP430 FR2xx系列MCU與MSP432 P系列MCU的BSL進行總結性對比。
1 MSP BSL總覽
本文將以最新的FRAM系列MCU MSP430FR235x/215x與MSP432P401R為例,對這兩款MCU的BSL進行比較。
2 MSP430FR2xx與MSP432 P系列BSL比較
2.1 BSL 通用功能
2.1.1 BSL memory
對于MSP430FR235x/215x,其BSL代碼的memory存在于ROM中,大小為3kB,前2kB的地址區間為0x1000 - 0x17FF,后1kB地址區間為0xFFC00 - 0xFFFFF。因為該代碼存在于ROM中,所以用戶不能修改。對于MSP432P401R,其BSL代碼的memory存在于Flash中,大小為8kB,地址區間為0x00202000 - 0x00203FFF。
對于MSP430FR235x/215x,如果要實現定制化的BSL,則需要占用FRAM中的部分資源來實現,MSP430FR2xxx的客制化BSL源代碼及工程文件見:MSP430FRBoot 1_01_00_00。MSP32的BSL代碼的起始地址可以通過Flash Mailbox中的BSL Start Address寄存器修改。Flash中的代碼內容也是用戶可以自定義修改的,MSP432P401R的BSL源代碼及工程文件見:MSPBSL_CustomBSL432 1_01_00_00。
2.1.2 BSL 配置
對于MSP432P401R,其BSL外設默認端口引腳可以通過TLV進行配置,
同時,MSP432P401R支持用戶自定義配置,如BSL功能使能,I2C slave address及BSL invocation引腳及狀態配置等。這些自定義配置通過Boot override flash mailbox實現。
2.1.3 BSL串行接口
對于MSP430FR235x/215x,BSL串行接口支持UART和I2C接口,對于MSP432P401R,其不僅支持UART和I2C接口,還支持SPI接口。
2.2 BSL協議
MSP430FR235x/215x和MSP432P401R使用的都是“5xx, 6xx”系列的協議,它們的command基本是相同的,詳細數據包格式見BSL用戶手冊。需要注意的是,由于MSP432P401R的flash更大,其具有32bit的尋址空間,所以它還具有32位地址操作的BSL協議指令。另外,MSP430FR235x/215x的mass erase命令是不需要BSL密碼的,而MSP432P401R的mass erase,Sector erase命令都受BSL密碼保護。
2.3 BSL進入方式
MSP430FR235x/215x和MSP432P401R BSL均有3中進入方式:1、空片自動進入BSL;2、軟件調用;3、硬件時序進入。
2.3.1 空片入口
指復位向量為全F時(MSP430FR235x/215x為0xFFFF,MSP432P401R為0xFFFFFFFF),BSL會被Bootcode自動喚醒。復位向量放置的是用戶程序的首地址,如果復位向量為全F,則該芯片沒有用戶程序。Bootcode在執行過程中通過檢測復位向量中的內容確定該芯片是否為空片,如果為空片,則喚醒BSL。該功能可用于產品量產時,對芯片批量快速燒寫。
2.3.2 軟件調用
對于MSP430FR235x/215x,其BSL程序的入口地址為0x1000,將PC指針指向0x1000即可喚醒BSL。例程代碼如下:
__disable_interrupt(); // disable interrupts
((void (*)())0x1000)(); // jump to BSL
對于FRAM系列的MCU,這里有3點額外的注意事項:1、喚醒BSL前需要禁用總中斷;2、由于FRAM最高支持8MHz的時鐘頻率,在喚醒BSL前需要將MCLK的頻率設定為小于等于8MHz;3、BSL默認使用的定時器Timer模塊如果在應用程序中被調用,且沒有復位就進入BSL喚醒程序,這樣就會影響BSL程序的執行,所以需要在BSL喚醒前對該Timer進行復位。
對于MSP432P401R,其BSL程序的入口地址默認為0x00202000,同時其入口函數支持參數配置。需要注意的是,MSP432調用BSL程序前,也需要禁用總中斷。例程代碼如下:
#define BSL_PARAM 0xFC48FFFF // I2C slave address = 0x48, Interface selection = Auto
#define BSL_API_TABLE_ADDR 0x00202000 // Address of BSL API table
#define BSL_ENTRY_FUNCTION (*((uint32_t *)BSL_API_TABLE_ADDR))
MAP_Interrupt_disableMaster();
NVIC->ICER[0] = 0xFFFF;
NVIC->ICPR[0] = 0xFFFF;
NVIC->ICER[1] = 0xFFFF;
NVIC->ICPR[1] = 0xFFFF;
((void (*)())BSL_ENTRY_FUNCTION)((uint32_t)BSL_PARAM); // Call the BSL with given BSL parameters
2.3.3硬件時序進入
對于MSP430FR235x/215x,其通過RESET和TEST腳的固定時序喚醒BSL。
對于MSP432P401R,其可以通過啟動階段用戶指定的IO的電平狀態來喚醒BSL。需要用戶提前對mailbox進行配置。以P1.0腳高電平喚醒為例。
2.4 BSL工具支持
2.4.1硬件工具
BSL的官方硬件工具有MSP-BSL ‘Rocket’和MSP-FET,其主要是給MSP430FR235x/215x在非空片狀態下提供RST腳和TEST腳的硬件時序,來喚醒BSL。對于空片BSL喚醒,軟件BSL喚醒及MSP432的硬件輸入順序喚醒來說,其只需要一個UART就可以實現BSL下載。
2.4.2 軟件工具
BSL的官方軟件工具為BSL Scripter,其將用戶的命令及TXT格式的用戶代碼按照BSL協議的封包格式通過串行接口發送給芯片,或者將芯片中memory中的數據讀回。腳本文件中通過指令MODE FRxx或者MODE P4xx區分MSP430 FRAM系列或者MSP432系列的MCU,其余命令部分可以通用。
2.5 BSL安全性
2.5.1 BSL密碼
對于MSP430FR235x/215x,其提供32 Bytes的BSL密碼保護,即當BSL密碼正確時,才會執行密碼保護的BSL命令。密碼所在地址為FRAM中0xFFE0到0xFFFF的地址,該地址區域也是硬件中斷的地址區域。一般情況下,編譯器會將中斷服務程序的首地址存放在中斷向量表中,而沒有用到的中斷向量,編譯器一般也會自動映射到硬件錯誤函數。所以,用戶在手動修改BSL密碼時,需要注意不能修改程序中已經使用到的中斷向量地址中的內容。
對于MSP432P401R,其提供256 Bytes的BSL密碼保護,密碼所在地址為Flash中0x00到0x40的地址,該地址默認也是中斷向量的地址。用戶在手動修改時也需要注意和MSP430同樣的問題。
2.5.2 密碼錯誤時執行Mass erase
MSP430和MSP432均具有當BSL密碼錯誤時執行Mass erase的功能。該功能增加了用戶調試的方便性,只需要發送一次錯誤密碼,就能夠讓芯片自動擦除memory,下次執行BSL命令只需要發送默認密碼(全F)即可。
在MSP430 FRAM系列MCU中,該功能的使能和禁用通過BSL signature配置,FRAM中地址區間為FF84h - FF87h。當數據為全5時,BSL功能被禁用;當為全A時,BSL受密碼保護,密碼錯誤時的Mass erase功能被禁用,用戶在量產時可以使能該功能;當為其他的值時,密碼錯誤時的Mass erase功能被使能。
MSP432中,該功能是由BSL代碼實現的,如果要禁用該功能,需要用戶修改BSL源代碼。另外補充一點,MSP432 BSL支持payload加密功能。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7651瀏覽量
152124 -
mcu
+關注
關注
146文章
17324瀏覽量
352662 -
存儲器
+關注
關注
38文章
7528瀏覽量
164350
發布評論請先 登錄
相關推薦
MSP432的問世是否會打破MSP430低功耗之王的神話?MSP432將TI在超低功耗的領先地位延伸至32位MCU領域
全新MSP432 MCU產品系列詳解
MSP430 MCU與MSP432 MCU主機微控制器連接設計包括BOM及層圖
開源硬件-TIDM-CAPTIVATE-MSP432-采用 MSP430 電容式觸控 MCU、觸覺元件和 LCD 的 MSP432? MCU PCB layout 設計
![開源硬件-TIDM-CAPTIVATE-<b class='flag-5'>MSP432</b>-采用 <b class='flag-5'>MSP430</b> 電容式觸控 <b class='flag-5'>MCU</b>、觸覺元件和 LCD 的 <b class='flag-5'>MSP432</b>? <b class='flag-5'>MCU</b> PCB layout 設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MSP432 MCU概述及EnergyTrace技術
![<b class='flag-5'>MSP432</b> <b class='flag-5'>MCU</b>概述及EnergyTrace技術](https://file.elecfans.com/web2/M00/49/B9/pYYBAGKhvFSABleGAAAscKifJ68051.png)
MCU之MSP430和MSP432對比
![<b class='flag-5'>MCU</b>之<b class='flag-5'>MSP430</b>和<b class='flag-5'>MSP432</b><b class='flag-5'>對比</b>](https://file1.elecfans.com//web2/M00/A7/36/wKgZomUMQw6AFgyNAAAPvZcXO5M525.jpg)
引導加載程序是內置到MSP低功耗微控制器中的應用
基于ROM BSL的MSP430?FRAM MCU小尺寸定制BSL
![基于ROM <b class='flag-5'>BSL</b>的<b class='flag-5'>MSP430</b>?FRAM <b class='flag-5'>MCU</b>小尺寸定制<b class='flag-5'>BSL</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
適用于MSP430和Simplelink? MSP432?? MCU的MSP-BSL引導加載程序
![適用于<b class='flag-5'>MSP430</b>和Simplelink? <b class='flag-5'>MSP432</b>?? <b class='flag-5'>MCU</b>的<b class='flag-5'>MSP-BSL</b>引導加載程序](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論