引导加载程序 (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加密功能。
谈谈Redis Enterprise实时搜索的过人之处
变频器的运行和相关参数的设置
浅谈直流电机的结构和优缺点
PCA和KPCA分不清楚怎么办
如何实现更远距离的量子通信?
MSP430 FR2xx系列MCU BSL与MSP432 P系列MCU BSL对比汇总
备受关注的边缘计算市场未来将如何“引爆”?
泰克公司推出面向嵌入式设计工程师的先进802.11 WLAN测试解决方案
华为Mate 50系列维修价公布
土壤采样设备的用途、特点及参数
GENIVI与FASTR携手 开发车联网安全解决方案
基于S3C44BOX处理器和Linux操作系统实现物流PDA无线终端的设计
特斯拉计划投资4200万元在上海建设超级充电桩工厂
从22个方向来分享下PCB布板与EMC
“墨绿色”将成为智能手机流行的很大势所趋
罗姆推出两个新系列的低导通电阻 100V 双通道场效应管
BOE(京东方)助力国家人工智能创新应用先导区(北京)启动持续推动人工智能创新应用
深圳工控机知名的品牌有哪些
西门子扩展ODB数据交换格式,可高效实现智能工厂或工业4.0计划
Matlab利用plot绘制正负样本散点图来分析数据