文档详情

MSP430程序自升级实现原理和过程.PDF

发布:2018-11-03约1.78万字共13页下载文档
文本预览下载声明
www.M 微控网 MSP430 程序自升级的实现原理及过 作者: 乔海坤 控论坛特约 DC 控论坛版主 更新: 01 在过去有很多公司或个人对于MSP430 单片机串口自升级技术都当一个技术机密。而TI 公布的是 汇编语言编写的例子,在理解上也不便。而在网络上也很难得到公开例程,这样使得部分MSP430 用户想实现这个功能时极为艰难。 为此, 控论坛和大家分享如何利用MSP430 单片机串口自升级的实现实验。希望能够透过这一个 实验能给到大家在这方面应用的启蒙和参考。如果你想要优化或增加一些特殊功能,比如增加密码 等功能则需要用户去编写了。如果你对这些程序做了更好的修改优化,欢迎到 控论坛来与我们一 起分享。 实验流 [1] 先往MSP430 单片机写入一个自升级引导程序。 [2]利用MC430FUT.EXE 软件下载用户应用程序到MSP430 单片机。 实验工具: 本次实验采用的是 控的 MC430F14+开发板和并口仿真器。单片机型号选用的是 MSP430F147。 基础原理: 首先我们要用MSP430FET 仿真器在WE430 上下载一段引导程序到MCU 上。引导程序需要固定 在FLASH 中一个位置上,且保证不能被擦除。在本例中,咱们选择固定在 0Xfa00 后的空间。关 于这个固定位置,用户可以灵活一些。只要后面有空间够放一个引导程序就基本可以了。 引导程序工作程序如下: //****************************************************************************** // 描述: 引导程序主程序,此程序首先下载到MSMP430 单片机中 void main(void) { W DTCTL = WDTPW + WDTHOLD; // 关WDT if(ResetVectorValid()==1) // 判断是否已经下载过应用程序 Page 1 of 13 微控网:MSP430 Flash 程序自升级实验演示 www.M 微控网 { Application(); // 执 应用程序 } Update(); // 执 升级程序 } //****************************************************************************** 主程序中主要判断FLASH 中是否已存在着有应用程序,如果有应用程序则执 应用程序,否则执 升级程序。这是基本的引导程序功能。当然要控制是否要执 升级程序的办法有很多,比如可以 通过IO 来控制等等。从引导程序进入应用程序很简单,只需要将PC 值转移到相应的应用程序起 始地址位置即可。 如果需要升级程序,进入升级程序后,首先是初始化串口,在本例中是使用串口0 来实现与上 位机的通讯,在这里我采用了查询的方式,这样做是为了简单,在引导程序中尽量不使用中断,如 果使用了串口中断,应用程序中也有相同的串口中断,处理会比较麻烦;只需将接收到的数据全部 写入到flash 中相应的位置。 补充知识 在未实验之前,我想为大这有补充一下关于MSP430 单片机烧录文件.txt 的知识。下面是一个串口 调试的C 例子和生成烧录.txt 文件内容。至于下程序内容,在这里不必详细多讲了,主要实现串口 收发实验。 #include msp430x16x.h void main(void) { W DTCTL = WDTPW + WDTHOLD; P3SEL |= 0x30; ME1 |= UTXE0 + URXE0; UCTL0 |= CHAR; UTCTL0 |= SSEL0; UB
显示全部
相似文档