引 言
在某型光电跟踪产品中,由于需要对抗各种人工干扰和背景干扰,使得导引系统需要处理的信息量成倍增加,对导引系统的实时处理性能提出了更高的要求。针对这种情况,导引系统采用了双dsp系统的信息处理方案,dsp选用ad公司的adsp218x和ti公司的tms320c62x。adsp218x进行目标信号的采样和外围控制信号的输入、输出,tms320c62x专门进行目标的鉴相、各种抗干扰算法的计算,这样tms320c62x不受外设服务中断影响,可以更好地发挥计算效率,提高了导引系统的实时处理性能。本文针对adsp218x系列和tms320c62x系列组成的双dsp系统,提出了一种串行引导方案,同时给出了其硬件及软件的具体实现方法。
1 dsp引导模式
1.1 tms320c62x引导模式
tms320c62x系列dsp提供了三种引导方式:
(1)无引导过程:dsp直接从地址0开始执行代码;
(2)rom方式引导:由dma/edma控制器从外部ce1空间中的rom中拷贝固定数量的代码到地址0,启动时也可选择rom的宽度,拷贝结束后,cpu从地址0开始运行;
(3)hpi方式引导:由外部主机通过hpi对芯片的存储器空间进行初始化,初始化结束后,外部主机通过hpi中断唤醒tms320c62x,cpu开始从地址0运行。
所有这些设置项都是在芯片复位的时候才进行检查。一旦复位信号有效(reset=0),所有的三态输出管脚恢复为默认状态,然后在reset信号的上升沿处检查设置管脚bootmode[4:0]的状态,自举逻辑开始生效。
1.2 adsp218x引导模式
adsp218x系列dsp提供了三种引导方式:
(1)无引导过程:dsp直接从地址0开始执行代码;
(2)bdma方式引导:复位后dsp以bdma方式首先从字节存储空间拷贝前32字的程序代码,拷贝完程序从程序存储地址0开始执行代码。
(3)idma方式引导:复位后dsp以idma方式可以存取任意数量的内部存储空间,当内部程序存储地址0被写入时,程序从程序存储地址0开始执行代码。
以上设置都是在芯片复位的时候才进行检查,当复位信号有效时(reset=0),所有的三态输出管脚恢复为默认状态,然后在reset信号的上升沿处检查设置管脚mode[a:d]的状态,自举逻辑开始生效。
1.3 双dsp系统串行引导模式
根据以上两种dsp的引导模式,选用串行引导模式,即把tms320c62x作为主处理机,外围接8位宽的flash,采用rom方式引导,tms320c62x和ad-sp218x的程序都固化在flash中,adsp218x作为从处理机,采用idma方式引导,并且两个dsp之间的通讯也采用idma方式。这样tms320c62x可以把adsp218x作为一个存储区来访问,既去掉了握手软件,提高了工作效率,又可以去掉adsp218x外围的flash,减少了硬件花销。主要硬件连接示意图如图1所示。
双dsp系统串行引导的过程如下:系统上电后,tms320c62x从位于ce1空间flash中以rom引导的方式复制一定数量的tms320c62x程序至地址为ox00000000的内部程序存储空间。当程序复制完毕后,tms320c62x开始从0x00000000起始的程序地址开始执行程序,利用这段程序,把剩下的程序从flash中读出,tms320c62x进入到正常工作状态。然后tms320c62x负责将存储在flash中的adsp218x的运行程序读出,通过idma接口发送至adsp218x的片内pm存储区,执行对adsp218x的程序装载。当adsp218x引导完毕后,adsp218x运行装入的程序进入正常的工作状态,至此系统串行引导完毕。
2 双dsp系统串行引导的实现
2.1 硬件连接
tms320c62x的低16位数据线ed15~0与adsp218x的iad15~0连接,tms320c62x的低8位数据线ed7~0与flash的数据线d7~0连接。tms320c62x的bootmode[4:0]引脚配置如下:
由于tms320c62x与adsp218x的idma通讯控制需要译码,因此加了一片cpld,硬件连接图如图2所示。片内的逻辑方程为:
2.2 tms320c62x启动程序代码的创建
tms320c62x启动程序代码包含以下几个部分。
2.2.1 中断向量表vectors.asm
中断向量表缺省保存在tms320c62x内部ram的从0地址开始长度为0x200字节的空间,上电或复位后,芯片自动运行复位中断。因此,复位中断向量中应包含跳转到引导程序(_boot)的语句,引导程序的主体在boot.asm中定义。部分程序如下:
2.2.2 自引导的汇编程序boot.asm
自引导汇编程序主要是配置基本的寄存器,并将保存在外部flash中的二进制程序拷贝到dsp内部的ram中再执行。汇编程序如下:
2.2.3 主程序main.c
主程序是dsp要实现具体功能的主体,其定义的主函数main()经编译后在函数_c_int00中调用,因此在上面的引导程序结束时,将跳转到函数_c_int00,即主函数main执行。另外在主程序中,还要包含把adsp218x的应用程序从flash传送到adsp218x内部存储区的子程序。
2.2.4 链接命令程序link.cmd
链接命令程序用于定义dsp系统各存储区的开始地址及大小,并分配编译后各段到相应的存储空间,link.cmd内容如下:
2.3 tms320c62x通过idma接口把adsp218x程序拷贝到内部存储器的方法
从tms320c62x来看,idma接口只有三个寄存器,分别是idma控制寄存器idma_ial,idma读数据寄存器idma_ird和idma写数据寄存器id-ma_iwr。
该三个寄存器的定义如下:
访问adsp218x的内存单元一般需要三个步骤:
第一步:向idma控制寄存器写该数据单元所在的页面。编程只需要向idma_ial控制寄存器写入恰当控制字即可。例如要向apsp218x的pm区的第5页写数据,则应该有下面的命令:
idma_ial=0x8050;
第二步:向idma控制寄存器写该数据的地址。
如果是pm区,则该数据的地址为当前地址,如果是dm区,必须将当前地址加0x4000。例如要向pm区的0x0809区写数据,则应该有下面的命令:
idma_ial=0x0809;
如果向dm区写数据,则有命令:
idma_ial=0x0809+0x4000;
第三步:读写数据。如果是读数据,例如要将数据读入到unsigned short xx单元,则应该用下面的命令:
xx=(unsigned short)idma_ird;
如果是写数据,例如要将数据unsigned short yy写入某地址单元,则应该用下面的命令idma_iwr=yy;
注意以后每读取或写数据,idma接口的地址指针自动加1。
tms320c62x通过idma口,在启动后把ad-sp218x的应用程序拷贝到adsp218x的内部存储器中。adsp218x的应用程序作为一个asm文件供tms320c62x应用软件调用,具体格式为:
2.4 flash的在线烧写
上面的工程文件经ccs系统编译、汇编后生成可执行coff文件(.out),它需要转换成可供ccs调用的数据文件,通过jtag口在线写入到flash中。利用ti公司的hex6x.exe工具,将生成的.out文件转化成.hex输出文件。由于该hex6x.exe工具是提供给eprom编程器的,用eprom编程器可直接烧写.hex文件。但对于flash的在线系统编程来说,生成的.hex文件不能直接使用,必须再编写一段程序将.hex的文件头去掉,分离出数据文件,最后才能由flash的在线烧写程序将最终的数据文件烧写到flash中。
hex6x命令行的格式为:
命令执行后会产生三个文件,这三个文件再经过转换融合成一个文件flash.asm,格式如下:
3 结 语
该系统经过单板和整机的高低温、振动、电磁兼容试验验证,系统在上电后能够100%的正常启动,性能稳定。该方法为编写由tms320c62x和adsp218x组成的双dsp系统的引导程序拓宽了思路,其设计思想对其他型号组成的双dsp系统的设计也具有借鉴意义。
MAXHUB作为行业领跑者当勇担重任,塑造行业品质
人工智能帮助你延缓大脑老化
京东自主研发“京蜓”旋翼无人机首飞成功
AI在制造业的应用前景乐观 制造流程已显现成效
苹果悄悄更新AirPods Max维修费
基于ADSP218x系列和TMS320C62x系列实现串行引导方案的设计
工商业屋顶光伏阵列的朝向和倾角设计
O-RAN测试解决方案和用例解析
FlashArray™ 荣获TrustRadius“最佳客户支持奖”和“最佳可用性奖”
电容容量与工作电压之间的关系
一文详解什么是逆功率保护
手机护眼模式真的有用吗?
长城上架国产芯片笔记本:飞腾处理器+中国船舶重工709所独显
车载摄像头防水检测的作用
开箱评测:研华边缘智能系统EI-52
什么是策略模式
垄断锂电池价格,松下、索尼遭欧盟罚款12亿
NaviForum 将于今年9月 再度登陆上海
光模块的5种WDM波分复用技术,你都知道吗?
防水连接器是什么,它的优势是怎样的