TMS320F2812三种运行方式在SRM控制中的应用
1.3 Flash到RAM全搬运运行
Flash直接运行归根到底就是实现了一个函数从Flash到RAM的搬运,而Flash到RAM的全搬运运行就是将所有初始化段全部搬运到RAM的一种运行方式。因此,其程序流程也与Flash直接运行类似,即code_start-> wd_disable-> copy_sections-> c_int00-> main()。与Memory_ copy不一样的是,copy_sections搬运的是由编译器编译生成的初始化段(.text、.cinit、.pinit等),而不是某一个函数了。所以,不能把该段放到C语言环境建立之后,而应在屏蔽看门狗后,否则程序无法运行。而且,搬运代码也只能用汇编语言编写,具体程序在文件DSP28 xx_SectionCopy.asm中实现,以.text段的搬运为例:

代码把烧写地址和运行地址分别存储到XAR6和XAR7寄存器后,并将该段大小存入累加器ACC,通过判断累加器ACC是否为零来完成某个段的复制。copysections段直接分配到Flash地址空间。而被搬运的.text段在CMD文件中的配置则与Flash直接运行方式的ramfuncs段的配置类似,.text段烧写到Flash空间,复制到RAM后再运行。
另外,DSP281x_CodeStartBranch.asm中的.ref_c_int00应修改为.ref copy_sections,同时将wd_disable映射到wddisable段,并分配到Flash地址空间。
2 SRM控制应用研究
TM8320F2812的三种运行方式下载与运行存储介质的不同,使得三种运行方式的特点不尽相同,各有利弊,适合于不同情况下SRM控制的程序调试。
RAM调试运行代码下载到RAM,并采用H0启动模式,程序直接在RAM上运行,运行速度快,可以正常地运行于150MHz的系统时钟下。而且,主机通过仿真器与TMS320F2812相连,能够在线调试程序,例如启动、停止、单步运行、设置断点等等。在线调试功能对于刚开始的代码编写和修改是非常有用的,但RAM调试运行受限于RAM空间的大小,无法运行很大的程序;同时,必须使仿真器与主机相连,否则无法运行程序。RAM掉电代码消失的特点更是限制了RAM调试运行方式在实际中的应用。因此RAM调试运行适合于初期SRM控制的程序调试。此时,SRM控制的母线电压值不是很高,程序代码不是很大,同时可以很方便地观察一些变量的变化,方便记录分析。
当SRM控制的母线电压值提升上来(220 V以上)后,程序越来越大,设计也越趋于完善,不可能一直使用仿真器进行调试,将程序下载到Flash就成为了唯一的选择。Flash直接运行代码烧写到Flash中,采用Flash启动模式,程序最终在Flash上运行。128K的地址空间能够满足大程序的运行,而且烧写到Flash的代码掉电后不会消失,也不需要再连接仿真器,使得TMS320F2812能够很好完成实际应用。但Flash运行速度慢,对运行时间要求苛刻的程序如直接在Flash上运行,往往不能满足要求,使得SRM工作性能下降。
Flash到RAM全搬运运行综合了二者的优点,代码烧写到Flash中,在C语言环境建立之前先将所有初始化相关段搬运到RAM中再运行,既实现了代码的掉电不消失,又保证了代码的全速运行。唯一的缺点就是受限于RAM空间的大小,不能运行太大的程序,否则可能溢出。
为了简单验证3种运行方式的不同,本文利用了TMS320F2812的32位CPU定时器Cputimer0,因为该定时器工作于150 MHz,可以更好地看出各种运行方式的不同。Cputimer0产生40 kHz高速中断,在中断服务程序中翻转某GPIO口电平,观测其波形,频率应为20kHz。代码在RAM中运行正常,频率为20 kHz;而在Flash中运行要慢一点,为19.97kHz。而且程序越大,这种限制也就越明显。
3 结论
本文详细地介绍了TMS320F2812的3种运行方式的实现方法,对它们运行的特点进行了分析,并作了简单的实验验证。3种运行方式各有利弊,在实际SRM控制应用中,应该充分地理解它们各自的特点,选取最适合的方式更快、更好地完成实际应用。本文引用地址:https://www.eepw.com.cn/article/160632.htm
评论