热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于MSP430F5438程序升级介绍防迷路,通过博客收藏

摘要:介绍了一种MSP430单片机通过串口升级程序的方法,并在MSP430F5438上得以实现。通过实验,证明此方法稳定、可靠࿰

摘要:介绍了一种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其他系列的单片机。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
author-avatar
小胖胖的夢2502895687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有