基于TMS320C6713及AM29LV800B的上电自举设计
扫描二维码
随时随地手机看文章
TMS320C6713(以下简称C6713)是TI公司推出的高性能浮点运算DSP,采用超常指令字(VLIW)结构。时钟速率为300 MHz、225 MHz、200 MHz、167 MHz。EMIF作为C6713与外部存储器之间的接口,可支持与各种外部器件无缝(即可寻址空间已分配完毕,且地址一致连续)连接。EMIF存储器映射由4个(CE0~CE3)空间组成,这4个空间彼此独立,实现不同访问控制。C6713 DSP包含从Ox00000000地址开始的256 KB内部RAM,但其内部无非易失性存储器,需要外扩F1ash或ROM等非易失性存储器。
选用AMD公司的AM29LV800B Flash,具有1 Mx8 bit/512 Kxl6 bit的存储空间,16位数据总线。支持程序写、擦除和悬挂,支持Flash数据集成,兼容普通F1ash接口F1ash In—terface(CEl)。
2 上电自举硬件设计
图1为C6713与AM29LV800B的硬件原理框图。
2.1 硬件连接说明
图1中C6713和AM29LV800B数据总线、地址总线和控制信号均经过33Ω排阻平波后相连接,这样可有效减小总线上的信号波动,提高系统抗干扰能力。
Flash可提供硬件和软件2种方法判断其工作状态,以确定数据写入或擦除操作是否完成。其软件方法是利用从F1ash读取的数据判断其状态,读取数据中的主要判断位为SR7~SRl,它们之间的相互组合提供了软件判断工作状态的方法。硬件判断方法主要是利用F1ash的外部引脚输出信号在命令序列的最后一个写脉冲的上升沿后有效。当该引脚输出低电平时,表示Flash正在编程或擦除,而当该引脚输出高电平时,表示编程或擦除已完成。将此引脚与C6713 DSP的ARDY引脚相连,即可实现编程和擦除完成的硬件自动判断。
由于Flash是从CEl空间加载程序,因此DSP的CEI与Flash的片选CE相连,这种连接可将Flash的内部地址映射到DSP地址0x90000000上。
2.2 引导模式设定
如图1和表1所示HD3和HD4(HD[4:3])可通过跳线与3.3 V和地连接。当拔去跳线帽时,HD[4:3]引脚输入电平
“10”,引导模式设置为16 bit异步外部ROM引导,即系统中使用Flash引导。当插上跳线帽时,HD[4:3]引脚输入电平“00”,引导模式设置为32 bit主机口/仿真器引导
3 上电自举过程
当系统上电时,由引导程序将应用程序从外部存储器引导到DSP应用板上的高速存储器或DSP内部RAM中运行,该过程就是上电自举过程。由于Flash具有电信号删除功能,且删除速度快,集成度高,已成为此类外部存储器的首选。
和以往TI公司的DSP引导方式不同,TMS320C6000系列DSP采用一种新的引导方法。对于C6713,若HD[4:3]引脚输入电平为“10”,当上电或系统复位时,DSP会自动将位于Flash地址空间(0x90000000~0x9FFFFFFF)开头的1 KB代码传输到RAM存储空间“0”地址处,这就是一次引导。它的数据传输采用默认时序,由DSP中的EDMA通道以单帧形式自动传输。传输完成后,程序从地址“O”开始运行。这些均由DSP自动完成。很明显,一次引导的代码并不能满足绝大多数编程者对代码长度的要求,因此就需要二次引导过程。二次引导是将DSP一次引导的l KB代码编写成一个搬移程序,将用户的主程序搬移到高速RAM中,并且搬移完成后自动跳转至主程序入口处运行主程序。综上所述,C6713的上电自举过程分为一次引导和二次引导,其中,一次引导由DSP自动完成,而二次引导则由用户通过编程完成。
4 上电自举及烧写软件设计
图2为整个上电自举过程所需程序和各程序的搬移过程。首先将编译连接好的引导程序、主程序和烧写程序按照先后顺序由仿真器下载至DSP内部RAM,再执行烧写程序,将引导程序和主程序烧写到Flash,然后断开仿真器,关闭CCS.重新上电或复位DSP板,DSP自动将Ox90000000~0x900003ff(1 KB)地址的数据全部搬移到I)SP内部“0”地址开始的l KB空间中。搬移结束后,自动执行引导程序进行二次引导,将主程序和中断向量表搬移到内部RAM中,从而结束整个上电自举过程。
4.1 引导程序
以下为引导程序部分代码:
A行利用汇编伪指令“.sect”为引导程序定义了一个段,通过链接命令文件将该段程序准确定位在指定的地址空间。B行引用_c_int00子程序,是由系统自动生成的复位中断服务子程序,利用该子程序使程序在执行完引导程序后跳转到主程序入口地址执行主程序。
4.2 C6713对Flash的操作
对Flash的操作有复位、数据读、擦除、烧写。Flash的复位操作相对简单,只要向Flash任意地址单元写入数据“0xF0”便可实现其复位操作。数据读与一般的RAM存储器相同,但Flash的擦除和烧写操作却有其自身特点。
4.2.1 Flash的擦除
由于Flash的烧写操作只能将其内部存储单元由“1”改写为“0”,反之不行,所以必须先将Flash内部存储单元擦除后才能写操作。也就是说,擦除操作是将Flash内部存储单元全部写为“1”。
由Flash擦除命令字看出,Flash的擦除分为片擦除和扇区擦除,采用片擦除,需要向2个地址写入不同数,从而擦除整个器件。其擦除子程序代码如下:
擦除操作完成后,可通过CCS查看0x90000000开始的单元,如均改写成“0xFFFFFFFFF”则表明擦除成功。
4.2.2 Flash的烧写
通常烧写有两种方式,一种是在烧写器上对器件烧写后再插到PCB板上,待调试完成再将其焊接固定。但目前多采用贴片式元器件,所以方案采用第二种烧写方法,即在线烧写法。利用仿真器通过JTAG仿真口按照一定的时序和要求对Flash烧写。烧写部分程序代码如下:
在A行中,0x555左移1位后加到Flash的起始地址,这是因为写Flash要求向0x555地址写入数据“Oxaa”,该地址为Hash的地址,即要求Flash地址线AO~A18上出现0x555数据,由于DSP的第l位地址线EA2与Flash的AO相连,32位DSP对指向“short”型数据的指针操作时会自动将地址左移1位,以满足对偶地址操作的要求,所以应像A、B行中手动将0x555,0x2aa地址左移l位,再加上DSP自动左移1位,就使地址0x555的第1位出现在EA2上,即AO~A18得到数据0x555,而DSP实际输出地址为Ox90000AAA。D行的操作是将32位DSP内部RAM中的n个16位二进制数搬移到16位Flash中,指针变量“flash_addr,source”均为指向“short”型数据的指针变量(16位),所以Flash会使用全部的16位数据线,而DSP只使用32位数据线的低16位用于传输数据。
4.3 链接命令文件(*.cmd文件)
链接命令文件是DSP开发过程中生成可执行文件(.out)必不可少的一个文件。其作用是对DSP固有段和由用户自定义的段在使用仿真器load程序时定位,将各段程序分配到存储器的指定地址。这样用户就可以知道引导程序、中断向量表和主程序在DSP内存空间的准确地址。
由于待烧写的引导程序、中断向量表和主程序需定位在DSP内存Ox00000000~0x00003FFF的地址空间中。烧写程序需定位在Ox00004000~0x000141FF的地址空间。链接命令文件部分程序代码如下:
5 结语
以C6713为例,介绍了DSP的上电自举过程及实现方法,详细说明了其中关键问题及技术难点,并应用程序实例和框图加深读者的理解。对于读者开发TI公司的其他产品也有一定的借鉴作用,特别对于从事DSP设计的入门级人员会有很大的帮助。所涉及的内容均经过实践证明,运行稳定可靠。