56F8013程序Flash的在线可编程特性及应用
摘要: 基于数字信号控制器56F8013内部程序Flash在线可编程特点编写具有在应用可编程(In-Application Programm)功能的程序可以方便嵌入式软件开发。本文在介绍56F8013的Flash编程方法的基础之上,描述一种它的自举程序(Bootloader)实现方法。该方法应用在智能汽车竞赛直立车模控制系统开发过程中,加快了车模现场调试的过程。该方法原理同样适应于飞思卡尔公司数字信号控制器系列其它单片机开发。
本文引用地址:https://www.eepw.com.cn/article/134970.htm智能汽车竞赛要求必须采用飞思卡尔公司的微控制器作为控制单元的核心芯片,数字信号控制器(DSC)系列具有运算速度快、功耗低、外围设备丰富等特点,非常适合智能汽车竞赛车模控制。在竞赛秘书处提供的直立车模控制参考方案中就采用了DSC56F8013芯片组成控制核心电路[1]。该芯片不仅内部硬件资源可以满足车模控制要求,而且它的软件开发环境Codewarrior中的PE(Processor Expert)可以自动生成芯片中各硬件模块的接口代码,使得开发者只需关注应用软件的开发,这样便可以提高软件的开发效率和准确性。
在DSC56F8013的程序开发和调试中,可以使用专用的JTEG调试工具,这种方式在车模控制系统开发中具有一定缺点。车模现场调试中,单片机的代码和参数需要频繁的进行更新,使用JTEG调试工具,调试接头的引线很多,插拔接头不便。特别是无法在车模运行时实时监测内部程序控制参数。
近些年来一种在应用编程(IAP,In Application Program)技术广泛应用在嵌入式系统软件开发中。IAP技术就是利用单片机系统已有的通信硬件接口,单片机应用软件通过这些接口与上位计算机通讯,接受新的单片机程序并重新烧写在单片机的Flash中。通过这种程序下载和运行监控的方式完成软件的开发与升级。这种方式无法达到专业JTEG开发工具的程序单步跟踪调试的功能,但可以借助于单片机的通信接口或者其它显示界面将软件运行的状态进行显示,帮助分析软件运行的状态。特别是在单片机底层硬件模块的接口软件都已经有PE自动生成,应用层软件都是用C语言开发,所以通常不需要进行软件的但不跟踪调试。因此基于IAP 进行软件开发可以满足一般嵌入式软件开发的要求。
利用IAP开发软件需要满足两个条件:第一个是单片机内部Flash必须可以通过自身应用程序进行更新;第二个是在应用软件中包含一个专门的程序自举模块(Bootloader)完成程序的下载。Bootloader模块位于Flash的固定位置,它的程序代码不需要进行更新。单片机应用软件在特定的触发条件下可以进入该模块执行命令,专门进行更新单片机软件。本文将介绍56F8013单片机的内部Flash的编程功能以及基于此实现Bootloader的功能,也可利用对Flash编程特点实现控制软件参数的存储和更新功能。
56F8013内部FLASH编程
56F8013是一款32管脚LQFP封装的DSC芯片[2],内部资源包括有:运行频率32MHz的DSP和MCU功能统一的内核,16KB可编程Flash,4KBRAM, 串行接口UART,SPI,I2C各一个,此外还包含有PWM,ADC,TIMER以及片上时钟电路。这些丰富的资源以及低廉的价格使得它在工业、医消费类产品方面得到了广泛的应用。特别是它内部Flash可以由程序编程,这为它实现IAP功能提供了基础。
56F8013内部的程序和数据存储器地址空间分布如下图所示:

其中2KB的RAM可以同时在程序和数据两个空间访问,程序指令可以通过数据拷贝传送到RAM中执行,这一特点对于Flash编程的指令特别重要,因为它们需要在RAM执行。对于56F8013内部Flash编程是通过三个Flash模块寄存器编程来完成的,它是分别是Flash编程命令寄存器、控制寄存器以及状态寄存器。用户不必深入了解如何通过这些寄存器完成对Flash编程的过程,只要通过开发集成环境中的PE可以方便的生成对Flash编程的函数。下图显示了使用PE增加CPU内部外设中的Memory中IntFlash组件的界面。

c语言相关文章:c语言教程
单片机相关文章:单片机教程
单片机相关文章:单片机视频教程
单片机相关文章:单片机工作原理
评论