摘要: 本文在介绍56F8013的Flash编程方法的基础之上,描述一种它的自举程序(Bootloader)实现方法。该方法应用在智能汽车竞赛直立车模控制系统开发过程中,加快了车模现场调试的过程。该方法原理同样适应于飞思卡尔公司数字信号控制器系列其它单片机开发。
智能汽车竞赛要求必须采用飞思卡尔公司的微控制器作为控制单元的核心芯片,数字信号控制器(DSC)系列具有运算速度快、功耗低、外围设备丰富等特点,非常适合智能汽车竞赛车模控制。在竞赛秘书处提供的直立车模控制参考方案中就采用了DSC56F8013芯片组成控制核心电路[1]。该芯片不仅内部硬件资源可以满足车模控制要求,而且它的软件开发环境Codewarrior中的PE(Processor Expert)可以自动生成芯片中各硬件模块的接口代码,使得开发者只需关注应用软件的开发,这样便可以提高软件的开发效率和准确性。
在DSC56F8013的程序开发和调试中,可以使用专用的JTEG调试工具,这种方式在车模控制系统开发中具有一定缺点。车模现场调试中,单片机的代码和参数需要频繁的进行更新,使用JTEG调试工具,调试接头的引线很多,插拔接头不便。特别是无法在车模运行时实时监测内部程序控制参数。
自举程序(Bootloader)设计
实现IAP过程中,一般将更新程序功能的代码设计成独立的自举程序(Bootloader)模块。将它烧写在单片机内部特定的位置。
通过自举程序下载单片机程序的系统硬件连接如图1所示。
56F8013电路板通过串口电平转换器与上位计算机相连。这个串口既可以下载单片机应用程序,同时也可以对单片机程序运行进行监控。实现Bootloader功能包括单片机程序和上位计算机的下载程序两部分,下面分别进行介绍。
Bootloader程序的功能描述和开发
根据上述代码空间划定,单片机在复位之后,首先执行Bootloader程序,在Bootloader程序中,先检查在一定时间内(一般设置为100ms左右)是否接受到用户通过串口发送的0x55数据。如果受到了0x55数据,并在最后由0xaa数据结束,便进入Bootloader命令状态,接受相应的程序下载指令,进行程序的更新。否则便从0x1AFF读取用户程序的起始地址,开始执行用户程序。具体的启动过程如图3所示。
也可以通过设定一定的触发条件从用户程序直接跳转至Bootloader程序。在Bootloader命令状态下,可以接收上位计算机发送一组处理命令,如表1所示。上位机程序通过上述三个基本命令便可以完成对56F8013内部Flash的编程。
开发Bootloader程序可以在CodeWarrior提供创建新工程文件serial_bootloader模板基础上进行改写完成。模板serial_bootloader提供了Bootloader程序所必需的串口通讯、Flash读写子程序[3]。特别是Flash访问程序比起PE生成的子程序更加简捷。虽然在serial_bootloader模板中已经可以直接接收通过超级终端发送的S-记录格式的单片机程序完成程序的下载功能,但效率低,而且用户程序开发不方便。通过重新改写之后,可以直接下载程序的二进制代码,可以提高下载速度,方便用户程序开发。
计算机下载程序功能描述和开发
(1)读取单片机的执行文件。单片机执行文件大多以Intel HEX文件格式,或者Motorola的S-Record的格式存储。安装这些文件格式标准,下载程序将单片机程序转化成可以对Flash进行编程的二进制数据。
(2)对于单片机二进制格式的程序前面两个跳转指令数据修改成两条JMP 0x1B00指令数据,并保存原有程序的起始地址;
(3)通过串口完成对单片机的复位,同时发送0x55和0xaa数据,引导单片机进入Bootloader命令状态。
(4)通过Bootloader的擦除和编程命令完成对单片机Flash的程序下载,并将单片机程序的首地址编程在0x1AFF位置。
(5)通过执行用户程序命令或者重新复位单片机执行新的用户下载的程序。
下载程序除了完成上述功能之外,还可以根据用户程序功能需要,通过串口实现用户程序状态的监控。比如下图显示的是使用C++Builder开发的直立车模控制的程序下载和监控软件。该软件在下载单片机程序的功能基础之上,增加了车模采集和控制数据的显示功能和参数设置功能。
下位机的数据可以通过有线连接或者无限数据传输模块发送到上位机程序,实时显示成曲线,方便对车模控制单片机状态的监控和故障的诊断。同时也可以将控制程序的参数发送到单片机,存储在单片机Flash的参数区域,减少了单片机程序修改和下载次数,大大提高了程序开发的效率。
下载Bootloader程序
往56F8013第一次下载Bootloader程序有以下三种方法:
● 使用JTAG/OnCE接口;
● 使用专用编程器;
● 使用DSC内部Flash中预置的串口Bootloader。
上述三种方法中,最为方便的是第三种方法。使用新的56F8013单片机内部Flash预置的Bootloader程序,只需要借助于单片机的串口便可以完成第一次程序的下载。微机通过串口转换器与单片机的串口相连。新的单片机上电后便处于S-Recorder文件接收状态。通过Windows的超级终端软件的文件发送模式,将单片机Bootloader执行程序S-Record格式的文件通过计算机串口发送给单片机便可完成程序的下载。计算机串口配置为:波特率为115200bps,流控制是Xon/Xoff,字节格式为八个数据位,无奇偶校验位,一个停止位。详细参加参考文献[4]。预置的Bootloader只能使用一次,它将被下载的用户程序覆盖。在完成56F8013的Bootloader下载之后,便可以基于该Bootloader完成用户程序的开发和下载调试了。
上一篇:基于嵌入式系统的违章车辆视频检测系统
下一篇:杭州成功开发电动车自动底盘换电技术
- LTC2862ACS8-1 ±60V 20Mbps 电平转换器/隔离器的典型应用
- 四开关BUCK-BOOST开发板
- AM2G-2409DH30Z ±9V 2 瓦 DC-DC 转换器的典型应用
- 用于电池充电器的 LTC1174-5 降压转换器的典型应用电路
- LTC2926,典型的 2 电源跟踪应用
- 使用 Infineon Technologies AG 的 OMR9603SF 的参考设计
- 用于 Intel 486TM DX4TM Overdrive 微处理器的 LT1587CT-3.3 3.3V/3A 低压差稳压器的典型应用
- ESP32开发板
- LT8570IMS8E-1 1.2MHz 升压转换器的典型应用从 9V-16V 输入产生 48V
- 在主/从中使用 LTC3612IUDC 降压稳压器以使用 1MHz 外部时钟实现一致跟踪输出的典型应用