您的位置 首页 元件

TMS320C6701主动加载及程序烧写的简化规划

引言TMS320C6701(以下简称C6701)是TI公司的一款浮点运算DSP,适用于需要大量运算且实时性要求高的场合,如导航解算等。在TI公司浮点DSP芯片中,C6701是一款可应用于恶劣环境并具有

导言

TMS320C6701(以下简称C6701)是TI公司的一款浮点运算DSP,适用于需求很多运算且实时性要求高的场合,如导航解算等。在TI公司浮点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芯片选用ACT—S512K32V。FLASH和SRAM芯片与C6701的硬件衔接如图1和图2所示。

TMS320C6701主动加载及程序烧写的简化规划

1.2 加载计划规划

在BOOTMODE[4:0]为01010B的设置下,程序由外部8位程序存储器加载到外部32位SRAM中。C6701具体加载进程为:DMA按默许时序从CE1地址(0x01000000)仿制64 KB到零开端地址外部SRAM芯片中,加载完结后,从零地址处开端履行。C6701加载进程与C6713稍有不同,C6713只仿制1 KB到零开端地址。64 KB运用程序能够满意部分运用需求,本例中运用程序小于64 KB,C6701的DMA主动加载即可满意要求。当运用程序大于64 KB时,开发人员需求在前64 KB中编写将DSP运用程序从外部ROM搬移到指定存储空间的二级引导程序,具体进程可参阅文献。

2 DSP运用程序规划

一个C言语工程一般包含.c文件、.cmd文件、.asm文件、.h文件和.lib文件。其间.cmd文件既是内存定位文件,又是链接器指令文件,在链接进程中起着重要作用。链接时,链接器把一切方针文件中的同名段兼并,并按链接器指令文件给各段分配地址。中止向量表决议加载完结后的C言语程序进口,一般中止向量表用.asm文件完结。.cmd文件和中止向量表的编写是决议DSP程序加载成功与否的要害和难点。

2.1 .cmd文件规划

.cmd文件的作用是完结运用程序和数据在DSP映射存储空间中的定位,存储空间的分配与硬件规划密切相关。本文BOOTMODE[4:0]为01010B,即存储空间为MAP0映射形式,由CE0片选的RAM空间开端地址为0x00000000,由CE1片选的FLASH空间开端地址为0x01000000,用户程序小于64KB。.cmd文件如下:

TMS320C6701主动加载及程序烧写的简化规划

2.2 中止向量表规划

本文中止向量表如下:

TMS320C6701主动加载及程序烧写的简化规划
TMS320C6701主动加载及程序烧写的简化规划

上电或复位完结后,DMA按默许时序从CE1地址仿制64 KB到零开端地址处,加载完结后,DSP从零地址开端履行。本文中止向量表从程序空间0地址开端寄存,每个中止向量8个字节,总计巨细为0x200字节。加载完结后程序从0地址开端履行,直接跳转到DSP主程序进口~c_int 00处。

3 烧写程序规划

运用程序编写完结后,需求将程序烧写到程序存储器中。程序烧写主要有以下几种办法:

①选用通用烧写器进行烧写;

②运用CCS中自带FlashBurn东西烧写;

③用户自己编写烧写程序,由DSP将加载到片上的运用程序烧写到程序存储器中。

运用通用烧写器烧写时,需求程序存储器为可插拔的,这样给规划带来不方便。FlashBurn支撑的存储器品种有限,关于运用国产存储器芯片的场合不一定适宜,别的FlashBurn不能辨认方针文件,需求将方针文件转化为二进制文件后才可烧写。

选用用户自己编写烧写程序的办法较为灵敏。具体办法为:独自树立一个烧写工程文件,烧写时,先把运用程序工程编译生成的方针文件加载到方针DSP电路的RAM中,再把烧写工程文件生成的方针文件加载到方针DSP电路RAM的另一个地址空间中,运转main函数后履行烧写程序直到烧写完结。这种烧写办法能够避免两次加载或许形成的掩盖,避免第2次加载时修正第一次加载的内容。

3.1 烧写程序的.cmd文件和中止向量表规划

烧写程序的.cmd文件与用户运用程序的.cmd文件相同,但程序地址分配空间须严厉区别开来。本文将用户程序地址空间组织在从0开端的0xB400空间内,烧写程序组织在从0xC000开端的0x3400空间内。烧写程序.cmd文件地址空间分配如下:

MEMORY{

VECS: o=0000C000h l=00000400h

PMEM: o=0000C400h l=00003000h

}

假如需求优化程序空间,能够经过编译生成的.map文件得到用户程序和烧写程序实践占用的空间,经过修正,.cmd文件进一步优化。

烧写程序没有中止,能够只保存_c_int00,简略起见,也能够选用与运用程序完全相同的中止向量表。

3.2 烧写程序规划

在规划烧写程序前,需求充沛了解程序存储芯片的操作进程。本文运用的FLASH芯片AM29LV160的操作码,有写操作、读操作、芯片擦除、块擦除、确认等十余种操作。FLASH芯片在写操作前需求先进行擦除操作。烧写程序如下:

TMS320C6701主动加载及程序烧写的简化规划
TMS320C6701主动加载及程序烧写的简化规划

烧写程序规划和烧写操作中有以下几点需求留意:

①烧写时,一定要先把运用程序方针文件加载到RAM中,再把烧写程序方针文件加载到RAM中,然后运转main函数履行烧写。

②程序中FLASH_ADDRS为主动加载前程序存储的FLASH芯片地址,本文为0X01000000;RAM_ADDRS为加载后程序存储的地址,本文为外部SRAM芯片地址0x00000000。

③进行FLASH芯片操作前需对EMIF进行初始化,程序中my_EmifCog为7个32位二进制数组成的数组,别离装备GBLCTL、CECTL0、CECTL1、CECTL2、CECTL3、SDCTL和SDTIM这7个操控寄存器。本文中CE0接外部32位SRAM芯片,CE2接8位FLASH芯片,别离设置CECTL0为0xFFFF3F23、CECTL1为0xFFFF3F03,其他操控寄存器需求依据运用状况来确认。

④FLASH芯片可整片擦除,也可块擦除,需擦除完结后才能对FLASH芯片进行写操作。FLASH芯片擦除时刻较长,需求在擦除子程序后设置断点,等候擦除完结(能够CCS中检查0x01000000开端的FLASH空间全为0xFF为参阅)后,再进行程序烧写操作。

⑤程序中PRO_LEN为用户程序长度,为用户运用程序,.cmd文件设置中止向量、程序等分配的总长度,本文为0xB400。

⑥程序加载到的外部SRAM为32位,FLASH芯片为8位,LENDIAN为高电平。烧写程序从SRAM中读取的程序为32位,32位数据需求依照从低到高的次序烧写到8位FLASH芯片中。

结语

实践工程运用验证了上述烧写及主动加载办法的可行性。本文所述的加载进程比二次加载节省了DSP体系启动时刻,但因加载进程中FLASH芯片读写等候时刻为默许设置,用户不能更改,程序加载时刻仍达120 ms,在某些看门狗时刻较短的运用中需求特别考虑。本文的程序烧写办法还能够推行运用于TI公司其他的DSP体系中。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/280882.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部