TMS320VC55X系列DSP的FLASH引导方法

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:Liujc
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文以实际系统开发基础为背景,阐述了TMS320C55X系列DSP对FLASH在线烧写的方法,给出了系统的硬件连接示意图和完整的烧写程序,并研究了自举引导的实现方法以及大程序的二次引导方法。
  关键词:TMS320C55X;FLASH;Bootloader;烧写;二次引导
  


  
  引 言
  
  随着数字信号处理技术的快速发展,DSP被广泛的应用到各种数字信号处理系统中。最终开发的系统要想脱离仿真器运行,必须将程序代码存储在非易失性存储器中。FLASH存储器以其大容量和可在线编程等特点已成为DSP系统的一个基本配置。如何将程序烧写进FLASH,并在上电时加载进DSP内部的RAM是FLASH在DSP系统中应用的两个基本技术问题。本文以基于TI公司的TMS320VC5509A和ATMEL公司的AT49LVl024 FLASH开发的系统为背景,介绍该系统引导相关的硬件设计,烧写软件设计以及自举引导、二次引导等实现方法。
  
  TMS320VC55D9A的自举引导
  
  TMS320VC5509A每次上电复位后,在执行完一系列初始化(配置堆栈寄存器、关闭中断、程序临时入口、符号扩展、兼容性配置)工作后,根据事先配置的自举模式,通过固化在ROM内的BOOTLOADER程序进行程序引导。VC5509A的引导模式选择是通过四个模式选择引脚BOOTM[0:3]的配置来完成的。在本系统中,采用EMIF(外部存储接口)并行引导模式(16位数据宽度),则需将BOOTM[3:0]设置成1011即可。
  通过EMIF接口可以灵活地和各种同步或异步存储器件无缝连接。通过EMIF可以扩展VC5509A的存储空间到128Mbit(SDRAM),存储空间共被分为CE0-CE3。在EMiT的并行引导模式中,ROM中固化的Bootloader程序是以字地址0x200000为首地址开始加载程序。地址0x200000即位CEI空间的首地址,所以FLASH必须接在DSP的CEI空间上。在加载时,EMIF的CEI空间已经默认配置成异步静态随机存储器(SRAM)接口,并且在时序上采用了最差情况设置(即最慢访问速度),充分保证了时间裕量,使得程序代码被顺利的加载到DSP的内存中。
  Bootloader在引导程序时,程序代码是以引导表格式加载的。TMS320VC55x的引导表结构中包括了用户程序的代码段和数据段以及相应段在内存中的指定存储位置,此外还包括了程序入口地址、部分寄存器的配置值、可编程延时时间等信息(见表1)。
  其中,程序入口地址是引导表加载结束后,用户程序开始执行的地址;寄存器配置数目决定了后面有多少个寄存器需要配置;只有当延时标志为0xFFFF时,延时才被执行;延时长度决定了在寄存器配置后延时多少个CPU周期后才进行下一个动作;段长度、段起始地址和数据则为用户程序中定义的各个段的内容,并且可以重复添加;最后以0x00000000(32个0)作为引导表的结束标志。
  


  要生成引导表,可以将CCS最终编译生.成的out文件通过CCS自带的hex55.exe转换程序得到。将hex55.exe、.out文件、.cmd文件放在同一个文件夹中,通过dos命令格式调用hex55.exe,即可完成.out文件到hex格式的引导表文件的转化。CMD文件用来提供引导表的相关配置信息,以下为一个CMD文件的实例:
  FlashBootTest.out;输入的.out文件
  -boot;说明创建boot文件
  -v5510:2;生成55X boot文件格式
  -paralle116;使用串行加载方式
  -a;ASCII格式
  -reg_config 0xlc00,0x6cd2:在地址0xlc00
  的寄存器写入0x6cd2,配置CPU时钟
  -delay0x100;延时0x100个CPU时钟周期
  -o FlashBootTest.hex;输出.hex文件
  


  
  FLASH的烧s和自举的实现
  
  TMS320VC5509A和AT49LV1024的硬件设计
  AT49LV1024是ATMEL公司3V供电系统的FLASH芯片,16位位宽,容量为64K字。VC5509A(PGE封装)只有14条地址线,只能寻址16K字的SRAM空间。要想寻址64K字地址空间的话,FLASH地址线的高两位则需要通过其他IO线控制。在本系统中通过GP104和GP106与FLASH的高两位地址相连达到此目的,其连接示意图如图1所示。但是在Bootloader自举引导程序的时候,并不能控制GPIO引脚,也就是只能引导最大16K字的程序。对于大于16K字的程序,则需要进行二次引导。
  
  二次引导技术
  所谓二次引导,通过DSP内部ROM固化的Bootloader引导用户自己编写一个引导程序,其功能和ROM内固化的Bootloader相同,再通过此引导程序加载系统最终运行的程序代码,并在加载结束后,把PC值置为新的程序入口地址。由于在用户编写的引导程序中,可以控制GIP04和GP106,所以可达到64K字地址空间的寻址目的。其具体实现椎图如图2所示。
  
  数据烧写程序设计
  FLASH的数据可直接读取,但对FLASH的编程和擦除操作则需要通过一系列命令才能进行。AT49LVl024的写操作只能将1变成0,而0变成1操作必须通过擦除操作进行。所以每次写FLASH之前,必须进行片擦除,使存储单元值变成0xFFFF,于能进行编程。
  擦除命令:需要六个周期,其操作命令如表2所示。
  编程命令需要四个周期,其操作命令如表3所示。
  编程和擦除操作都需要一定的周期的时间(AT49LV1024的单字编程时间是20μs,整片擦除时间是10s),用户可以通过查询标志数据线DQ6和DQ7来确定编程或擦除是否完毕。当片子正处于编程或擦除状态时,连续读任意单元的值,DQ6的值将一直处于0、1交替变化,当编程或擦除结束时,读DQ6则得到一个恒定值。本文即通过此方法来判断操作是否结束。
  根据FLASH的编程和擦除命令,编写了相应的C语言程序如下,其中SetGPI046Addr(Addr)子程的作用是根据所传递的Addr值配置相应的GPI04和GPI06即高两位地址的值。
  ·片擦除程序
  #define FLASH_BASE_ADDR=0x200000;
  //设定FLASH的基地址,CE1的首地址
  void ChipErase(void)
  {
  SetGPI046Addr(0x5555);//设定FLASH的   地址值0x5555的GPI04和GPI06电平
  *(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0xaa;//向
  FLASH的地址0x5555写入0xaa
  SetGPl046HiAddr(Ox2aaa);
  *(volatile Uint16*)(FLASH_BASE_ADDR+0x2zna)=0x55;
  SetGPI046HiAddr(0x5555);
  *(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0x80;
  SetGPI046HiAddr(0x5555);
  *(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0xaa;
  SetGPI046HiAddr(0x2aaa);
  *(volatile Uint16*)(FLASH BASE_ADDR+0x2aaa)=0x55;
  SetGPI046HiAddr(0x5555);
  *(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0x10;
  WriteOrEraselsOve();//等待撩除完毕
  }
  ·单字编程程序
  void WriteWord(Uint16 Addr,Uint16 Val)
  {
  SetGPl046HiAddr(0x5555);
  *(volatile Uint16*)
  (FLASH_BASE ADDR+0x5555)=0xaa;
  SetGPl046HiAddr(0x2aaa);
  *(volatile Uint16*)
  (FLASH_BASE_ADDR+0x2aaa)=0x55;
  SetGPI046HiAddr(0x5555);
  *(volatile Uint16*)
  (FLASH 13ASE_ADDR+0x5555)=0xa0;
  SetGH046HiAddr(Addr);
  *(volatile Uint16*)(FLASH_BASE_ADDR+
  Addr)=Val;//写进编程数据
  WriteOrEraselsOver();//等待编程结束
  }
  ·编程和擦除结束确认程序
  void WriteOrEraselsOver(void)
  {
  volmile Uint16 LastDQ6,CurrentDQ6;
  SetGPI046HiAddr(0x0);
  LastDQ6=(*(volatile Uint16*)FLASH_BASE_ADDR)&0x40;//取DQ6的值
  CurrentDQ6=(*(volatile Uint16*)FLASH_BASE_ADDR)&0x40;
  While(1)//等待两次连续读DQ6的相等
  {
  LastDQ6=CurrentDQ6;
  CurrentDQ6=(*(VolatileUint16*)FLASH BASE_ADDR)&0x40;
  if(LastDQ6==CurrentDQ6)
  break;//当两次连续读DQ6的相等时,跳
  出循环
  }
  }
  本系统采用CCS仿真环境下对FLASH在线编程。先建立一个FLASH的烧写工程,并在工程中将要烧写进FLASH引导表文件,通过CCS的LOAD DATA功能直接加载DSP的内存中,根据加载的首地址和数据长度,在仿真环境下烧进FLASH中。值得注意的是,程序加载的内存空间不能和FLASH的烧写程序重叠,否则将烧写失败。
  需要补充的是,经HEX55.exe转化后的hex格式的引导表文件是不能直接导入CCS中的。CCS只支持其特别规定的DAT格式文件通过LOADDATA导入内存中,所以引导表在导入之前必须先进行转化。转化成DAT格式文件这个工作可以通过VC编写一个简单的C语言转化程序来实现。
  
  结 语
  
  本文阐述了一种针对TMS320VC55x系列DSP简单有效的FLASH烧写方法,并提出了程序自举引导的实现方法,包括大程序二次引导的实现方法。本文讨论的引导方法包括硬件设计及相关程序已在实际开发CMOS图像采集项目中使用,并成功运行。
其他文献
摘要:本文讨论了AVI件格式及典型的实时录制,提出一种在可  写式光盘上视频流录制的实用方案,并且获得了验证。  关键词:AVI;实时录制;DVD录像机    引 言    近20年来,电子设计数字化推动多媒体的迅猛发展,声音、动画、视频等的采集、创建、传输和欣赏等方式都经历着巨大的变革。与此同时,在数字化音频和视频的压缩、物理存储和传播方面也提出了多种国际标准。随着计算机的普及,有更多关于文件格
期刊
摘要:本文分析了VGA的输出参考噪声和增益对超声脉冲多普勒仪的动态范围和灵敏度的影响,同时还分析了如何利用MAX2037八通道超声VGA对这些参数进行优化,从而使典型接收机系统的总体性能达到最佳。  关键词:VGA;TGC;医疗产品;多普勒;MAX2037    相控阵接收机概述    我们在分析关键的VGA(可变增益放大器)参数对多普勒仪性能的影响之前,首先回顾一下典型相控阵超声接收通道的基本组
期刊
摘要:支持语音交互是车载导航系统的一个发展趋势。本文讨论了车载导航系统人机语音交互的实现方法,包括对话模式、关键词识别、语音控制命令、名称识别、语音合成。试验结果证明,系统能满足车载导航人机语音交互的要求。  关键词:车载语音导航;人机语音交互;语音识别;语音合成    引言    语音作为自然的人机接口,可以使车载导航系统实现更安全、更人性化的操作。通过国内外车载导航系统的功能对比可知,支持语音
期刊
多业务商业网关是一种下一代网络设备,它专门为实现多种主要功能而设计,它的特色在于功能的可配置性。同时中小型企业迫切需求高带宽的实时服务,这也对多业务网关的性能提出极高的要求。目前的一个趋势是,广泛用于电信运营商电信基础设施的通信处理器现在正向多业务商业网关的应用中渗透。例如,刚刚合并了Agere的LSI公司最近推出的APP2200网络处理器,包括高端应用的APP2250/40,面向中小企业的APP
期刊
前 言    随着白光LED的发展,它的应用越来越广泛。从前,白光LED最常见的应用是作为小尺寸LCD彩屏的背光。现在白光LED的亮度加大,它的应用已普及到其它方面;例如手电筒或手机照相辅助照明。下文介绍一种利用普通的升压芯片来驱动大电流LED的高效电路。    电路介绍    一般白光LED的电流在20mA左右,但高亮度的LED需要200-300mA电流。如果你的产品需要用三至四颗高亮度的白光L
期刊
引 言    今年3月15日德国汉诺威电子展览的第一天,当地海关人员就以涉嫌参加展览的产品侵犯了意大利Sisvel公司的专利为理由,扣押了包括中国爱国者、纽曼和深圳迈乐数码等,商的部分MP3产品,尽管中国厂商解释他们已经通过代工厂交了专利费用,但是也无济于事。虽然最近华旗和Sisvel又和好并高调宣布进行全面的合作,但是这不能抹去罩在中国企业头上的阴影,也不得不让人们联想起来3年前Cisco对华为
期刊
智能视频监控行业正走在一条高速发展的道路上,其市场预计到2011年将超过90亿美元。这要归功于市场对安全需求不断上升,以及技术创新和发展,特别是正在向数字化和全面网络化的方向过渡。这其中,以DSP、ASIC为代表的高性能处理器起着至关重要的作用。而随着视频监控的辅助功能增多,视频编码技术成熟带来的门槛降低,DSP将不可避免的占据视频监控的主流市场。    日前,德州仪器(TI)推出的两款全新达芬奇
期刊
多核处理器的旋风越来越强劲,其中,网络基础设施显然是多核处理器最先得到应用的领域之一。  作为一种高度并行化的运算技术,多核处理器不仅可以拥有更高的性能,而且由于这种高性能不是通过简单提高主频来获得,因而不会引起芯片功耗和散热的增加,被业界称为新一代的“绿色计算”器件。  不过,在电子设备中应用多核处理器,其软件设计就会面临与通用计算机不同的挑战。因此,多核处理器的应用也会在设备软件开发领域引起不
期刊
摘要:本文详细阐述了一种基于单片机的ABS控制器开发装置的设计。利用16位单片机XCl64作为主控芯片,DA转换器AD5336作为电压调速电机的驱动芯片,采用简单的电机驱动齿圈的方式模拟车轮的运转,利用LED指示灯表示ABS各个电磁阀和ABS电机的状态,无需整车或制动器的参与,就可以验证目标开发的ABS控制器的大部分控制功能,从而大大降低了ABS的开发成本,也提高了ABS的开发速率。  关键词:
期刊
美国Globalpress公司举办的2007电子高峰会议上,举办了一场SoC(系统芯片)的专题讨论会:设计师如何利用嵌入式软件作为SoC器件设计的关键。会议上的专家各抒己见。    完整方案比单个硬件重要    主持人:Gartner公司的高级分析师JohnBarber  软件在嵌入式产品中的份量越来越重。自2000年来,价值观念发生了巨大的变化,2000年以前,主张是器件,即让我们的器件与竞争对
期刊