技术创新DSP 开发与应用您的论文得到两院院士关注基于SPI Flash 的Sharc 系列DSP 程序加载The Procedures-load of Sharc Series of DSP Based on SPI Flash(四川大学)雷春梅周群刘谋云应俊LEI Chun-mei ZHOU Qun LIU Mou-yun YING Jun摘要:DSP 是针对数字信号处理需要而设计的一种具有特殊结构的微处理器。
它需要通过程序加载来进行信号处理,本文通过具体实例介绍了sharc 系列的DSP 通过其SPI 口的程序加载,同时也介绍了相关系统的硬件设计和软件的调试。
该技术可靠性高,使用灵活方便,具有很强的实用性。
关键词:程序加载;SPI 接口;数字信号处理;调试中图分类号:TP319文献标识码:BAbstract:DSP is designed to meet the need of Digital Signal Processing as a specific structuralized microprocessor,in which the signal processes through the procedures-load.In this paper,we introduce the course of loading the procedures via SPI port of DSP,which belongs to the sharc line,and also the relevant system ’s design of hardware and the debugging of software is introduced.With flexible and convenient,this method is of high reliability and highly practical.Key words:Procedures-load;SPI port;Digital Signal Processing;degug文章编号:1008-0570(2010)04-2-0115-021引言DSP 芯片主要用于数字信号处理。
当前占据市场大部分份额的DSP 生产厂商是美国的德州仪器与模拟器件两家公司。
在国内,尤以德州仪器生产的芯片使用更加广泛。
使用DSP 进行信号处理,就涉及到程序加载问题,不同厂家生产的不同系列DSP 的程序加载方式也大同小异。
现在应用得比较广泛的是从flash 中加载程序。
因为flash 是一种可在线编程的存储器,而且具有掉电后数据不丢失、功耗低、容量大、读取快、价格低、操作简单等优点。
Flash 存储器芯片又分为并口flash 和串口flash 。
对于并口flash,操作更为简单,数据并行传输,但占用较多的外围接口资源,因此这种程序加载方式比较适合芯片接口资源比较丰富的系统设计;而串口flash,虽然对其进行编程等操作相对复杂一些,但在接口资源比较紧张时却具有其他编程方式无可比拟的优势。
对flash 芯片的烧写,一般有两种方法:编程器烧写和在线编程。
编程器烧写,即是通过硬件编程器,将工程文件经过编译链接后得到的输出文件写入flash 芯片中,这种程序烧写方式实现起来比较简单,但需要额外的硬件编程器,因而一定程度上提高了开发成本。
另一方面,表贴式封装的flash 芯片不可能使用编程器烧写,只能采用在线编程。
本文将通过一个AD 公司生产的sharc 系列DSP 通过其SPI 口的程序加载的具体实例来详细介绍。
后面将通过硬件设计和软件架构来介绍其硬件和软件结构并总结了一些调试经验。
2硬件设计2.1flash 芯片M25P20-VMN6简介m25p20是美国ST 公司生产的一款flash 存储器芯片。
该芯片具有与工业标准SPI 接口兼容的外部引脚。
该芯片具有2Mbit 的存储空间,即256Kbytes 。
存储空间被分成四段,每段56Kbytes,并且每段存储空间由256页组成,每页大小为256Bytes 。
对该芯片进行编程,一次性连续写入最多256Bytes 。
该芯片具有一个状态寄存器,通过对其编程,可以实现芯片存储空间的保护,以及芯片写使能等操作。
另外,状态寄存器中也具有BUSY 标志位,通过该标志位,可以查询芯片当前状态。
除了读写状态寄存器以外,该存储器芯片还具有读、写、整片擦除、段擦除等命令。
其器件编程的指令时序见参考文献[2]。
2.2flash 芯片与DSP 芯片的硬件连接使用的flash M25P20芯片具有与工业标准SPI 接口兼容的外部引脚,我们使用的Sharc 系列DSP 芯片也具有同样的SPI 接口,因此,只需要将两个芯片SPI 接口的引脚对应连接即可。
这就大大的节省了DSP 芯片的外部接口资源。
由于Sharc 系列DSP 芯片的外设接口资源相当的丰富,而外部引脚数却极其的有限,因此,该系列DSP 芯片的引脚复用情况相当严重。
图1Sharc 系列DSP 的外设接口分为两个部分:DAI 与DPI 。
每个部分都含有各种类型的外设接口,比如,DAI 中有PCG(精确时钟产生器),DPI 中包括Timer(定时器)、UART(串口)等。
我们使用的SPI 接口就包含在DPI 中。
DPI,即数字外设接口,其占有的14个外部引脚可以使用SRU 宏分配给它包括的任意一个外设接口。
Sharc 系列DSP 包含两个SPI 接口,分别是DPI 中的SPI 和DAI 中的SPI B 。
在我们的硬件设计中,使用DPI 中的SPI 。
SPI 通信具有主从两种工作模式,在实例中,DSP 的SPI 接口工作于主模式,flash 芯片工作于从模式。
对于sharc 系列DSP,根据雷春梅:硕士研究生技术创新时钟极性和相位的不同,其SPI接口时钟有四种不同的组合,具体设置见参考文献[3]中的SPICTL寄存器。
将DPI的1,2,3,5号引脚分别指定为SPIMOSI、SPIMISO、SPICLK、SPIDS功能。
具体硬件连接示意图如图1所示。
另外,在连接好SPI接口后,我们还需注意Sharc系列DSP程序加载方式的硬件设置。
对于Sharc系列DSP,具有三种程序加载方式,分别是:SPI接口主模式程序加载、SPI接口从模式程序加载以及并行flash程序加载。
具体使用的是哪种程序加载方式,需要通过DSP芯片命名为BOOTCFG0、BOOTCFG1的两个引脚的状态设置来判断。
每种启动方式引脚状态的详细设置请参考文献。
在我们的应用中,使用的程序加载方式为SPI接口主模式程序加载。
3软件设计3.1SPI接口的两种数据传输模式DSP通过其SPI接口向Flash写入数据,具有两种方式:DMA方式与核控制方式。
DMA方式,即是直接存储器存取方式,此方式可在不受CPU核的控制下完成存储器中一个数据块的读写。
在数据读写的时间内,CPU可工作于其他任务中。
DMA方式可以显著提高CPU的利用率。
而核控制方式是指在CPU核的控制下,通过查询指定寄存器的特定位,完成一次数据的传输,而且每次只能传送一个数据字。
对于Sharc系列DSP,一个数据字可以是8位,16位,也可以是32位。
数据字长度的设置是通过设置特定寄存器(SPICTL寄存器)的特定位来实现的。
具体寄存器配置,请参考文献[7]。
在CPU核控制方式下,在进行下一次数据传输之前,为了保证数据传输的正确性,CPU必须查询状态位,因此,CPU会不断的查询SPI接口状态寄存器SPISTAT中的状态位,因此,CPU的利用率较DMA方式低。
图23.2Sharc系列DSP中断系统在Sharc系列DSP中,外设接口较多,每种类型的外设接口都会产生相应的中断。
但是,DSP芯片的中断号以及其对应的中断向量表是有限的,这就导致了中断向量的复用,即同一个中断号,可以被分配给不同的中断源。
另外,该系列DSP的中断号对应的中断源也只是部分能被重分配。
并且每一个中断号都有一默认中断源。
所以,在DMA与核控制方式下,SPI口的四个接口在数据传输时占用相同的中断号,因此也具有相同的中断向量。
3.3软件流程及各模块功能从SPI Flash中加载程序,必须先把工程文件编译链接得到的ldr文件写入SPI Flash存储器中。
对flash编程的程序流程图如图2所示。
在对M25P20进行擦除、写数据等写操作前,必须设置状态寄存器中写使能位以使能写操作。
在擦除M25P20后,写使能被自动禁止,因此,在继续写数据之前,必须重新设置存储器的状态寄存器,以写使能其状态。
在我们的系统中,程序被分成了三个模块,分别是:系统初始化模块、对Flash操作模块和数据写入与校对模块。
系统初始化模块主要包括实现设置系统锁相环参数、设置系统中断向量等初始化系统功能的子函数;对Flash操作模块则主要包括实现一些对Flash状态查询、设置以及擦出等功能的子函数;数据写入与校对模块则是实现将工程的ldr文件写入Flash,然后读出并与原始数据进行校对等功能的子函数。
4结束语在这提出几个值得注意的问题。
一是关于使用的SPI Flash的存储结构组织问题,具体的组织结构请参考文献,需要注意的是在对该存储器进行编程时,需要小心一次性写入的数据量大小,这由存储器每块(sector)的容量决定。
当一次性写入的数据量超过该容量时,会发生数据覆盖,从而导致得不到正确的写入。
二是注意该Flash芯片的写使能与片或段擦除之间的相互影响,这在前文中已给出了叙述。
三是在对Flash芯片进行操作时,无论是擦出操作,还是写入操作,在相应操作完成后必须读取该存储器芯片的状态寄存器,根据某些状态位的状态判断操作是否完成。
四是通过DMA方式对该存储器进行数据写入或者擦除操作时,在根据SPI状态寄存器中状态标志判断操作已完成后必须延迟一定的时间,因为判断DMA传输是否完成无论采用的是DMA中断方式,还是DMA状态寄存器状态查询方式,当DSP根据上述条件作出判断时,实际情况是数据并没有完成传输。
最后,希望通过本文,能对从事ADI公司DSP开发与应用的相关人员提供一些帮助。
本文作者创新点:基于SPI Flash的Sharc系列DSP程序加载,在整个系统的设计与调试过程中,无论是硬件上,还是软件部分都遇到的问题,都一一提出了解决方案。
参考文献[1]STMicroelectronics.M25P20[M].STMicro-electronics group ofcompanies,2004.[2]Analog Device.ADSP-21368SHARC Processor HardwareReference[M].Analog Devices,Inc,2006.[3]Analog Device.Visual DSP++5.0Getting Started Guide[M].Analog Devices,Inc,2006.[4]Analog Device.Getting Started With SHARC Processors[M].Analog Devices,Inc,2006.[5]薛东方,尚朝轩,何强,周相阳等。