MSP430FR5969 远程升级

发布者:WhisperingWaves最新更新时间:2021-02-03 来源: eefocus关键字:MSP430FR5969  远程升级 手机看文章 扫描二维码
随时随地手机看文章

MSP430 远程升级功能:

基于

1、片外EEPROM(片内flash够大也可使用片内)

2、射频通信

3、上位机软件(传输升级文件)


总结点:

1、程序运行总是从复位中断向量开始寻址入口执行,中断向量就是保存每个中断触发满足后的中断函数的入口地址的存储单元。


根据数据手册上诉说The interrupt vectors are located in the address range 0FFFFh to 0FF80h, for a maximum of 64 interrupt
sources ,默认中断向量位置为0XFF80~0XFFFF,长度为0x80.

MSP430FR5969的头文件中定义复位向量为 #define RESET_VECTOR        (55 * 2u) /* 0xFFFE Reset [Highest Priority] */

默认值0XFFFE~0XFFFF这两个字节是复位中断向量,存储是主函数在FLASH的运行起始地址。如主函数保存在

P(CODE)CODE=4400-4A00

则0XFFFE内保存的是0X00,0XFFFF内保存的是0X44;则系统复位后,就到0XFFFE,0XFFFF中去寻找主函数的入口地址。

其他中断函数的运行地址也保存在相应的向量中,当触发中断的条件满足后,程序根据中断向量内所指的地址去寻址中断函数的入口地址。

工程建立产生一个link文件(.xcl文件),文件中定义了内存划分,CODE代码段存储位置,中断向量表默认值从0XFF80~0XFFFF表述为

-Z(CONST)SIGNATURE=FF80-FF8F
-Z(CONST)JTAGSIGNATURE=FF80-FF83
-Z(CONST)BSLSIGNATURE=FF84-FF87
-Z(CONST)IPESIGNATURE=FF88-FF8F
-Z(CODE)INTVEC=FF90-FFFF
-Z(CODE)RESET=FFFE-FFFF

2、要进行远程文件升级,则需要将代码划分为两段代码:BOOT、应用程序APP两段代码,若有升级文件,在应用程序中接收文件存储入片外epprom,再使用BOOT将文件搬移到应用程序区。

3、前面谈到程序运行总是从中断向量表中启动,那么内存中有两段代码(BOOT、应用程序APP),他们的中断向量指向的位置就不能一致,即需要修改link文件。

我们使BOOT代码的启动位置为默认值,修改应用程序的启动区和代码区存储位置

BOOT的link文件

-P(CODE)CODE=4400-4A00
-Z(CODE)CODE_PAD
// ---------------------------
// Constant data
//
-Z(CONST)DATA20_C,DATA20_ID,CODE_ID=4400-4A00,
// -------------------------------------
// Signature memory and interrupt vectors
//
-Z(CONST)SIGNATURE=FF80-FF8F
-Z(CONST)JTAGSIGNATURE=FF80-FF83
-Z(CONST)BSLSIGNATURE=FF84-FF87
-Z(CONST)IPESIGNATURE=FF88-FF8F
-Z(CODE)INTVEC=FF90-FFFF
-Z(CODE)RESET=FFFE-FFFF

应用程序的link文件

-P(CODE)CODE=5000-FE7F,10000-13FFF
-Z(CODE)CODE_PAD
// ---------------------------
// Constant data
//
-Z(CONST)DATA20_C,DATA20_ID,CODE_ID=5000-FE7F,10040-13FFF
// -------------------------------------
// Signature memory and interrupt vectors
//
-Z(CONST)SIGNATURE=FE80-FE8F
-Z(CONST)JTAGSIGNATURE=FE80-FE83
-Z(CONST)BSLSIGNATURE=FE84-FE87
-Z(CONST)IPESIGNATURE=FE88-FE8F
-Z(CODE)INTVEC=FE90-FEFF
-Z(CODE)RESET=FEFE-FEFF

表述为BOOT应用程序代码存储位置从0X4400开始,中断向量默认

应用程序代码存储位置从0X5000开始,中断向量修改为从0XFE80~0XFEFF


4、BOOT程序设计和应用程序设计

应用程序设计:(上位机软件->射频升级文件传输->设备接收)设备接收存储入片外EEPROM,将中断向量修改为BOOT的向量表

memcpy((ST_UINT16 *)0xFF80, (ST_UINT16 *)0xFF00, 0x80);/* 中断向量改成boot的起始地址。FF00为boot的向量备份 */

重启代码,程序从BOOT开始运行;

BOOT程序设计:检测片外EEPROM是否有升级文件,若有则将数据拷贝到片内存储(),擦除片外EEPROM

memcpy((ST_UINT16 *)0xFF00, (ST_UINT16 *)0xFF80, 0x80);
/* 还原中断相量 */
memcpy((ST_UINT16 *)0xFF80, (ST_UINT16 *)0xFE80, 0x80);

将BOOT的中断向量备份到0XFF00,将应用程序的中断向量0XFE80拷贝到FF80,重启程序BOOT程序(0xFF80),程序即从应用程序指定的位置(0xFE80)开始执行应用程序。


5、将boot和应用程序同时烧进单片机

boot程序生成TXT文件,应用程序生成TXT文件,使用工具将两个文件拼接生成.bin与.txt文件,使用FET-Pro430烧写进430单片机

首次程序运行为从默认0XFF80开始运行,开始执行BOOT程序,检测到EEPROM无升级文件,备份BOOT中断向量到0XFF00,将中断向量改为应用程序中断向量0XFE80,重启BOOT程序,则程序指向应用程序中断向量,开始运行应用程序;

收到升级文件.bin,存储数据,将BOOT的备份向量0XFF00拷贝到0XFE80,重启应用程序,则程序指向BOOT中断向量,开始执行BOOT程序。


关键字:MSP430FR5969  远程升级 引用地址:MSP430FR5969 远程升级

上一篇:MSP430移植FreeRTOS(一) FreeRTOS的代码下载
下一篇:msp430g2553输出PWM波

推荐阅读最新更新时间:2024-11-12 17:49

通过SPI方式实现LPC17xx的远程升级设计
一、设计方案简介 本方案基于NXP的LPC1768微处理器为平台,使用KEIL MDK4.70A为开发工具,通过SPI的方式实现程序的自动更新。 本方案程序由bootloader、低区用户程序,高区用户程序三部分组成。Bootloader实现程序的跳转及IAP程序的烧写。低区程序位于LPC1768的0x1000~0x2FFFF处,高区程序位于LPC1768的0x30000~0x67FFFF处。 待更新的程序放置于外部存储芯片N25Q256的0x00100000处,并占据48个扇区。LPC1768的bootloader通过SPI的方式读取N25Q256的数据并更新程序至高区用户程序,更新成功后,程序复位,运行更新后的程序
[单片机]
通过SPI方式实现LPC17xx的<font color='red'>远程</font><font color='red'>升级</font>设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved