《基于ADSP218x系列和TMS320C62x系列实现串行引导方案的设计.docx》由会员分享,可在线阅读,更多相关《基于ADSP218x系列和TMS320C62x系列实现串行引导方案的设计.docx(9页珍藏版)》请在第一文库网上搜索。
1、基于ADSP218x系列和TMS320C62x系列实现串行引导方案的设计引言在某型光电跟踪产品中,由于需要对抗各种人工干扰和背景干扰,使得导引系统需要处理的信息量成倍增加,对导引系统的实时处理性能提出了更高的要求。针对这种情况,导引系统采用了双蟠系统的信息处理方案,DSP选用A1公司的ADSP218x和I1公司的TMS320C62oDSP218x进行目标值号的采样和外围控制信号的输入、输出,TMS320C62x专门进行目标的鉴相、各种抗干扰算法的计算,这样TMS320C62x不受外设服务中断影响,可以更好地发挥计算效率,提高了导引系统的实时处理性能。本文针对ADSP218x系列和TMS320C
2、62x系列组成的双DSP系统,提出了一种串行引导方案,同时给出了其便性及软件的具体实现方法。1 DSP引导模式1. 1TMS320C62x引导模式TMS320C62x系列DSP提供了三种引导方式:(1)无引导过程:DSP直接从地址0开始执行代码;(2) RoM方式引导:由DMA/EDMA控制器从外部CE1空间中的RoM中拷贝固定数量的代码到地址0,启动时也可选择ROM的宽度,拷贝结束后,CPU从地址0开始运行;(3) HE1方式引导:由外部主机通过HP1对芭片的存储器空间进行初始化,初始化结束后,外部主机通过HP1中断唤醒TMS320C62x,CPU开始从地址0运行。所有这些设置项都是在芯片复
3、位的时候才进行检查。一旦复位信号有效(reset=。),所有的三态输出管脚恢复为默认状态,然后在reset信号的上升沿处检查设置管脚BOOTMODE4:0的状态,自举逻辑开始生效。1. 2ADSP218x引导模式ADSP218x系列DSP提供了三种引导方式:(1)无引导过程:DSP直接从地址0开始执行代码;(2) BDMA方式引导:复位后DSP以BDMA方式首先从字节存储空间拷贝前32字的程序代码,拷贝完程序从程序存储地址0开始执行代码。(3) IDMA方式引导:复位后DSP以IDMA方式可以存取任意数量的内部存储空间,当内部程序存储地址0被写入时,程序从程序存储地址0开始执行代码。以上设置都
4、是在芯片复位的时候才进行检查,当复位信号有效时(reset=O),所有的三态输出管脚恢复为默认状态,然后在reset信号的上升沿处检查设置管脚MODE1A:D的状态,自举逻辑开始生效。1. 3双DSP系统串行引导模式根据以上两种DSP的引导模式,选用串行引导模式,即把TMS320C62x作为主处理机,外围接8位宽的F1ASH,采用ROM方式引导,TMS320C62x和AD-SP218x的程序都固化在F1ASH中,ADSP218x作为从处理机,采用IDMA方式引导,并且两个DSP之间的通讯也采用IDMA方式。这样TMS320C62x可以把ADSP218x作为一个存储区来访问,既去掉了握手软件,提
5、高了工作效率,又可以去掉ADSP218x外围的F1ASH,减少了硬件花销。主要硬件连接示意图如图1所示。用i双DSP系统硬件连接示意出双DSP系统串行引导的过程如下:系统上电后,TMS320C62x从位于CEI空间F1ASH中以ROM引导的方式复制一定数量的TMS320C62x程序至地址为OXoOOOOOOO的内部程序存储空间。当程序复制完毕后,TMS320C62x开始从OXoOOOoOOO起始的程序地址开始执行程序,利用这段程序,把剩下的程序从F1ASH中读出,TMS320C62x进入到正常工作状态。然后TMS320C62x负责将存储在F1ASH中的ADSP218x的运行程序读出,通过IDM
6、A接口发送至ADSP218x的片内PM存储区,执行对ADSP218x的程序装载。当ADSP218x引导完毕后,ADSP218x运行装入的程序进入正常的工作状态,至此系统串行引导完毕。2双DSP系统串行引导的实现2. 1硬件连接TMS320C62x的低16位数据线ED150与ADSP218x的IAD150连接,TMS320C62X的低8位数据线ED70与F1ASH的数据线D70连接。TMS320C62x的BoOTMODE4:0引脚配置如下:B(X)TM()DE40MemoryMapMemoryAtAddress01)ootO11O1MAP1Interna18bROMADSP218x的M3DEA:
7、D引脚配置如下:M()I)EA:D!MemoryModese1ectionMemoryAtAddress0Boot1010HostMemoryModCInterna1U)MA由于TMS320C62x与DSP218x的IDMA通讯控制需要译码,因此加了一片CP1D,硬件连接图如图2所示。片内的逻辑方程为:IS(E3OR(E21OR(NOTE20)AND(NOTEA2I)ORE20)s1RXARE()RE21OR(NOTEA2Q)ORCE3;IWR=AWEOREA21OR(NOTE20)OR(T3;IA1bA_boo11定义全局函数_boot:,先设才控制寄存MIEMIFGCR.EMIFCEO.E
8、MIF_CE1等(吗)mvk10x00000000,A?内部程序存储区开始地址-A4I1mVid0x0H00000.B4IF1ASH开始延址mvkhOXoooOOOCO,AJIInvkhOxC1400000,IUXCrOA1_boo1_1ooptMbM十一B5mvk10x10000,B6:朋为需瞿拷双的字节tadd1.AI.AIImvkh0x10000rH(1CrnPkA1.1K.IK)rwpMtbB5,A,一+:BO1bbout_Ioop1o,贝F1iSH中的程序我内部程序存储区I用同悻的方法可以把F1ASH呼的林摩梅同到DSP内部的数据钝区或其他独力mvk1.SZ_JWt)0BO;挑转到正
9、函数main执行mvkh.S2cintOOBOb.S2BOnop52.2.3主程序main.c主程序是DSP要实现具体功能的主体,其定义的主函数mainO经编译后在函数_c_int00中调用,因此在上面的引导程序结束时,将跳转到函数_c_intOO,即主函数main执行。另外在主程序中,还要包含把ADSP218x的应论短序从F1ASH传送到ADSP218x内部存储区的子程序。2.2.4链接命令程序Iink.cmd链接命令程序用于定义DSP系统各存储区的开始地址及大小,并分配编译后各段到相应的存储空间,Iink.cmd内容如下:Irts62x.IibMEMoRY(VcCjd0000000OhI=
10、OoOoO20Oh/*Interrupttab1e1ocation1/VCCK2so00000200hI=00020h/InterruptIHb1C1ocation2*/IPRAM1C)=0()()0()4()0hI=0000fb(fhInterna1ProgramRAM64K/HashjO=OHOOOOOh1=fX)400000h/CE1spaceiF1ash*/II)MI,()RTjo030000CX)hIO1OOOOOOh/CEXspace:IDMAPOr1/SR/M:o=80000000hI-O(X)JOOOOh/*Interna1SRAM64K/SECT1ONS.vccomvccsI
11、.boo1_1oadVeCZ2.ADSP218PMSectF1ASH内的某个地址:其他略)2.3TMS320C62X通过IDMA接口把ADSP218x程序拷贝到内部存储器的方法从TMS320C62x来看,IDMA接口只有三个寄存器,分别是IDMA控制寄存器IDMA_IA1,IDMA读数据寄存器IDMA.IRD和IDMA写数据寄存器ID-MA_IWRO该三个寄存器的定义如下:# defineIDM_IA10x03200000)# defineIDMA_IWR0x03100000)PdefineIDMA.IRD(*(vo1ati1eunsignedint)(*(vo1ati1eunsignedin
12、t*)(*(vo1aii1cunsignedint*)访问ADSP218x的内存单元一般需要三个步骤:第一步:向IDMA控制寄存器写该数据单元所在的页面。编程只需要向IDMA_IA1控制寄存器写入恰当控制字即可。例如要向APSP218x的PM区的第5页写薮据,则应该有下面的命令:IDMAA1=OX8050;第二步:向IDMA控制寄存器写该数据的地址。如果是PM区,则该数据的地址为当前地址,如果是DM区,必须将当前地址加0x4000。例如要向PM区的0x0809区写数据,则应该有下面的命令:IDMA_IA1=0x0809;如果向DM区写数据,则有命令:IDMAA1=OXO809+0x4000;第
13、三步:读写数据。如果是读数据,例如要将数据读入到UnSignedshortXX单元,则应该用下面的命令:XX=(unsignedshort)IDMARD;如果是写数据,例如要将数据UnSignedshortYY写入某地址单元,则应该用下面的命令IDMAJWR=YY;注意以后每读取或写数据,IDMA接口的地址指针自动加1。TMS320C62x通过IDMA口,在启动后把AD-SP218x的应用程序拷贝到ADSP218x的内部存储器中。ADSP218x的应用程序作为一个asm文件供TMS320C62x应用软件调用,具体格式为:.def_ADSP218xPMJ定义全局218x程序存放地址.sect*.DSP218xPMScc:说明218x程序存放段地址的位置ADSP218xPM:.short0x0002总的PM段数.short0x2302;第一PM段的长度.short0x0001,第一PM段的218XPM起始地址,short0x7800;数据.short0x4000.short0x7800;第N个PM段的长度.short0x0013: