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

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

3天内不再提示

MSPBoot的代码移植流程

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

扫码添加小助手

加入工程师交流群

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

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,下图为MSPBoot的整个软件框架。

2. MSPBoot的代码移植流程

2.1 MS430G2755 CMD 文件的产生

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

C:\Users\a0223791\Desktop\MSP430-BSL-IAP\MSPBoot_1_01_00_00\linkerGen>perl MSPBo

otLinkerGen.pl -file lnk_msp430G2755_Uart_1KB -dev MSP430G2755 -params 0x8000 0x

FFE0 0xFC00 48 6 0x1100 0x20FF 0x80 0x1000 0x10BF

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

<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文件中的分布。

图二 MSP430G2755中断向量

图三 MSP430G2755 Bin文件对应虚拟中断向量表

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

图四MSP430G2755 Bootloader虚拟中断向量表

2.2 工程CMD文件添加

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

图5 MSP540G2755 CMD文件

特别注意,如果使用的是TI默认的MSP430G2553的工程,需要将原工程的器件型号选择为MSP430G2755,并且把MSP430G2755自带的G2553的CMD文件删除掉,使用生成MSP430G2755的CMD文件。

2.3 应用程序txt转化c文件

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

C:\Users\ a0223791\Desktop\MSP430-BSL-IAP\G2755_Porting\MSPBoot_1_01_00_00\430txt

_converter>430txt2C.pl App1_MSPBoot.txt AppForHostG2755.c App1

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

2.4 写入CRC校验地址信息

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

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

2.5 修改MSP430G2755应用程序

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

图九 MSP430G2755 UART口修改

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

3.小结

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

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

从0x8000-0x8100为应用程序

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

从0xFC00-0xFFD0 为Bootloder

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

审核编辑:何安

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

    关注

    0

    文章

    341

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    BLDC 驱动板 FOC 矢量控制算法移植与参数调试(工程实用版)

    这是一篇可直接用于项目开发、量产调试的 FOC 移植与调试指南,面向STM32/GD32 + 三相 BLDC/PMSM 无刷马达驱动板,包含移植步骤、关键参数、调试流程、波形判断、常见故障,完全匹配你前面设计的MT6835 磁编
    的头像 发表于 04-27 15:32 2881次阅读

    RT-Thread 中设备树的适配方法 | 技术集结

    本文基于RT-Thread现有的DM(设备模型)框架,以Rock2F开发板为例,系统梳理了RK3528SoC的快速移植流程,涵盖了CLK、Pinctrl、ADC、NVMEM、Thermal、RNG等
    的头像 发表于 04-04 18:05 3418次阅读
    RT-Thread 中设备树的适配方法 | 技术集结

    RK3568+Android11 GT911触控驱动移植与配置实战

    在RK3568平台的Android11系统开发中,汇顶GT911作为小尺寸5点电容触控芯片是常见选型,其驱动移植核心围绕 设备树适配、内核编译配置、驱动代码微调 三大环节展开。本文结合实际项目修改
    的头像 发表于 03-19 11:20 1144次阅读
    RK3568+Android11 GT911触控驱动<b class='flag-5'>移植</b>与配置实战

    深入解析rk平台Android Bootloader核心代码:从启动流程到AVB验证

    下android_bootloader.c的核心代码,带你读懂Android设备从Bootloader到内核的完整启动逻辑,以及开发者关注这些代码的核心价值。 一、代码整体定位 这份代码
    的头像 发表于 01-22 07:06 587次阅读
    深入解析rk平台Android Bootloader核心<b class='flag-5'>代码</b>:从启动<b class='flag-5'>流程</b>到AVB验证

    CIE全国RISC-V创新应用大赛 人脸识别系统介绍与移植

    大模型推理的嵌入式系统上。 项目代码采用的是python,因为MUSE Pi Pro操作系统Bianbu原生自带了python减轻了移植的难度,但系统采用的人脸识别模块insightface在移植
    发表于 11-08 11:19

    快速上手!带你用LVGL工具完成乐鑫科技ESP32-S3 2.8寸串口屏UI开发!代码完全开源!

    还在为嵌入式显示界面的开发而烦恼吗?配置环境复杂、移植LVGL困难、烧录过程频频出错——这些问题我们都懂。今天,我们将手把手带你走完启明云端ESP32-S32.8寸串口屏的完整开发流程,让你快速实现
    的头像 发表于 10-30 18:04 2565次阅读
    快速上手!带你用LVGL工具完成乐鑫科技ESP32-S3 2.8寸串口屏UI开发!<b class='flag-5'>代码</b>完全开源!

    2025主流低代码平台有哪些:低代码开发平台选型指南指南

    在企业数字化转型进入深水区的当下,低代码开发平台已从早期的“效率工具”升级为“核心基建”。其工程化能力、流程适配深度、技术延展性与行业积淀,直接决定了企业转型的成效。据Gartner预测,到2026
    的头像 发表于 10-22 11:49 590次阅读

    乾芯课堂系列(一)乾芯QXS320F280049 芯片多种通讯方式OTA流程

    对于初次接触 IDE 和乾芯F280049 芯片、又需搭建远程升级功能的应用开发者来说,“从零移植 OTA 框架” 往往是道耗时又棘手的难关。不过现在,这一难题有了高效解决方案 —— 我们已为乾芯
    发表于 10-15 13:51

    移植的时候发现卡死,为什么?

    请教大佬,我是按照网上的教程来移植的,板子是野火的霸天虎,但是到最后验证的时候出问题了,发现board.c文件中的代码可以运行,但就是运行不到主函数,而是卡死在以下两个函数中 以下是我的主函数和board.c文件
    发表于 09-29 06:28

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇还是以移植RT-Thread Nano到MCUXpresso IDE为主,移植代码可以在nxpic.org.cn论坛搜索到。
    的头像 发表于 08-21 09:49 7040次阅读
    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano<b class='flag-5'>移植</b>

    请问cypd3125在 ( EZ-PD™ CCGx Host SDK) 中的流程代码如何从main.c到所有.c运行里面有文件吗?

    到所有 .c文件代码流我需要知道 CYPD3125-40LQXI_notebook 很复杂才能理解 sdk 的工作流程您能否提供任何文档或解释 CYPD3125-40LQXI_notebook 中
    发表于 08-15 06:58

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文将手把手带你实现VGLite图形驱动适配RT-Thread。文章分为上、下两篇,将手把手教您移植。上篇对RT-ThreadNano内核与Finsh组件进行移植,下篇则教您改写SDK中的VGLite
    的头像 发表于 07-17 14:40 3741次阅读
    RT-Thread Nano硬核<b class='flag-5'>移植</b>指南:手把手实现VGLite图形驱动适配 | 技术集结

    STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植

    本教程将详细介绍如何将STM32微控制器与ESP8266Wi-Fi模块连接到机智云平台,实现温湿度数据的上传与继电器的远程控制。通过此过程,您将学会如何配置机智云平台,烧录ESP8266固件,移植
    的头像 发表于 07-15 18:54 1635次阅读
    STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、<b class='flag-5'>代码</b>生成、<b class='flag-5'>代码</b><b class='flag-5'>移植</b>)

    机智云配网教程第三期:单片机代码移植实战

    :stm32f103c8t6,WiFi模块:ESP-01s,下载器:ST-LINK2.软件:keil5的工程文件模板,mcu代码代码资源:未移植移植后(注:本文是基于stm32标
    的头像 发表于 07-01 17:32 2342次阅读
    机智云配网教程第三期:单片机<b class='flag-5'>代码</b><b class='flag-5'>移植</b>实战

    如何在恩智浦FRDM开发平台上实现代码的高效复用

    从零开始评估微控制器可能充满挑战。即使在编写代码之前,开发人员也需要深入了解想要使用的外设的特性。它们是否能够在不同产品间以一致方式运行?这些所谓的可移植性究竟有多可靠?面对这些不确定性,创建真正可移植
    的头像 发表于 05-27 14:35 1284次阅读
    如何在恩智浦FRDM开发平台上实现<b class='flag-5'>代码</b>的高效复用