0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

引导加载程序是内置到MSP低功耗微控制器中的应用

电子设计 来源:电子设计 作者:电子设计 2022-01-14 10:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:TI工程师Stanford Li

引导加载程序 (BSL) 是内置到 MSP 低功耗微控制器 (MCU) 中的应用。借助该应用,用户可以与 MCU 通信,以便从其存储器中读取数据或向其中写入数据。该功能主要用于在原型设计、最终生产和服务期间对器件进行编程。可以根据需要修改可编程存储器(闪存或 FRAM)和数据存储器 (RAM)。不同的 BSL 可提供与之通信的不同外设,例如 UARTI2C、SPI 或 USB。本文将对MSP430 FR2xx系列MCU与MSP432 P系列MCU的BSL进行总结性对比。

1 MSP BSL总览

图1为MSP430 FR2xx_4xx系列MCU与MSP432 P系列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寄存器修改,见图2。Flash中的代码内容也是用户可以自定义修改的,MSP432P401R的BSL源代码及工程文件见:MSPBSL_CustomBSL432 1_01_00_00。

2.1.2 BSL 配置

对于MSP432P401R,其BSL外设默认端口引脚可以通过TLV进行配置,具体配置数据如图3,

同时,MSP432P401R支持用户自定义配置,如BSL功能使能,I2C slave address及BSL invocation引脚及状态配置等,具体配置见图4。这些自定义配置通过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数据包格式如图5,详细数据包格式见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,如图6。

对于MSP432P401R,其可以通过启动阶段用户指定的IO的电平状态来唤醒BSL。需要用户提前对mailbox进行配置。以P1.0脚高电平唤醒为例,其时序图如图7。

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加密功能。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190247
  • 嵌入式处理
    +关注

    关注

    0

    文章

    341

    浏览量

    10450
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MSP430FR5721IDAR 超低功耗的 16 位微控制器

    MSP430FR5721IDAR超低功耗的16位微控制器产品型号:MSP430FR5721IDAR产品品牌:TI/德州仪器产品封装:TSSOP38产品功能:16位
    的头像 发表于 11-28 11:13 116次阅读
    <b class='flag-5'>MSP</b>430FR5721IDAR   超<b class='flag-5'>低功耗</b>的 16 位<b class='flag-5'>微控制器</b>

    可以满足不同的低功耗应用高性能低功耗系列微控制器MS32C001-C

    MS32C001-C 系列微控制器采用高性能的 32 位 ARM® Cortex®-M0+ 内核,宽电压工作范围的 MCU。嵌入 18 KB Flash 和 1.5 KB SRAM 存储,最高
    的头像 发表于 11-05 09:34 226次阅读
    可以满足不同的<b class='flag-5'>低功耗</b>应用高性能<b class='flag-5'>低功耗</b>系列<b class='flag-5'>微控制器</b>MS32C001-C

    Microchip AVR64EA28/32/48微控制器:高性能与低功耗的完美融合

    和512字节EEPROM。该微控制器采用28、32和48引脚封装。AVR EA系列采用Microchip的现有技术,具有灵活的低功耗架构,包括Event System、智能模拟功能和高级数字外设。
    的头像 发表于 10-11 14:50 327次阅读
    Microchip AVR64EA28/32/48<b class='flag-5'>微控制器</b>:高性能与<b class='flag-5'>低功耗</b>的完美融合

    PIC16F13145微控制器技术解析:CLB架构与低功耗设计

    PIC16F13145微控制器采用可配置逻辑块(CLB),其中包含32个独立逻辑单元,并带有可自定义的查找表(LUT),用于基于硬件的自定义逻辑。 如此可以实现独立于CPU的运行,从而缩短响应时间并降低功耗。此系列
    的头像 发表于 10-09 16:05 366次阅读
    PIC16F13145<b class='flag-5'>微控制器</b>技术解析:CLB架构与<b class='flag-5'>低功耗</b>设计

    Texas Instruments CC2340R2 SimpleLink™无线微控制器数据手册

    入门级SoC(片上系统),用于低功耗无线通信。CC2340R2 MCU具有0.71μA超低待机电流、集成平衡器、28KB超低漏电SRAM以及12KB ROM引导加载和驱动
    的头像 发表于 08-02 09:19 1124次阅读
    Texas Instruments CC2340R2 SimpleLink™无线<b class='flag-5'>微控制器</b>数据手册

    雅特力AT32L021系列低功耗ARM®Cortex®-M0+微控制器

    雅特力AT32L021系列低功耗ARM®Cortex®-M0+微控制器AT32L021系列是雅特力科技推出的一款高性能、低功耗的 ARM® Cortex®-M0+ 内核微控制器,专为满
    发表于 06-05 08:58

    MAX28200 16位微控制器,带有ADC和I²C技术手册

    MAX28200是一款低功耗、16位MAXQ®微控制器(µC),设计用于智能电话和消费类电子等低功耗应用。器件结合了强大的16位RISC微控制器和一个10位93.75ksps ADC,
    的头像 发表于 05-08 14:40 621次阅读
    MAX28200 16位<b class='flag-5'>微控制器</b>,带有ADC和I²C技术手册

    MAX32670高可靠性、超低功耗微控制器技术手册

    在Darwin家族,MAX32670是一款超低功耗、高性价比、高可靠性的32位微控制器,在实现复杂的传感处理设计的同时不会影响电池寿命。器件集成了高度灵活性的多功能电源管理单元与功
    的头像 发表于 05-08 11:48 772次阅读
    MAX32670高可靠性、超<b class='flag-5'>低功耗</b><b class='flag-5'>微控制器</b>技术手册

    家用电器开发微控制器的选型要点

    ROHM提供融入自有低功耗技术优势的丰富的低功耗微控制器产品。通过供应微控制器产品,为从事电池供电的小型设备、家用电器、工业设备、社会基础设施、车载设备等各种系统开发的
    的头像 发表于 04-24 10:26 925次阅读
    家用电器开发<b class='flag-5'>中</b><b class='flag-5'>微控制器</b>的选型要点

    小华半导体推出新一代超低功耗微控制器HC32L021

    在国内集成电路产业发展的进程,小华半导体作为率先投身超低功耗控制单元(MCU)领域的先锋企业,一直以来都在积极推动技术创新与产品革新。近期,小华半导体正式推出极具竞争力的新一代超低功耗
    的头像 发表于 04-16 16:46 1647次阅读
    小华半导体推出新一代超<b class='flag-5'>低功耗</b><b class='flag-5'>微控制器</b>HC32L021

    ADuCM360/ADuCM361低功耗、精密模拟微控制器中文手册

    电子发烧友网站提供《ADuCM360/ADuCM361低功耗、精密模拟微控制器中文手册.pdf》资料免费下载
    发表于 04-09 17:14 0次下载

    低功耗KOF01采用高性能的ARM®Cortex®-M0+的32位微控制器

    。 KOF01还具有出色的低功耗性能,支持睡眠和深度睡眠两种低功耗模式,设计灵活。其运行功耗为 70uA/MHz@64MHz,在部分掉电的深度睡眠模式下功耗仅10uA。 KOF01
    发表于 03-31 10:35

    STM32H753IIT6 一款32位微控制器MCU/MSP430F5325IPNR一款16位MCU

    MSP430F5325IPNR‌是一款16位低功耗微控制器,属于MSP430系列。该微控制器具有以下主要特点和功能: 1、
    发表于 02-21 14:59

    利用低功耗微控制器产品组合简化医疗保健和工业物联网设计

    作者:Stephen Evanczuk 投稿人:DigiKey 北美编辑 工业、医疗保健和各种物联网 (IoT) 应用的低功耗设计开发人员面临着对基于微控制器的解决方案的持续需求,这些解决方案既要
    的头像 发表于 01-26 21:10 916次阅读
    利用<b class='flag-5'>低功耗</b><b class='flag-5'>微控制器</b>产品组合简化医疗保健和工业物联网设计

    Stellaris引导加载程序用户指南

    电子发烧友网站提供《Stellaris引导加载程序用户指南.pdf》资料免费下载
    发表于 12-23 16:24 0次下载
    Stellaris<b class='flag-5'>引导</b><b class='flag-5'>加载</b><b class='flag-5'>程序</b>用户指南