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

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

3天内不再提示

基于MS430G2755为目标升级对象

电子设计 来源:电子设计 作者:电子设计 2022-01-15 17:23 次阅读

摘要

TIMSP430支持在主程序中加载Bootloader的方式进行在线升级操作,通过在线升级功能,客户可以通过外部处理器随时更新MSP430内部的程序及Bug 的远程修复。同时TI也提供了基于MSP430G2553的参考代码,本文详细的介绍了如何将MSP430G2553的Bootloader移植到MSP430G2755中,使用MSP 430G2553 Host对MSP430G2755 Device进行的升级操作。

本文基于MS430G2755为目标升级对象,详细讲述BootLoader的使用方法,并给出了具体的移植步骤。

Figure1为MSPBoot软件框架,本文的分析都是基于这个典型软件框架。

Figure1. MSPBoot软件框架路

1. MSP430 Main Memory Bootloader 介绍

在MSP430G2xx 中实际上具有一个ROM版本的BSL(Bootloader) ,但是这个BSL仅仅支持外部MCU通过UART进行在线升级,而且而且所有的协议全部固化,无法进行修改或者更改其他接口方式进行升级操作。所以这个需要一个可以在主程序中运行的Bootloader,可以让外部MCU进行用户自定义的升级操作。同时TI也提供了一个基于MSP430G2553的参考例程,可以通过如下链接进行下载。http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPBoot/latest/index_FDS.html

本文使用的参考代码版本为MSPBoot_1_01_00_00。

2.MSPBoot的代码移植流程

2.1MS430G2755 CMD文件的产生

首先用Per工具产生CMD文件(Generating Linker Files), 通过Per的工具会产生两个CMD文件,其中一个给MSP430G2755的Bootloader使用,另一个给MSP430G2755的应用程序使用。操作指令如下:

 这里面有几个重要的参数说明如下,

<0x8000 > = Start address of Flash/FRAM

对于MSP430G2553 地址为0xC000 , 而MSP430G2755的地址需要修改为0x8000

<0xFFE0 > = Address of interrupt vector table

中断向量表的地址0xFFE0, 对于MSP430G2553和MSP430G2755相同

<0xFC00> = Start address of Bootloader

Bootloader的起始地址0xFC00,对于两者也是相同的

<48 > =Size of the proxy table

这里的48对应于12个中断向量,每个中断向量占用4Byte

<6> = Size of shared vectors

在应用程序中一共有3个(P1/Time/Dummy)中断向量,每个中断向量占用2Byte, 对应参数为6

<0x1100> = Start address of RAM

RAM的起始地址也需要修改为MSP430G2755的0x1100

<0x20FF > = End address of RAM

RAM的结束地址也需要修改为MSP430G2755的0x20FF

<0x80> = Size of the stack

MSP430G2755默认的堆栈大小为0x80

<0x1000> = Start address of info memory used for bootloader

Information的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改

<0x10BF > = End address of info memory used for bootloader

Information的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改

注意如上修改的参数6,及中断向量的数量,在Bootloader中的中断向量不需要修改,只修改MSP430G2755应用程序App中的中断向量即可,通过下图可以直观看到中断向量的在Bin文件中的分布。

Figure1.MSP430G2755中断向量


Figure2. MSP430G2755 Bin文件对应虚拟中断向量表

注意在这里的809C 和80E2 就对应MSP430G2755应用程序中的P1_Isr 和Timer_A,GPIO中断和定时器中断。下图会看到在MSP430G2755 Bootloader中虚拟中断向量表的分布。

Figure3.MSP430G2755 Bootloader虚拟中断向量表

2.2工程CMD文件添加到工程中

将2.1步骤中产生的CMD文件,分别添加到MSP430G2755的Bootloader及应用程序App的工程中,如下图所示:


Figure4.MSP540G2755 CMD文件

2.3应用程序txt转化c文件

通过CCS编译器,编译MSP430G2755的应用程序,编译完成后会产生一个txt文件下载格式,我们需要将这个产生的txt文件转换为.c文件,这个.c文件才能给主控MCU使用,通过Bootloader下载到MSP430G2755中。转化运行指令如下:

通过这步将生成的.c文件,添加到主MCU中的main函数文件路径中,在这里我们测试的主控MCU是MSP430G2553,添加后的程序如下图所示:

Figure5.Host MCU添加升级程序

2.4写入CRC校验地址信息

通过上步我们在主控MSP430G2553中添加了需要升级的应用程序,同时我们还要在主MCU中修改目标升级芯片(MSP430G2755)的CRC地址信息,修改参考如下,

Figure6. MSP430G2553添加CRC地址信息

注意此时已经不再需要MSPBoot用户指导手册中的CRC生成工具,进行CRC的校验,我们看到其实直接在主MCU中计算了CRC校验,并且把CRC的值放到指定的位置。

Figure7. MSP430G2553 计算CRC数值

2.5修改MSP430G2755应用程序

在这测试了将之前MSP430G2553默认的P1.1和P1.2口UART,修改为MSP430G2755硬件P3.4和P3.5口UART接收数据的接口。实际的参考代码如下:

Figure8. MSP430G2755 UART口修改

特别注意,在MSP430G2755应用程序App中,有两个中断默认使用即P1口和定时器中断,不能直接将P1口和Timer的中断直接屏蔽掉,这样会导致Host主控MSP430G2553升级MSP430G2553成功后,MSP430G2553并未正常的启动应用程序。如果在应用程序中不需要这两个中断向量,则在第一步产生CMD文件的过程中需要修改<6> = Size of shared vectors 这个参数。

3.小结

本文总结了通过以上步骤我们完成了从MSP430G2553到MSP430G2755 Bootloader的移植,那我们总结MSP430G2755 Bootloader和应用程序App的整个程序架构,分析如下:

我们通过工具读取了主程序移植了BootLoader的MSP430G2755的总代码,其中MSP430G2755存储Flash地址分析如下

从0x8000-0x8100为应用程序

从0xFBC0-0xFBF0 为虚拟的中断向量表

从0xFC00-0xFFD0 为Bootloder

从0xFFE0-0xFFF0 为真实的中断向量表

审核编辑:何安

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

    关注

    0

    文章

    341

    浏览量

    9882
  • uart
    +关注

    关注

    22

    文章

    1157

    浏览量

    99947
收藏 人收藏

    评论

    相关推荐

    安装哪个版本的CCS可以支持这种旧的MSP430仿真器?

    -Lite-3v43下载工具由V2升级V3。 IAR for MSP430 V7.12不能使用,而IAR for MSP430 V5.5却提示要
    发表于 04-15 08:33

    STM32 IIC通信升级系统

    诸神,需求一套可以使用IIC通信升级固件的系统 1,STM32烧录板,型号自定,尽量低成本,程序 2,STM32G031G8U6目标板示例程序 有人能做这项目吗?或者大家有好的思路吗? 如果能接请联系425453660@qq.c
    发表于 03-20 12:40

    对象检测边界框损失函数–从IOU到ProbIOU介绍

    目标检测损失函数的选择在目标检测问题建模中至关重要。通常,目标检测需要两个损失函数,一个用于对象分类,另一个用于边界框回归(BBR)。
    的头像 发表于 01-24 10:50 1076次阅读
    <b class='flag-5'>对象</b>检测边界框损失函数–从IOU到ProbIOU介绍

    MSP-EXP430G2ET让LED通过晶体管闪烁,使用外部电源LED供电时,代码不起作用的原因?

    我在切换晶体管时遇到了一个问题。我正在尝试让 LED 通过晶体管闪烁。当我从评估板(即 MSP-EXP430G2ET)获取电源 (3.3V) 时,该程序有效。但是当我使用外部电源 (8.33V)
    发表于 01-22 06:00

    请问N32G430有多大的RAM?

    N32G430有多大的RAM
    发表于 01-17 06:33

    ms2130和ms2131有什么区别

    ms2130和ms2131都是华为公司推出的移动宽带设备,主要用于家庭、办公室等场所的无线上网。但是,它们之间还是存在一些区别的。 首先,从外观上来说,ms2130和ms2131的外壳
    的头像 发表于 01-05 17:51 1918次阅读

    中伟视界:AI分析盒子——ai算法中通过什么方法做到一个对象只报警一次,为每个对象生成一个唯一ID

    AI算法实现对象只报警一次并生成唯一ID的方法包括利用目标对象的特征信息进行识别和跟踪,以及利用时间戳等信息来排除重复报警。这些方法可确保准确识别和记录每个目标
    的头像 发表于 11-25 17:18 235次阅读

    求助,关于MSP430G2553的P1.3引脚配置问题

    使用的官方的MSP430G2553开发板。板子上P1.3原来是作为按键的IO使用。我自己把P1.1-P1.5这5个IO引出控制5个马达。 同样配置情况下,其他4个都是好的,只有P1.3不能输出PWM波形。
    发表于 11-07 07:47

    Objects:为对象类提供对象技术

    Objects 对象类简介 IRIS 通过以下对象类提供对象技术: %Library.RegisteredObject 、 %Library.Persistent
    的头像 发表于 09-20 14:14 179次阅读
    Objects:为<b class='flag-5'>对象</b>类提供<b class='flag-5'>对象</b>技术

    ***MS5196T/MS5197T介绍

    国产芯片MS5196T/MS5197T兼容AD7796/AD7797
    的头像 发表于 06-21 09:49 438次阅读
    ***<b class='flag-5'>MS</b>5196T/<b class='flag-5'>MS</b>5197T介绍

    ***----瑞盟MS8605 /MS8606

    MS8605、MS8606 是单通道和双通道的轨到轨输入输出单电源供电运放。它们具有低的失调电压、低的输入电压电流噪声和宽的信号带宽。
    的头像 发表于 06-13 17:22 561次阅读

    MS3585/MS3585M/MS3585D—无极性 RS-485 接口电路

    一、产品简述 MS3585/MS3585M/MS3585D 是一款半双工、自适应总线极性、±20kV ESD、可应用于 RS-485 通信系统的收发芯片,传输和接收 速率可高达 10Mbps
    的头像 发表于 06-02 16:49 501次阅读
    <b class='flag-5'>MS</b>3585/<b class='flag-5'>MS</b>3585M/<b class='flag-5'>MS</b>3585D—无极性 RS-485 接口电路

    桥接模式的目标与设计

    桥接模式的目标是使对象的抽象部分与实现部分分离,使之可以分别独立变化,以尽量避免产生耦合。
    的头像 发表于 06-01 14:29 340次阅读
    桥接模式的<b class='flag-5'>目标</b>与设计

    Python面向对象深化(下)

    __call__  方法和可调用对象 凡是可以将 () 直接应用到自身并执行, 都称为可调用对象. 注意: 可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例对象.
    的头像 发表于 05-11 17:52 468次阅读

    UPA2755AGR 数据表

    UPA2755AGR 数据表
    发表于 04-27 18:55 0次下载
    UPA<b class='flag-5'>2755</b>AGR 数据表