基于TMS320C67系列DSP的FLASH烧写和程序加载研究
- 格式:pdf
- 大小:201.21 KB
- 文档页数:7
TMS320C6x DSP的FLASH引导方法研究与实现关键词:摘要:介绍了TMS320C6x DSP的几种FLASH引导方法,比较了引导过程中基于软件流水的数据搬移方法和QDMA方式的数据搬移方法,并介绍了如何利用在系统编程(ISP)对上电引导程序进行FLASH编程。
通过对实际的TMS32C6711 DSP电路调试实验,证明了以上方法简单易行。
关键词: FLASH存储器上电引导 COFF文件格式 DSPFLASH存储器是在EPROM和EEPROM的基础上发展起来的一种非易失性存储器,在掉电情况下仍能保证数据不丢失,并能够在不离开电路板或所在设备的情况下实施擦除和再编程操作。
由于其具有结构简单、维护便利、存取速度快、对环境适应能力强、抗振性能好等优点十分适合于嵌入式系统的设计和开发,并且已成为目前流行的数字信号处理系统的一个基本配置。
在许多DSP的应用中,系统上电后需要将用户程序从FLASH存储器引导到高速数据存储器中运行。
这就需要给用JTAG接口调试通过的应用程序添加启动代码,将生成的目标文件进行格式转换使其能在线烧写,将转换过的文件利用FLASH烧写程序在线烧写到FLASH中。
本文将介绍引导过程中数据搬移的几种方法,包括QDMA方式的数据搬移方法、CPU直接数据搬移方法以及基于软件流水的数据搬移方法。
经过比较测试,证明了QDMA方式和基于软件流水的数据搬移方法具有优越性。
并且,根据COFF文件格式,编写了比TI公司的HEX60更为直接的转换工具,从而简化了文件的转换步骤。
1 应用程序的FLASH ROM引导当DSP的应用程序从FLASH ROM引导时,目标板都有一个自动的引导程序。
例如,对于TMS320C6x1x系列,目标板的自动引导程序会在系统上电时将FLASH ROM的前1K空间的内容复制到片内内存自0x00开始的地址空间,并从0x00地址处开始运行。
因为需要搬到内存中运行的应用程序的向量表、初始化段等往往超过1K大小,为了能在系统上电时自动引导应用程序运行,就需要在引导的1K代码中包括自定义的引导代码,以将额外需要的初始化代码段和数据段复制到内存中运行。
DSP自动加载过程及程序烧写的简化设计TMS320C6701(以下简称C6701)是一款浮点运算DSP,适用于需要大量运算且实时性要求高的场合,如导航解算等。
在浮点DSP 芯片中,C6701 是一款可应用于恶劣环境并具有高可靠性的产品,因此该型DSP 芯片虽然推出较早,却依然在某些领域具有重要应用价值。
DSP 应用程序需脱离开发系统独立工作,在实时DSP 应用系统中,通常将应用程序存储在外部非易失性存储器(如FLASH、EEPROM、PROM 等)中。
系统上电后,DSP 将外部程序存储器的程序代码加载到可高速存取的RAM 中,加载完成后自动跳转到零地址开始运行。
因此DSP 程序烧写及自动加载是实时DSP 系统设计的重要部分。
本文采用的烧写方法不需要格式转换到外部辅助设备,同时DSP 程序不再进行二次加载,简化了烧写及程序自动加载的过程。
1 加载方案及电路设计1.1 外围电路设计C6701 有三种加载模式:不加载(No Boot)、ROM 加载(Rom Boot)、主机加载(Host Boot)。
这三种加载模式由C6701 的BOOTMODE[4:0]引脚电平设定,由这5 个引脚的设置共同决定使用何种存储空间映射模式。
在恶劣环境及高可靠应用场合中,可使用不加载方式,也可使用程序从ROM 中加载到DSP 片外高可靠RAM 存储器中的运行方式。
FLASH、EEPROM、PROM 等程序存储芯片多为8 位或16 位,在高可靠应用环境中8 位比较常见。
本文中设置BOOTMODE[4:0]为01010B,即程序由外部8 位程序存储器加载到外部32 位SRAM 中,LENDIAN 引脚接高电平。
外部程序存储器选用FLASH 芯片AM29LV160,32 位SRAM 芯片选用ACTS512K32V.FLASH 和SRAM 芯片与C6701 的硬件连接如。
TMS320C6701自动加载及程序烧写的简化设计夏金桥;周文涛;曾勇超【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2014(14)10【摘要】对TMS320 C6701加载过程进行分析后,外围硬件电路、cmd 文件、中断向量表等,采用一次加载的方法实现了DSP系统自动加载过程,并用自己建立的烧写工程实现了DSP程序烧写。
本文的实现方法简化了DSP程序烧写及加载过程。
%After analzing the loading process of TMS320C6701,peripheral hardware circuits,cmd file and interrupt vector table are de-signed.The autoloading process of DSP system is realized by loading at a time,and DSP program writing is realized by designed program writing proj ect.The method simplifies DSP program writing and loading.【总页数】4页(P18-21)【作者】夏金桥;周文涛;曾勇超【作者单位】北京航天时代光电科技有限公司,北京 100094;北京航天时代光电科技有限公司,北京 100094;北京航天时代光电科技有限公司,北京 100094【正文语种】中文【中图分类】TP274【相关文献】1.TMS320C6701 DSP自动加载研究 [J], 王硕果;肖强2.基于TMS320C6455 DSP自动加载及Flash烧写程序的设计 [J], 卫菊红3.AutoCAD 自动加载 VBA 程序研究 [J], 魏磊;田磊4.华中818A数控系统自动加载程序的方式 [J], 薛庆鑫;卢鹏5.TMS320C6701 DSP的程序引导方法及编程实现 [J], 崔旭涛;杨日杰;何友因版权原因,仅展示原文概要,查看原文内容请购买。
基于TMS320C67xx DSP的软件开发及优化
高学强;王玉晶;康锡章
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2003(000)011
【摘要】本文介绍了TMS320C67xx的性能特点,给出了其程序开发流程,并详细讨论了常用的软件优化方法,这些方法有一定的工程应用价值.
【总页数】4页(P22-25)
【作者】高学强;王玉晶;康锡章
【作者单位】海军航空工程学院学员旅,烟台,264001;海军航空工程学院学员旅,烟台,264001;海军航空工程学院电子工程系,烟台,264001
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于TMS320C64XXDSP的软件开发及优化 [J], 郝建伟;芮国胜;倪保航
2.TMS320C64x系列DSP的软件开发和程序优化 [J], 武林伟;郑耀锋
3.TMS320C62x DSP的软件开发与优化编程 [J], 李小红
4.基于MATLAB/Simulink及dSPACE/TargetLink的AMT控制软件开发 [J], 李萍;兰海龙
5.基于GCC的TMS320C67xx汇编代码的优化 [J], 王浩
因版权原因,仅展示原文概要,查看原文内容请购买。
TMS320系列DSP芯片用户程序加载方法的探讨
刘高平;顾伟康
【期刊名称】《微处理机》
【年(卷),期】1996(000)004
【摘要】用户程序加载是开发应用TMS320系列DSP芯片过程中的一个重要环节,本文探讨了实现这项关键技术的各种方法。
【总页数】3页(P52-54)
【作者】刘高平;顾伟康
【作者单位】浙江大学信息与电子工程系;浙江大学信息与电子工程系
【正文语种】中文
【中图分类】TN911.72
【相关文献】
1.DDZ—S系列可编程仪表用户程序的编译,反编译及试运行的设计方法 [J], 吉志海
2.DSP芯片TMS320VC5402的并行自举加载方法 [J], 孙军英;刘波粒
3.TLC32040模拟接口电路与TMS320系列数字信号处理器的接口方法 [J], 王正洪
4.TMS320VC33用户程序加载的四种方法比较研究 [J], 黄杨明;车国轮;吴美平
5.TMS320VC33 DSP用户程序加载方法 [J], 王超;张桂林;杜峥
因版权原因,仅展示原文概要,查看原文内容请购买。
这段时间一直在调试DSP6713的Flash烧写,现在对Flash的烧写也算心中了如。
那天,非常Happy的发现将闪烁LED烧写到Flash成功了,然后,就以为一切都OK了……那天,成功烧写了一个300KB以上的程序,又认为,这次应该OK了……那天,写了个Timer中断程序,烧写到Flash,却死机了……那天,在RAM上运行很流畅的一个算法(算法中调用了CCS的atan函数),在烧写到Flash 后算法却死机了……那天,我开始思考:是什么情况导致RAM中跑得很Happy的程序烧写到Flash就运行得如此的不堪——众多的囧相。
“且行且珍惜”,珍惜这些次发现Bug的机会,因此,我要总结:在RAM中能正常运行,而烧写到Flash后无法正常运行的一些情况讨论。
中断向量表包含了所有中断的入口,在烧写Flash的时候,有两种方式可以保证中断能正常工作。
具体可参见TMS320C6713烧写Flash的通用方法的第5小节。
很多情况下,当出现数组越界时,在RAM中的程序都能正常运行,但在烧写Flash后运行就会出现死机或程序跑飞的现象。
比如定义一个数组,你使用x[5]=10这样的语句在RAM程序中是某些时候能正确运行的,在PC上应该也可以。
但将这种程序烧写到Flash之后运行,DSP果断和你说拜拜!因此,请谨慎地检查程序代码中的数组越界和指针操作。
在DSP程序中,坚决不使用C库函数中的malloc函数。
如果需要动态分配内存的操作,可以自己写一个,或使用uCOS II或DSP/BIOS 等嵌入式操作系统。
也不知道是什么原因,也可能是我对atan函数的使用方法不正确造成的吧。
在我的一个最初的程序中,我是直接这样计算atan(x)的,在RAM中以及在PC中都多次测试过没有任何问题。
烧写Flash之后,也不是死机,但程序运行到atan这个函数的时候会卡上很长一段时间,再接着往下运行。
难道是math.h中的atan运算效率太低?但为什么RAM中就能运行呢?这个还不清楚。