微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 浅析TMS320F2812片内Flash在线烧写技术

浅析TMS320F2812片内Flash在线烧写技术

时间:07-18 来源:互联网 点击:

TMS320F2812(以下简称F2812)是美国德州仪器公司(TI)新一代32位定点数字信号处理器(DSP),主要应用于逆变器控制、电机控制等领域,并拥有工作频率高达150 MHz的32位DSP内核处理器,可以高效可靠地实现自适应控制和状态控制等。因此,TMS320F28X系列DSP已成为自动控制领域的首选控制器件。F2812片内拥有高达128 KBx16位的F1ash程序存储器,可以满足大多数程序存储需要。在研究基于JTAG接口的两种常用Flash烧写技术(CCS插件烧写技术和Flash281x_API函数库烧写技术)的基础上,提出了一种利用RS485与PC机的串行通讯实现Flash烧写的方法。

F2812片内Flash简介 TMS320F2812原理与开发
F2812带有128 KBxl6位的片内Flash存储器,分为4个8 KBxl6位和6个16 KBxl6位的扇区,用户可以单独擦除、编程和验证Flash的一个扇区而不会影响其他扇区,但不能用F1ash的一个扇区执行Flash的算法对其他扇区擦除或编程。F1ash还可映射到程序数据空间,因此它既可用于执行代码,也可存储数据信息。

TI代码产生工具所产生的目标文件是一种模块化文件格式一一COFF格式,即.out文件。程序中的代码和数据在COFF格式文件中以段形式形成,不同的段存放不同类型的内容.应用中通过编写连接器命令文件(.cmd)将这些段正确地分配到DSP的地址空间,DSP集成开发环境CCS经编译链接之后。生成.out文件和.map文件。.map文件详细描述了.cmd文件中定义的各段起始地址以及使用长度。而out文件为COFF格式,DSP能够识别,但不能直接烧写到Flash,必须将.out文件转换为Flash能识别的数据格式,即.hex的数据文件。利用CCS转换和.hex转换工具HEX2000进行转换。

基于JTAG的烧写技术

3.1 CCS插件烧写技术

利用烧写插件完成Flash的烧写无需数据转换,只需通过程序调试生成.out文件即可。由于调试阶段程序的.cmd文件存放在F2812的RAM,而烧写阶段程序则存放在Flash,即调试阶段程序的重新定位不能在CCS环境下运行,需要编写两个不同的.cmd文件。

3.2 Flash281x_API函数烧写技术

F1ash281x API函数库烧写技术是利用TI公司的编程算法.该算法定义良好,操作简单,而且可以脱离烧写插件,真正实现在线烧写。

编程算法中函数定义如下:(1)擦除扇区的函数为Uintl6F1ash2812 Erase(SectorMask,FStatus),其中,SectorMask为擦除指定扇区;Fstatus为状态值,判断操作是否成功。(2)烧写程序到F1ash函数为Uintl6 Flash2812_Program(FlashAddr,BuffAddr,Length,FStatus),其中FlashAddr为程序在Flash中烧写的起始地址;BuffAddr为程序当前存放在内存空间的首地址:Length为程序长度;Fstatus为状态值,判断操作是否成功。(3)校验烧写到Flash中的程序为Uintl6 Flash2812_Verifv(&FlashAddr,&BuffAddr,Length,&FStatus)。

Flash28x_API函数烧写步骤如下:

(1)先将.hex格式数据下载到F2812的内存.在CCS环境下完成File→Data→Load,并存放地址和数据长度两个参数,其中数据长度可以通过HEX转换为.map文件获得。

(2)编写基于Flash281x_API函数的烧写程序。先擦除相应的Flash扇区,通过Flash2812_Erase函数完成;将数据的起始地址和数据长度两个参数分别赋给FlashAddr和Length变量,然后调用Flash2812_Program函数开始烧写,最后调用Flash2812_Verify函数确定烧写是否成功。

Flash API与用户工程建立关联后,目标代码通过调用API函数,实现对Flash的擦除、烧写和校验等操作,Flash的密码保护值不全为0,否则Flash将被锁死导使无法解锁。

串口烧写FlaSh技术

基于JTAG的烧写技术必须在CCS环境下通过JTAG接口实现。虽然基于JTAG接口的两种烧写方法易于操作,方便调试,但常常受空间和传输距离限制。比如一台DSP系统安装在复杂、封闭的环境下,当程序需要更新或升级时,利用JTAG接口难以实现Flash的在线烧写。而通过串口烧写技术采用“程序”烧写“程序”的方法则不受限制。前一个“程序”指已固化程序,用于实现串口烧写的时机判断、数据接收及烧写的具体实施等,该程序使用了Flash281x_API库编程算法;而后一个“程序”是用户的应用目标代码。

实现串口烧写技术软件分为PC机内用于数据发送的顶层软件和目标机内的底层软件。顶层软件可实现用户程序的解析等;而底层软件可实现由串口发送的数据烧写至Flash。F2812 DSP每次上电复位,先运行底层软件,判断是否需要重新烧写Flash。若需要,则将串口发送的目标代码烧写至F2812片内Flash指定扇区;否则将继续执行原有的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top