Chinaunix首页 | 论坛 | 博客
  • 博客访问: 971052
  • 博文数量: 214
  • 博客积分: 10173
  • 博客等级: 上将
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-18 13:48
文章分类

全部博文(214)

文章存档

2012年(1)

2010年(13)

2009年(5)

2008年(98)

2007年(97)

分类:

2008-02-24 19:45:13


TS201S型DSP引导程序加载方法研究
作者:潘 伟  于…    资料来源:国外电子元器件    点击数:47    更新时间:2006-9-30
报道:  摘要:介绍ADI公司TigerSHARC系列DSp的引导程序加载原理与应用。给出TigerSHARC系列DSP程序加载的几种模式,主要以TS20lS型DSP为例说明单DSP系统程序加载的过程和方法。该设计在TigerSHARC系列DSP中具有通用性。可以方便地应用于其他DSP引导程序加载的设计。
    关键词:DSP;TigerSHARC;引导程序;加载;接口;TS201S
随着DSP技术的发展,DSP的功能越来越强,类型也越来越多。由于DSP内部结构的特点,DSP的算法程序一般都存储在外部的非易失性存储器中,在系统上电后,要将算法程序从外部存储器加载到DSP中,再进行相应的数据算法处理。
TS20lS是ADI公司TigerSHARC系列中集成了定点和浮点计算功能的高速DSP。处理器工作在600MHz,单周期能执行4条指令,每秒能进行3.4亿次乘累加和2.8亿次浮点操作,是面向通信和视频领域的高端DSP。TS201S包括24Mbit的片内DRAM;1个14通道的DMA控制器:4个链路口可用于和其他DSP进行无缝联接。以组成一个多DSP处理器系统,每个链路口的数据率可达1GB/s;集成SDRAM控制器最大支持256M x 32bit的内存容量,方便和外部SDRAM连接。TS20lS非常适合对大数据量数据处理实时性要求高的应用领域。
    TigerSHARC系列的DSP接口丰富,其引导程序的加载方法也非常灵活,可根据实际系统设计的需要灵活选用。
1 TigerSHARC系列DSP的引导模式
DSP的引导就是在DSP系统复位的情况下从DSP外部存储器装载算法程序代码的过程。TS201S支持二种引导模式:主引导(master boot)模式和从引导(slave boot)模式。
在主引导模式下,TS201S作为主动方,用外部口输出地址、读、引导方式选择(BMS)等控制信号,从EPROM或Flash中加载代码。在从引导模式下,TS201S作为被动方,不向外部输出控制信号,外部主机或其他设备向TS201S的主机、链路口传送要加载的代码,TS201S仅启动若干DMA通道,并执行第一个DMA所接收的加载核。
另外,TS201S还可以选择一种“非引导”模式,或利用TS20lS的(仿真器)EZ—ICE加载程序,这种方式可直接将程序加载进TS201S内部的RAM或外部的RAM中,DSP直接从RAM中运行程序,常用于DSP的调试过程。
通过对TS20lS的BMS引脚的设置,可将DSP的引导过程设置成主引导模式或从引导模式。在DSP复位期间,如果BMS低电平,则选择主引导模式,DSP从外部EPROM或Flash中加载程序;若BMS引脚为高电平,则进入从引导模式,DSP为空闲状态,等待主机或链路口加载程序。2种引导模式都有相同的加载过程。具体步骤如下:
(1)TS201S自动启动一个DMA.自动把256个字(32位)传送到内部存储器的地址0x00-0xFF。
(2)TS201S执行上述256个字的指令(加载核),加载核启动其他DMA,把后续指令和数据加载到内部和/或外部存储器中。
(3)加载核自我覆盖,执行DSP算法程序。
2 单TS201S的程序加载接口设计
TigerSHARC系列中的TS20lS作为单个DSP使用时,主要有3种引导方式。
2.1外部EPROM引导
外部EPROM引导为主引导模式,是最常用的引导模式。在该模式下,BMS引脚和RD引脚作为EPROM的片选和输出使能引脚。EPROM的8位数据线接TS201S的DATA0-DATA7。TS20lS最大支持16M的EPROM地址空间,其低位地址引脚与EPROM的地址引脚相连。对于多处理器共享总线的系统,可用一个EPROM对所有TS201S加载。图1所示为ST公司的Flash(DSM2150)与TS201S程序加载接口设计实例。
复位后,DMA通道0被自动配置好,DMA相应的2个TCB寄存器(Transfer Control Block)被初始化,然后从8位的外部EPROM地址0开始,把一个256字的加载核传送到内部存储器地址0x00-0xFFo。DMA通道0的中断矢量初始化为内部存储器地址0x00。当DMA通道0传送完成时,产生中断,TS20lS开始从0x00执行加载核。然后,加载核通过一串单字DMA传送将后续应用代码和数据加载。最后,加载核启动一个256字的DMA,使其自身被用户应用程序代码覆盖。当该DMA过程完成时,DMA通道0的中断矢量人口地址为内部存储器地址0,用户的应用代码从地址0开始执行。TS20lS的外部接口是32位数据宽度,所以TS201S在通过DMA通道加载程序时,自动使用8到32位的专用打包方式,低位在前,完成从EPR()M的DMA读。只有DMA通道0支持该专用打包方式,所以引导程序必须用DMA0。
另外,在算法应用程序运行阶段,内核不能用指令使能BMS的方式直接对EPROM进行访问,但可通过DMA通道方式访问。这是因为EPROM是字节寻址空间,它不属于TS201S的存储器空间。外部EPROM所占的最大存储空间为16M字节,由于E-PROM是慢速外设,对EPROM的每一个读访问,TS201S都要等待16个周期。TS201S对外部E-PROM的读时序如图2所示。
2.2主机引导
采用主机(HOST)引导模式时,32位或64位主机通过外部的数据和地址总线完成对TS201S的引导。在主机引导方式下TS201S可用任何一个Auto DMA通道进行代码传送。其余过程与外部E-PROM引导相同。主机通过DSM状态寄存器(DSSTAT)监视Auto DMA的状态。在一默认的情况下TS201S的外部总线宽度被设置成32位,所以主机必须使用流水线协议与TS201S进行通信。
2.3链路口引导
TS201S有4个链路口(Link Port),每个链路口都可用于引导程序的加载。其加载过程和主机引导模式相似。
3 多TS201S的程序加载接口设计
在实际的系统设计中,在处理高数据流和大数据量的条件下经常用到多个DSP级联。对多个DSP进行程序加载,用EPROM、HOST、LINK PORI、加载模式都可实现。
在EPROM引导模式下,将各DSP的丽BMS引脚接到一起,连接到EPROM的片选信号上,外部地址、数据也都分别连到EPROM的数据、地址总线上,各DSP按总线优先权依次访问EPROM。EPROM引导多DSP的另一种方法是在主DSP(ID2-0=000)加载完成后,通过多DSF的存储器空间向其他DSP的AutoDMA通道0写入加载码,完成其他DSP的程序加载。这种方法只有主DSP的RD引脚和EPROM片选相连,其他。DSP的RD信号通过外部上拉电阻器上拉。
在HOST加载模式下,主机按照流水协议,用HBR和HBG信号引导其他DSP。
在多DSP系统中LINK PORT加载方式是最为灵活的一种程序加载方式,可将前面二种加载模式结合使用,当第一个DSP用EPROM。或HOST加载成功后,可按菊花链形式由第一个依次加载其他的DSP。
4 引导程序设计
下面以EPROM引导模式为例说明TS20lS引导程序的设计方法。ADI公司的visual DSP++工具提供的程序加载应用程序(elfloader.exe)可将DSP算法程序和加载核程序合并生成:EPROM的加载输出文件(*.ldr)。该加载输出文件用来定义加载过程中TS201S的内部和外部存储器如何被初始化,其格式如图3所示。其中数据标识块中标签字的格式定义如图4所示。
DSF程序加载过程中的比较复杂的过程是加载核的自我覆盖。当数据标识块中标签字的高3位的数据为O时(见图4,TYPE=0),加载核执行“结束加载”的过程,用DSt算法代码覆盖加载核的256个字的程序。这是加载过程的最后一个DMA,将DSP从IDLE状态唤醒,完成加载核的自我覆盖,但是,简单的自我覆盖会使DSP算法程序从DMA0中断级开始执行,这是所不希望的。为了解决这一问题,通过以下算法来实现。
(1)DSP算法代码的第一个4字被存储在xRll:8中。
(2)将以下代码写入Ox00000000一Ox00000003 RETI=0;;NOP;;RTI(NP);;QD31+=0]=xRl 1:8;;
(3)DMA中断矢量设置为地址0。
(4)设置地址缓冲区无效(BTBINV)以清除缓冲区内的任何分支地址。
(5)把256个用户代码放到0x00000004-0x000000FF。
(6)对TCB编程,启动DMlA,处理器进入IDLE状态。
(7)DMA完成后,响应DMA中断,程序控制器跳到地址0x00000000,开始执行以下代码:RTI(NPl;;Q[j3 l+=0]=xRll:8;;。
这些指令使中断降级,用户DSP算法程序放到0x00000000-Ox00000003,指令计数器指针指到地址0x00000000(),用户的算法程序从0x00000000开始执行,此时算法程序不处于中断级。这里的NP选项是必须的,以使:RTI指令不缓冲到:BTB中。
    如系统中的外部存储器要被特殊初始化(如SDRAM),则这个存储器必须由内核来配置及初始化。加载核要被修改和重新编译,最后的加载核代码不能超过256个字,是由:DSP的特点所决定的。
5 结束语
ADI公司的高性能Tiger SHARK系列TS201S型DSF已在对实时处理要求高的场合得到广泛应用,如通信基站、机载雷达预警、阵列信号处理等。文中着重论述了其程序加载接口,介绍了DSF加载的几种常用模式,并给出了一种实用的接口方案。在软件方面,对DSP加载过程中的难点做了说明。文中提到的几种DSP程序加载方法也适用于其他类型的DSP,读者可将其灵活运用于实际的DSP系统设计中。
来源: 51rd[] -
阅读(1473) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~