430单片机串口的程序升级
MSP430系列单片机软件在线升级设计与实现

2012年第01期,第45卷 通 信 技 术 Vol.45,No.01,2012 总第241期 Communications Technology No.241,TotallyMSP430系列单片机软件在线升级设计与实现唐 文, 刘芳伶(中国电子科技集团第三十研究所,四川 成都610041)【摘 要】根据目前嵌入式终端设备程序升级技术及闪存技术,以MSP430系列单片机程序的在线升级方案为例,介绍了嵌入式终端设备在线升级中两阶段引导技术,采用片内FLASH与片外FLASH相结合的方式,设计并验证了一种基于两阶段引导技术的软件升级维护方案,突破了设备意外掉电导致升级失败的风险避免关键技术。
方案在实际项目中得到大量应用,极大的提高了嵌入式终端设备软件升级的效率。
【关键词】单片机;嵌入式系统;引导程序;FLASH【中图分类号】TP302.1 【文献标识码】B 【文章编号】1002-0802(2012)01-0144-03Design and Implementation of Program Updating for MSP430TANG Wen, LIU Fang-ling(No.30 Institute of CETC, Chengdu Sichuan 610041, China)【Abstract】According to online program updating of chip-in FLASH, the two-stage booting method of embedded system is described. Based on this method and in combination of chip-in FLASH and chip-out FLASH, a new program updating method is designed and implemented, and more attention is paid to the avoidance of updating risk due to the unexpected power failure. This design is now used in actual project, thus greatly raising online program updating efficiency of the device.【Key words MCU;embedded system;boot loader;FLASH0 引言随着嵌入式软硬件技术的发展,大量的消费类电子产品开始使用该技术以实现各种复杂的功能。
MSP430F5438A串口升级程序方法

MSP430F5438A 串口升级程序方法1、内存映射关系如下(可查看相应datasheet):BANKABANKD(64K)BANKC(64K)BANKB(64K)BANKA0X45BFF0X400000X3FFF0X300000X2FFF0X200000X1FFF0X100000XFFFF0X5C00用户中断向量用户程序BOOTLoader0XFCFF0XFC800XFC7F0X6C000X6BFF0X5C00MSP430F5438A 内部flashBANKA 也为64K硬件中断向量区代码区0XFFFF0XFF800XFF7F0X5C00RESET 地址为0xFFFE 正常情况下FLASH 分配情况BootLoader 应用下内存分配RESET 地址为0xFCFE2、修改升级程序和应用程序的xcl 文件: 原来的xcl 文件: // --------------------------- // Code //-Z(CODE)CSTART,ISR_CODE=5C00-FF7F // --------------------------- // Constant data//-Z(CONST)DA TA16_C,DA TA16_ID,DIFUNCT,CHECKSUM=5C00-FF7F // ------------------------------------- // All memory 0-FFFFF //// --------------------------- // Code-P(CODE)CODE=5C00-FF7F,10000-45BFF-Z(CODE)CODE_ID// ---------------------------// Constant data//-Z(CONST)DA TA20_C,DA TA20_ID=5C00-FF7F,10000-45BFF// -------------------------------------// Interrupt vectors//-Z(CODE)INTVEC=FF80-FFFF-Z(CODE)RESET=FFFE-FFFF●升级程序的xcl文件:// ---------------------------// Code//-Z(CODE)CSTART,ISR_CODE=5C00-6BFF// ---------------------------// Constant data//-Z(CONST)DA TA16_C,DA TA16_ID,DIFUNCT,CHECKSUM=5C00-FF7F // -------------------------------------// All memory 0-FFFFF//// ---------------------------// Code//-P(CODE)CODE=5C00-6BFF-Z(CODE)CODE_ID// ---------------------------// Constant data//-Z(CONST)DA TA20_C,DA TA20_ID=5C00-6BFF// -------------------------------------// Interrupt vectors//-Z(CODE)INTVEC=FF80-FFFF-Z(CODE)RESET=FFFE-FFFF●应用程序的xcl文件:// ---------------------------// Code//-Z(CODE)CSTART,ISR_CODE=6C00-FF7F//****// ---------------------------// Constant data//-Z(CONST)DA TA16_C,DA TA16_ID,DIFUNCT,CHECKSUM=6C00-FF7F // -------------------------------------// All memory 0-FFFFF//// ---------------------------// Code//-P(CODE)CODE=6C00-FF7F,10000-45BFF-Z(CODE)CODE_ID// ---------------------------// Constant data//-Z(CONST)DA TA20_C,DA TA20_ID=6C00-FF7F,10000-45BFF// -------------------------------------// Interrupt vectors//-Z(CODE)INTVEC=FC80-FCFF-Z(CODE)RESET=FCFE-FCFF3、将应用程序生成txt文件,然后通过串口助手发送文件形式下发:应用程序txt文件:@6C0031 40 00 5C 3C 40 00 1C 3D 40 68 00 B0 13 90 6E B0 13 A4 6D B0 13 A2 6E 3F 14 1F 42 DE 05 E0 0F 8B 3C 01 3C 89 3C 5E 42 CC 05 7E 90 75 00 84 20 3C 40 00 FA 0D 43 B0 13 2C 6E 3C 40 3C 6D B0 13 7A 6E F2 D0 10 00 43 02 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 0F 43 01 3C 1F 53 3F 93 FD 2B 3C 16 00 13 75 21 00@6D40F2 D0 0C 00 4A 02 F2 D0 03 00 6A 02 92 C3 6C 01 B2 C0 00 01 6C 01 4E 43 02 3C 03 43 5E 53 7E 90 64 00 FB 2B B2 F0 F0 FF 6E 01 A2 C3 02 01 4E 43 01 3C 5E 53 7E 90 64 00 FC 2B 03 43 A2 B3 02 01 F1 2F 1F 42 6C 01 3F F0 FF 3F 3F 50 00 40 82 4F6C 01 B2 F0 3F FF 6C 01 B2 40 55 00 68 01 82 436A 01 10 01 0D 43 B2 40 80 5A 5C 01 B0 13 EC 6D B0 13 40 6D B0 13 56 6E 32 D2 F2 D0 10 00 82 02 0D 43 01 3C 1D 53 3D 93 FD 2B F2 C0 20 00 82 02 3F 40 04 1C 82 4F 02 1C 82 4F 00 1C F2 D0 10 00 43 02 F2 C0 10 00 43 02 F9 3F 03 43 F2 D0 30 002A 02 F2 D0 10 00 24 02 D2 42 4B 02 4B 02 F2 D0 10 00 45 02 F2 C0 10 00 43 02 D2 42 6A 02 6A 02E2 D2 64 02 E2 C2 62 02 F2 C0 20 00 8A 02 F2 D0 30 00 84 02 F2 F0 CF 00 82 02 10 01 32 C2 03 4392 B3 44 01 FD 2F B2 40 00 A5 44 01 B2 40 02 A5 40 01 CC 43 00 00 92 B3 44 01 FD 2F B2 40 10 A5 44 01 32 D2 10 01 D2 D3 C0 05 F2 D0 40 00 C0 05 F2 40 03 00 C6 05 C2 43 C7 05 F2 40 06 00 C8 05D2 C3 C0 05 D2 D3 DC 05 10 01 03 3C E2 4C CE 05 1C 53 E2 B3 DD 05 FD 2B CC 93 00 00 F7 23 10 01 0F 4C 0F 5D 03 3C CC 43 00 00 1C 53 0C 9F FB 23 10 01 80 00 AA 6E FF 3F 03 43 80 00 A6 6E@FCF218 6C @FCFE 00 6C q其中@开头的为将要写入FLASH 的地址,q 为结束标识,其它为填入FLSH 的数据。
单片机串口升级方法

单片机串口升级方法## Firmware Upgrade for Microcontroller Serial Interface (UART)。
### Overview.Firmware upgrades are crucial for enhancing the functionality, reliability, and security of embedded systems. The serial interface (UART) is a commonly used communication channel for firmware upgrades in microcontrollers. This article provides a comprehensive guide to firmware upgrades via UART, covering various techniques and best practices.### Methods for Firmware Upgrade through UART.There are several methods for upgrading firmware through UART:1. XMODEM Protocol: This protocol is widely used forreliable file transfer over serial connections. It utilizes error detection and retransmission mechanisms to ensure data integrity during transmission.2. YMODEM Protocol: This enhanced version of XMODEM offers faster transmission speeds and handles larger files more efficiently. It also supports batch file transfer and automatic file handling.3. Bootloader Method: This approach involves using a dedicated bootloader program stored in themicrocontroller's flash memory. The bootloader is responsible for receiving and programming the new firmware image into the microcontroller.4. UART Bootloader: This method leverages a bootloader that communicates directly over UART. It enables the transmission of firmware images without requiringadditional hardware or software.### Steps for Firmware Upgrade via UART.The general steps for firmware upgrade via UART are as follows:1. Prepare the Host Computer: Install the necessary software and drivers on the host computer to communicate with the microcontroller over UART.2. Configure the Microcontroller: Set up the microcontroller's UART settings (e.g., baud rate, parity) to match the host computer's configuration.3. Select the Firmware Upgrade Method: Choose the appropriate firmware upgrade method based on the microcontroller's capabilities and system requirements.4. Transfer Firmware Image: Use a terminal emulator or dedicated firmware upgrade software to transfer the firmware image to the microcontroller.5. Verify Firmware Update: After the transmission is complete, verify the firmware update by checking the microcontroller's operation or using checksums.6. Handle Errors: In case of errors during transmission or upgrade process, troubleshoot the issues and retry the firmware update.### Best Practices for Firmware Upgrades via UART.To ensure successful firmware upgrades via UART, follow these best practices:1. Use Error Detection Protocols: Employ error detection and correction mechanisms (e.g., XMODEM, checksums) to minimize data corruption during transmission.2. Test and Verify Firmware: Thoroughly test the new firmware image before deployment to avoid potential issues.3. Document Firmware Upgrades: Maintain detailed documentation of firmware upgrades, including the version, date, and any modifications made.4. Secure Firmware Updates: Implement robust securitymeasures to prevent unauthorized firmware updates and protect the system from malicious attacks.### 中文回答:## 单片机串口固件升级方法。
MSP430单片机串口的程序升级方法

MSP430单片机串口的程序升级方法摘要:介绍了一种MSP430单片机通过串口升级程序的方法,并在MSP430F5438上得以实现。
通过实验,证明此方法稳定、可靠,避免了利用仿真器更新程序的繁琐,提高了效率。
关键词:MSP430F5438;串口;程序更新随着性能的不断提高以及成本的降低,单片机在各个领域都得到了广泛的应用。
尤其在信号的控制和处理方面,单片机以其超低的功耗、简单的操作成为设计者的首选。
TI公司推出的MSP430x5xx系列单片机具有低电压、低功耗、高速处理能力以及配置灵活的接口等特点,是当今主流单片机之一。
同其他处理器一样,单片机正常工作除了需要硬件电路以外,还需要相应的用户应用程序。
但应用程序在调试阶段以及实际使用时往往都需要更新,常规的方法需要打开机箱,将仿真器与单片机连接好,再更新程序。
这种步骤比较繁琐,如果操作不当还会损坏设备。
因此,如果能通过单片机已有的简单接口(如串口)更新应用程序,那么将给单片机的使用带来更大的方便。
1 总体思想首先通过仿真器向单片机中写入一段小程序,称之为Bootloader程序。
这个程序不是用户的应用程序,它的作用有两个:第一是在上电的一小段时间里实时检测串口,如果有上位机发出的更新程序命令,就发送握手信号,通知上位机发送更新代码,并将收到的更新代码写入单片机相应的Flash中;第二个作用是当检测到有应用程序存在时,跳转到应用程序的入口地址,执行应用程序。
其流程。
上位机程序(VC++语言编写)的功能是,当用户发出更新程序的指令后,在一段时间内连续发送更新程序命令。
如果收到单片机的应答信号,表示单片机准备开始接收更新代码。
此时上位机读取已选择的代码文件,分段发给单片机。
其流程。
2 相关知识2.1 IAR设置常用的MSP430单片机软件开发环境是IAR C/C++Compiler for MSP430。
用仿真器进行程序烧写以及仿真调试时,在Options→Linker→ Output→Format选项中选择的是“Debug information for C-SPY”,但如果要得到该程序文本格式的代码文件,需要选择Format中的Other选项。
MSP430单片机串口通信详解

MSP430单片机串口通信详解#include"msp430G2553.h"#include "in430.h"void UartPutchar(unsigned char c);unsigned char UartGetchar();unsigned char temp=0;unsigned char number[2]={0};void main( void ){WDTCTL = WDTPW + WDTHOLD; // Stop WDTBCSCTL1 = CALBC1_1MHZ; // Set DCODCOCTL = CALDCO_1MHZ;P1DIR|=BIT6;P1OUT&=~BIT6;P1SEL = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD P1SEL2 = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXDUCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLKUCA0BR0 = 106; // 1MHz 9600UCA0BR1 = 0; // 1MHz 9600UCA0MCTL = UCBRS2 + UCBRS0; // 波特率=BRCLK/(UBR+(M7+...0)/8)UCA0CTL1 &= ~UCSWRST;// 初始化顺序:SWRST=1设置串口,然后设置SWRST=0,最后设置相应中断IE2 |= UCA0RXIE; // 使能接收中断while(1){//UartPutchar(9);// display_int(temp,0);__delay_cycles(10000);}}/**********************************UART接收中断*************************/#pragma vector=USCIAB0RX_VECTOR__interrupt void USCI0RX_ISR(void){//while (!(IFG2&UCA0TXIFG)); // 等待发送完成 //UCA0TXBUF = UCA0RXBUF; // TX ->; RXed charactertemp=UCA0RXBUF;}/******************************UART发送字节函数*************************/void UartPutchar(unsigned char c){while(!(IFG2 & UCA0TXIFG)); //待发送为空UCA0TXBUF=c;IFG2 &=~UCA0RXIFG;}/*********************************UART接收字节数据******************/unsigned char UartGetchar(){unsigned char c;while(!(IFG2 & UCA0RXIFG)); //等待接收完成c=UCA0RXBUF;IFG2 &=~UCA0TXIFG;return c;}/******智能控制工作室*******/MSP430g2553串口通信MSP430的不同型号,其串行通讯工作模式是一样的。
MSP430常见问题汇总(利尔达)

Q11:USB 仿真器下载汇编程序时没有问题,但是下载 C 语言程序时,出报警信息 如下:
The stack plug-in failed to set a breakpoint on "main".The stack window will not be able to display stack contents. (You can change this setting in the Tools>Options dialog box. 在调试信息窗口出现 operation error. A11:调试 c 程序时 在 Tools>Options dialog box 中 stack 要选中指向 main 函数处。 汇编和 c 要建不同的工程下调试。
公司地址:杭州市登云路 425 号杭州利尔达科技大厦 Tel:0571-88800000 Fax:0571-89908519
第3页 共68页
LSD MCU TECHNOLOGY CO., LTD .
利尔达单片机技术有限公司
Q7: 请问 AR 编译器的 s43 文件用什么编辑器打开? A7:打开 IAR 编译器后就可以直接打开了;另外,记事本也可以打开
Q2:我用的 430f22x 学习套件,请问在 IAR Embedded Workbench 中仿真时如何看程序运行时间. A2:只有软件模拟下可以看, VIEW-REGISTER-CYCLECOUNT
Q3:请问各位 msp430 仿真器和编程器有什么区别啊?是不是我开发的时候这两个东西都得有?我目前用的是 msp430cg461x 系列或 msp430fg461x 系列,是不是很多仿真器和编程器都不支持? A3:一般来讲,仿真器是在先期调试程序时使用的,他不会烧断单片机熔丝,能把程序下载到单片机中,能 够单步,跟踪,快速调试。编程器就没有这些调试功能,就是单纯把你做好的程序的编译后文件写到单片机 中去,就和 51 的编程器一样,有加密熔丝烧断等功能,是在你产品成型后,生产时使用的
基于ZigBee的MSP430单片机无线升级技术

基于ZigBee的MSP430单片机无线升级技术李健行;黎英;郭志伟【摘要】为了弥补油气田仪表程序传统更新方式的不足,提高更新效率,从安全、稳定及异常处理等方面考虑,通过ZigBee模块的通信功能和MSP430单片机的Flash存储机制,设计实现了对MSP430系列单片机程序的无线下载技术.现场应用验证了该技术的可靠性、高效性和普适性.【期刊名称】《化工自动化及仪表》【年(卷),期】2016(043)001【总页数】5页(P76-79,92)【关键词】MSP430单片机;ZigBee;程序无线升级;网络安全【作者】李健行;黎英;郭志伟【作者单位】昆明理工大学信息工程与自动化学院,昆明650504;昆明理工大学信息工程与自动化学院,昆明650504;北京安控科技股份有限公司,北京100095【正文语种】中文【中图分类】TH865我国石油开采设备数量多、分布广、地处偏远、环境特殊,传统的相对落后的监测手段需要投入大量的人力、物力和财力来维护生产设备的正常运转[1]。
为此,大量基于ZigBee技术的无线仪表已经被运用到油气田设备上,由于每个井场都有大量的仪表设备,并且用户需求的变化也需要对仪表程序进行适当更新。
而现场仪表往往装配在不易手工连线之处,传统的程序更新方式是通过预留在单片机上的JTAG接口或BSL接口通过有线方式进行升级,但这两种升级方式都必须要拆卸仪表,同时由于仪表对防水性要求很高而且电路板接线复杂,接线拆线过程中可能会引起一些意想不到的问题,不但会严重影响工作效率,而且会缩减仪表的使用寿命。
为了弥补油气田仪表程序传统更新方式的不足,提高更新效率,从安全、稳定及异常处理等方面考虑,通过ZigBee模块的通信功能和MSP430的Flash存储机制,设计实现了对MSP430系列单片机程序的无线下载技术。
基于ZigBee标准的无线仪表之间没有物理连线,并且每个ZigBee模块都有自己的通道号和PID号,将手操器和仪表配置到同一网络中,利用手操器向仪表发送要更新的程序,可靠又快捷地完成程序的下载。
msp430可通过哪些接口进行烧写程序

MSP430可通过哪些接口进行烧写程序?MSP430无论是仿真还是烧写程序,一般可以通过:JTAG、SBW、BSL接口进行。
1、JTAG是利用边界扫描技术,在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430内部数据地址总线上,所以可以访问到430的所有资源,包括全地址FLASH、RAM及各种寄存器。
可以用于对430的仿真和编程,主要连接线有TMS、TCK、TDI、TDO,430还需要另两条线路RST、TEST来启动JTAG 命令序列。
2、SBW是SPY-BI-WIRE,可以简称为两线制JTAG,主要有SBWTCK(连接到JTAG接口的7脚TCK)与SBWTDIO(连接到JTAG接口的1脚TDO/TDI),该接口主要用于小于28脚的2系列单片机,因为28脚以内单片机的JTAG一般与IO口复用,为了给用于留有更多的IO资源,才推出SBW接口。
SBW同JTAG一样可以访问到430内部的所有资源。
注:目前MSP430F5XX系列中也有SBW 接口,原理同2系列的SBW。
3、BSL是TI在430出厂时预先固化到MCU内部的一段代码,该代码用户不可读写,这有点类似与DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。
BSL通过UART协议与编程器连接通信。
编程器可以发送不同的通信命令来对MCU的存储器做不同的操作,可以把这种方式称为BSL接口。
BSL代码的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动时让PC指向BSL内部固化的程序。
这种特殊的启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。
BSL启动后,就可以通过预先定义好的UART协议命令对MCU进行读写访问了。
4、一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,只要把这三种方式都堵上,430的程序不就安全了吗?所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:介绍了一种MSP430单片机通过串口升级程序的方法,并在MSP430F5438上得以实现。
通过实验,证明此方法稳定、可靠,避免了利用仿真器更新程序的
繁琐,提高了效率。
关键词:MSP430F5438;串口;程序更新
随着性能的不断提高以及成本的降低,单片机在各个领域都得到了广泛的应用。
尤其在信号的控制和处理方面,单片机以其超低的功耗、简单的操作成为设计者的首选。
TI公司推出的MSP430x5xx系列单片机具有低电压、低功耗、高速处理能力以及配置灵活的接口等特点,是当今主流单片机之一。
同其他处理器一样,单片机正常工作除了需要硬件电路以外,还需要相应的用户应用程序。
但应用程序在调试阶段以及实际使用时往往都需要更新,常规的方法需要打开机箱,将仿真器与单片机连接好,再更新程序。
这种步骤比较繁琐,如果操作不当还会损坏设备。
因此,如果能通过单片机已有的简单接口(如串口)更新应用程序,那么将给单片机的使用带来更大的方便。
1 总体思想
首先通过仿真器向单片机中写入一段小程序,称之为Bootloader程序。
这个程序不是用户的应用程序,它的作用有两个:第一是在上电的一小段时间里实时检测串口,如果有上位机发出的更新程序命令,就发送握手信号,通知上位机发送更新代码,并将收到的更新代码写入单片机相应的Flash中;第二个作用是当检测到有应用程序存在时,跳转到应用程序的入口地址,执行应用程序。
其流
程如图1所示。
上位机程序(VC++语言编写)的功能是,当用户发出更新程序的指令后,在一段时间内连续发送更新程序命令。
如果收到单片机的应答信号,表示单片机准备开始接收更新代码。
此时上位机读取已选择的代码文件,分段发给单片机。
其流程如
图2所示。
2 相关知识
2.1 IAR设置
常用的MSP430单片机软件开发环境是IAR C/C++Compiler for MSP430。
用仿真器进行程序烧写以及仿真调试时,在Options→Linker→ Output→Format选项中选择的是“Debug information for C-SPY”,但如果要得到该程序文本格式的代码文件,需要选择Format中的Other选项。
2.2 代码文件格式
下面是一个生成的txt文件的内容:
@后面的6C00表示起始地址,接下来的内容需要依次写入6C00开始的地址中。
@FCFF表示程序的复位入口地址,单片机上电或者复位后,程序从这里开始
运行。
最末行q表示结束。
2.3 xcl文件
上面生成的txt文件中的代码存放地址、复位入口地址以及中断入口地址都可以通过配置文件进行修改,这个文件就是xcl文件。
该文件在安装目录的IAR Systems\Embedded Workbench 5.4 Evaluation\430\config中,本文所使用的单片机对应的配置文件是lnk430F543 8.xcl,将其复制到自己创建的工程中以便修改。
在编译器的Options→Linker→Config→Linker command file选
项中指定这个配置文件。
下面是xcl文件中的部分内容:
上面的配置信息含义是代码(Code)和数据常量(Constant data)放在5C00~FF7F和10000~45BFF两个空间中。
中断向量的地址是FF80~FFFF,其中复位向
量的地址是FFFE~FFFF。
2.4 Bootloader程序和用户应用程序的关系
地址空间分配如图3所示。
图3左面是MSP430F5438的空间分配。
在正常的使用中,用户代码占用5C00~FF7F、10000~45BFF两块区域,中断向量为FF80~FFFF。
但含有Bootloader的程序,就与之有所区别了。
即Bootloader程序占用了一部分代码区,同时占有中断向量FF80~FFFF。
而用户需要重新编写一个中断向量表,以及相应的入口地址。
图3右面是Bootloader程序和用户程序以及自定义的中断向量在Flash中的位置。
关于空间位置以及空间大小可以根据实际
情况进行调整。
从图中可以看出,在代码空间中存在着两个独立的程序:Bootloader程序和用户程序。
Bootloader完成的功能是在复位时通过上位机更新用户程序或者调用已经存在的用户程序。
在这里最为关键的是中断向量FF80~FFFF是归Bootloader程序所有的,当有中断发生时,程序首先进入FF80~FFFF空间的地址中(也就是Bootloader的程序中),接着再由Bootloader的中断程序跳转到相
对应的用户中断程序中。
由于用户程序空间以及中断向量都发生了变化,那么需要对配置文件
lnk430F5438.xcl的内容进行修改。
以图3为例,修改如下:
2.5 上位机程序
利用VC++编写带有串口的上位机程序,按照图2所示的流程完成相应的功能。
在操作时,首先打开与单片机连接的串口,选择要更新的文件,之后给单片机上电,就可以进行用户程序的更新了,上位机界面如图4所示。
结论
通过增加一个Bootloader程序,引出一个串口就可以更新程序,使更新程序变得更加容易,在实际使用中起到了事半功倍的效果。
此种方法也同样适用
MSP430其他系列的单片机。