TMS320C6000系列DSP的Flash启动设计

发布者:EnchantedDream最新更新时间:2007-06-15 来源: 单片机及嵌入式系统应用关键字:实时  加载  存储  地址 手机看文章 扫描二维码
随时随地手机看文章

引 言

随着近年来数字信号处理器(DSP)技术的迅猛发展,其越来越广泛地应用于国民经济的各个领域中。其中,TI公司推出的TMS320C6000系列DSP器件更是在许多需要进行大量数字信号处理运算并兼顾高实时性要求的场合得以应用。TMS320C6000系列DSP的系统设计过程中,DSP器件的启动加载设计是较难解决的问题之一。

C6000系列DSP的启动加载方式包括不加载、主机加载和EMIF加载3种。

3种加载方式的比较:不加载方式仅限于存储器0地址不是必须映射到RAM空间的器件,否则在RAM空间初始化之前CPU会读取无效的代码而导致错误;主机加载方式则要求必须有一外部主机控制DSP的初始化,这将增加系统的成本和复杂度,在很多实际场合是难以实现的;EMIF加载方式的DSP与外部ROM/Flash接口较为自由,但片上Bootloader工具自动搬移的代码量有限(1 KB/64 KB)。本文主要讨论常用的EMIF加载方式。

1 EMIF加载分析

实际应用中,通常采用的是EMIF加载方式,把代码和数据表存放在外部的非易失性存储器里(常采用Flash器件)。

下面以TMS320C6000系列中最新的浮点CPU——TMS320C6713(简称“C6713”)为例,详细分析其EMIF加载的软硬件实现。

硬件方面,其与16位宽度的Flash器件的接口如图1所示。

对于不同的DSP器件,加载方式的配置引脚稍有不同。C6713的配置引脚及其定义如表1所列。

应用程序的大小决定了片上的Bootloadet工具是否足够把所有的代码都搬移到内部RAM里。对于C6713,片上的Bootloader工具只能将1 KB的代码搬入内部RAM。通常情况下,用户应用程序的大小都会超过这个限制。所以,需要在外部Flash的前1 KB范围内预先存放一小段程序,待片上Bootloader工具把此段代码搬移入内部并开始执行后,由这段代码实现将Flash中剩余的用户应用程序搬移入内部RAM中。此段代码可以被称作一个简单的二级Bootloader。

图2所示为使用二级Bootloader时的CPU运行流程。

使用二级Bootloader需要考虑以下几个事项:

◇需要烧写的COFF(公共目标文件格式)段的选择;

◇编写二级Bootloader;

◇将选择的COFF段烧入Flash。

一个COFF段就是占据一段连续存储空间的程序或数据块。COFF段分为3种类型:代码段、初始化数据段和未初始化数据段。

对于EMIF加载方式,需要加载的镜像由代码段(如.vectors和.text等)和初始化数据段(如.cinit,.const,.switch,.data等)构成。另外,可以单独定义一个.boot-load段存放二级Bootloader。此段也需要写入Flash。

所有未初始化的数据段(如.bss等)都不需要烧入到Flash中。

2 二级Bootloader的编写

由于执行二级Bootloader时C的运行环境还未建立起来,所以必须用汇编语言编写。二级Bootloader可参照其他类似文献及TI相关文档。此处不再赘述。

CCS中用户工程编译链接后产生的.map文件包含了存储器的详细分配信息。一个典型的map文件中包含的存储器分配信息如表2所列。

与cmd文件不同,map文件不仅包含了各段存储在哪一段内存空间的信息,从map文件中还可以具体知道每个内存区间中有多少被实际使用(烧写Flash时会用到这个参数)。内存区间中未被使用部分是不需要写入Flash内容的,实际被使用的部分才是真正需要写人到Flash中的内容。

3 Flash的烧写

把代码等写入Flash的办法大体上可分为以下几种:

① 使用通用烧写器写入。

② 使用CCS中自带的FlashBurn工具。

③ 用户自己编写烧写Flash的程序,由DSP将内存映像写入Flash。

其中,使用通用烧写器烧写需要将内存映像转换为二进制或十六进制格式的文件,而且要求Flash器件是可插拔封装的。这将导致器件的体积较大,给用户的设计带来不便。

使用TI公司提供的FlashBurn工具的好处在于使用较为直观。FlashBurn工具提供的图形界面可以方便地对Flash执行擦除、编程和查看内容等操作。但这种力法的缺点也不少:首先,FlashBurn工具运行时需要下载一个.out镜像(FBTC,FlashBurn Target Component)到DSP系统中,然后由上位PC机通过仿真器发送消息(指令和数据)给下位DSP,具体对Flash的操作由FBTC执行。然而,这个FBTC一般是针对TI公司提供的DSP专门编写的,与板上使用的Flash的接口宽度(默认是8位)、操作关键字(因生产厂商不同而各异)都有关,所以,对用户自己制作的硬件不一定适合。例如:如果用户自己的电路板上使用的是与DSK同品牌的Flash芯片,接口为16位数据宽度,那么,使用FlashBur’n工具烧写将最多只有一半的Flash容量能够被使用,要想正确实现]EMIF加载就必须选择8位加载方式。这就造成了Flash存储器资源的浪费,同时限制了用户开发的灵活性。

虽然TI公司提供了FBTC的源代码供有需要的用户修改,但这样用户需要去了解FBTC的运行机制及其与上位机的通信协议,并对Flash烧写函数进行修改。用户可能需要修改的几个地方如下:对Flash编程的关键字和地址,BurnFlash函数中的数据指针和EMIF口的配置(针对1.0版本FBTC)。这就给用户开发带来了不便。把开发时间浪费在了解一个并不算简单的Flash烧写工具上并不是一个好的选择。

其次,FlashBurn工具不能识别.out文件,只接受..ex的十六进制文件,因此,需要将.out文件转换为.hex文件。这个转换的工具就是TI公司提供的Hex6x.exe工具。转换过程的同时,需要一个cmd文件(即图3中的Hex.cmd)指定作为输入的.out文件,输出的.hex文件的格式,板上Flash芯片的类型和大小,需要写入Flash中的COFF段名等。

使用用户自己编写的烧写Flash的程序较为灵活,避免了文件格式转换的繁琐。不过,此方法要求用户对自己使用的Flash芯片较为熟悉。

通常采用的Flash烧写程序是单独建立一个工程的办法:先把用户应用程序(包含二级Bootloader)编译生成的.out文件装载到目标DSP系统的RAM中,再把烧写Flash的工程编译生成的.out文件装载到目标DSP系统RAM的另一地址范围,执行Flash烧写程序,完成对Flash的烧写。这个办法要注意避免两次装载可能产生的地址覆盖,防止第2次装载修改了应该写入Flash的第1次装载的内容。

实际上,可以将Flash烧写程序嵌入到用户主程序代码中去,比单独建立一个烧写Flash的工程更为方便。Flash芯片的烧写程序段如下:


ChipErase函数和ProgramFlashArray函数的编写可参照用户使用的Flash芯片的Datasheet以及参考文献[1]。

ProgramFlashArray函数的第1个参数是源地址指针(指向内部Ram),第2个参数是目标地址指针(指向外部Flash),第3个参数是要写入的数据长度(单位为字)。

编写Flash烧写函数时有3点需要注意:

① 指向Flash地址的指针。由于C6713的低两位地址用于译码作字节选择,地址总线的最低位是EA2,所以,逻辑地址需要适当的移位才能正确地指向日标。

对8位存储器而言,应该左移2位;对16位存储器而言,应该左移1位;对于32位存储器,则不需要移位。例如要从(往)Flash的0x00000003地址读(写)一个字,其逻辑地址应该是0x90000000+(0x0003<<1),而非0x90000003。

② map文件中各内存区间被实际占用的尺寸大小是以字节为单位的,而ProgramFlashArray函数写入Flash的数据单位为字,所以需要将map文件中得到的尺寸大小的一半作为ProgramFlashArray函数的参数。

③ 烧写函数中使用了flash_burned常量作为判断是否需要对Flash操作的依据,且将其初始化为1。这是为了避免Flash加载之后会执行对Flash的操作。此变量应在烧写Flash时手动修改为0。

在仿真加载方式下,可以在CCS里的watchwindow窗口手动修改flash_burned常量为0,强迫CPU进入对Flash编程的程序段。实验证明,在仿真加载方式下手动修改flash_burned并不影响写入到Flash中的flash_burn-ed的值(仍为1),所以,写入Flash的flash_burned的值仍然是1。在系统Flash加载之后,CPU就会跳过此段代码,实现正确运行。

4 结 论

本Flash加载方案以C6713为例,稍加修改即可适用于TMS320C6000系列的其他DSP器件。经过在研制的伺服测试平台中的应用,证明本方法切实可行且易于实现,避免了目标文件格式的转换,比通常采用的FlashBurn工具使用起来更灵活方便,用户可以通过简单修改Flash烧写函数使之适应自己的硬件情况。对于Flash器件接口与TI的DSP不一致的情况,本方案是一个很好的选择。

关键字:实时  加载  存储  地址 引用地址:TMS320C6000系列DSP的Flash启动设计

上一篇:TS201在数字信号处理设计中的应用
下一篇:用类/微驱动模型开发DSP视频驱动程序

推荐阅读最新更新时间:2024-05-13 18:36

带RTC的I2C总线铁电存储器FM31256
  FM31256是由Ramtron公司推出的新一代多功能系统监控和非易失性铁电存储芯片。与其他非易失性存储器比较,它具有如下优点: 读/写速度快,没有写等待时间;功耗低,静态电流小于1 mA,写入电流小于150 mA;擦写使用寿命长,芯片的擦写次数为100亿次,比一般的EEPROM存储器高10万倍,即使每秒读/写30次,也能用10年;读/写的无限性,芯片擦写次数超过100亿次后,还能和SRAM一样读/写。   铁电存储器(FRAM)的核心技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取存储器(RAM)和非易失性存储的特性。本文介绍了FM31256的主要功能,并具体给出了基于嵌入式C语言编写的存储器读/写程序。 1
[单片机]
带RTC的I2C总线铁电<font color='red'>存储</font>器FM31256
在单片机上实现动态加载功能
本项目是一个在单片机(如:STM32)上实现动态加载功能的函数库,与Windows中的dll,Linux中的so类似,可以将代码动态地从其他的存储介质,动态加载到RAM中。 软件架构 本项目文件夹有三个,其中common存储了用于生成可重定位的.axf文件的工程与动态加载器工程交互用的函数,src提供动态加载器的源码,rel_axf_project_template提供了一个简单的可重定位的.axf文件的工程示例,example.c是一个简单的使用示例,所有文件的主要功能如下: /common/dl_extern_lib.h 描述了app程序用于调用host程序的函数向量表的基地址,以及相关的一些宏定义 /common/dl_
[单片机]
瑞萨电子推出5款面向网络设备的存储器产品
  瑞萨电子株式会社(以下简称瑞萨电子)于2011年1月18日正式宣布推出5款面向网络设备的高速存储器产品576Mb(Mbit)低时延 DRAM,品名分别为μPD48576109、μPD48576118、μPD48576209、μPD48576218、μPD48576236。新产品将于即日起提供样品。   与公司原有288Mb 低时延DRAM“μPD48288236”产品相比,新产品最大的特点是其存储容量提升至原有产品的2倍,实现了大容量化。此外,其高速数据读写随机周期性能提高了25%,最大工作频率提高了33%,而功耗却比原有产品降低了10%。   由于新产品的单位存储器容量功耗低,比公司原有产品大幅度节省了能源,因此更便于
[嵌入式]
瑞萨电子推出5款面向网络设备的<font color='red'>存储</font>器产品
FPGA在语音存储与回放系统中的应用
1 引言 随着数字信号处理器、超大规模集成电路的高速发展,语音记录技术已从模拟录音阶段过渡到数字录音阶段。在数字化录音技术中,压缩后的语音数据有些存储在硬盘中,有些存储在带有掉电保护功能的RAM或FLASH存储器中。笔者介绍的语音存储与回放系统,未使用专用的语音处理芯片,不需要扩展接口电路,只利用FPGA作为核心控制器,就能完成语音信号的数字化处理,即实现语音的存储与回放。 2 系统总体结构 数字化语音存储与回放系统的基本工作原理是将模拟语音信号通过模数转换器(A/D)转换成数字信号,再通过控制器控制存储在存储器中;回放时,由FPGA控制将数据从存储器中读出,然后通过数模转换器(D/A)转换成模拟信号,经放大后由扬声器输出。
[应用]
手机闪存战正酣 2006年市场将达168亿美元
  都是苹果iPod惹的祸,引发了目前存储市场中Flash芯片的火爆。随着3G时代的逐步临近以及近年来多媒体手机的发展,又将闪存芯片市场进一步推向高潮。而NAND和NOR技术的发展、融合也成就了千姿百态的应用。据市场研究机构iSuppli的数据显示,2005年NAND闪存市场比2004年增长了64%,达到109亿美元,预计2006年NAND闪存市场还将增长55%,达到168亿美元,市场容量的扩展,促使闪存芯片竞争加剧。    NAND、NOR交锋手机市场   随着智能手机、娱乐手机和3G手机对高容量存储需求的增加,使得NAND闪存厂商一直希望通过成本和存储容量的优势打入手机市场,夺取NOR闪存的地盘。目前NAND闪存在手机领域
[焦点新闻]
存储解决方案时代 看安防人如何展宏图?
随着非结构化数据的激增,大数据与云计算对后端的研发能力提出更高要求,如海量数据存储、查询、节点的负载均衡、备份容灾等都是急需解决的问题。有业内人士表示,未来集成商的规模将会扩大,会出现一些年收入在20-50亿的大型集成企业,数据服务公司将会成为将会成为市场具有重要话语权的企业。   对于海量级的城市规模和跨地域的监控系统存储,选用云存储已经成为整个行业的共识。云存储经过多年的发展,肩负的不再是单一存储功能,在扩展性、稳定性、可靠性、管理性上也有了更高的要求,智能云存储或将成为未来存储的一种趋势。   云存储+安防的重要性与日俱增。嗅觉灵敏的安防企业早已开始布局云存储。借助云存储的分布式存储
[安防电子]
基于单片机AT89C52的温度实时监控系统设计
本文介绍了一种温度实时监控系统的设计。该系统通过 单片机 实现实时控制,并通过串口连接单片机与上位计算机,在计算机中实现实时监控、大容量的数据存储及数据分析等功能,解决了常规温度测量方法在温度测量实时性差、不能储存数据及缺乏数据分析功能等方面的缺陷。 温度监控系统在农业、工业和生活中有着广泛的应用,但随着监控的面积扩大,监控点的增加及控制处理趋于智能化等新的应用要求出现,传统的温度控制系统已经逐渐不适用,首先是不便于观察而且不能及时地对异常温度变化做出迅速反应,其次是传统的温度控制系统不能储存大量数据,不能对监控的数据进行分析,不便于对温度情况进行长期的监测和科学的分析,为了解决以上问题,本文设计了一个能实时响应温度并进行
[单片机]
基于单片机AT89C52的温度<font color='red'>实时</font>监控系统设计
基于ARM的嵌入式语音存储系统设计
1 系统控制核心 嵌入式操作系统软硬件结构框图如图1所示,由硬件层、驱动层、系统层和应用层组成。硬件层包括嵌入式处理器最小系统、存储器(SD RAM、Flash、ROM等)、通用设备接口和I/O接口(A/D、D/A、I/O等),其中Linux实时操作系统和应用程序都可以固化在ROM中。硬件层的核心是嵌入式处理器,在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式处理器最小系统。中间的驱动层将上层软件和底层硬件分离开,为其连接提供接口。系统层主要负责软件硬资源的分配、内存管理、任务调度、文件处理等,是软件层的核心。应用层为用户提供编程接口,实现各种应用功能。 1.1 系统软件核心 Linux操作
[单片机]
基于ARM的嵌入式语音<font color='red'>存储</font>系统设计
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved