SMT技术 当前位置:首页 > 技术支持 > SMT技术 >

深圳pcb抄板MSP430单片机串口的程序升级方法

 

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