基于OMAP3530的船用导航雷达终端软件开发设计
2013-08-13唐维智李志刚
唐维智,郑 浩,李志刚
(中国电子科技集团公司第二十八研究所,江苏 南京 210007)
OMAP3530是TI公司提出的基于ARM和DSP的双核应用处理器[1],在单个芯片上集成了ARM Cortex-A8内核、TMS320C64X+DSP内核、图像引擎、视频加速器以及丰富的多媒体外设。用ARM作为应用处理器进行多样化的应用开发,实现用户界面接口,能够保证实时性和编码效率,降低开发成本;利用DSP进行算法加速,既能够保持算法的灵活性,又能提供强大的处理能力。
船用导航雷达作为重要的无线电辅助导航设备,在船舶近海定位、引导船舶进出港口、恶劣天气航行及避碰导航等领域发挥重大作用。国内导航雷达显控终端大多采用基于PC的PCI雷达图像卡或基于X86的计算机模块。随着现代电子技术的飞速发展,越来越多的嵌入式处理器被应用于雷达设备中。本文介绍的导航雷达终端以OMAP3530嵌入式处理器为硬件平台,采用了Codec Engine框架下的软件设计方案。该终端具有体积小、实时性高、稳定性好、成本低、功耗小的优点。
1 软件架构设计
如图1所示,根据处理器的工作分配,终端从纵向划分为ARM子系统与DSP子系统。ARM子系统采用Linux操作系统,DSP子系统采用DSP/BIOS操作系统。ARM核是精简指令集处理器,运算能力相对较弱,主要负责终端整体控制功能。而DSP核是超长指令集的处理器,适合处理大批量的数据传输和数据处理工作。
1.1 软件框架
如图1所示,终端软件分为显控处理软件、录取跟踪软件、GPMC总线驱动程序、Codec Engine。其中,显控处理软件在ARM核[2]上运行,它基于QT界面框架[3],使用自定义绘图和QT控件提供可视化的导航界面,负责终端整体控制功能;录取跟踪软件在DSP核上运行,负责处理运算需求高的各种滤波、关联算法,使导航雷达同时对多批目标进行实时录取、ARPA跟踪[4],并自动计算出目标的动态信息,以发挥避碰导航的作用;GPMC总线驱动程序为FPGA与OMAP提供通信通道;FrameBuf显示驱动为QT与OMAP显示模块提供图形数据写入通道;Codec Engine为显控处理软件(ARM侧)与录取跟踪软件(DSP侧)提供交互通道。
1.2 各软件间数据通信流
如图1所示,各软件间数据通信流包括雷达控制信息、雷达状态信息、波门信息、航迹信息、界面图形信息。显控处理软件通过GPMC总线驱动经FPGA读取雷达状态信息,写入雷达操控信息;同时读取波门和扇区信息,通过Codec Engine送至录取跟踪软件。录取跟踪软件通过Codec Engine将航迹信息送至显控处理软件。显控处理软件通过FrameBuf显示驱动将界面绘图送入OMAP显示缓冲。
图1 软件架构框图和数据通信流
2 在Codec Engine框架下的软件开发
双核系统虽然拥有强大的处理能力,但由于ARM和DSP分别对应不同的指令集和编译器,要使双核系统配合工作,分担不同的任务,双核之间的协调通信是一个关键的因素。TI的数字视频软件开发包(DVSDK)提供了Codec Engine来实现ARM与 DSP的协同工作[5]。Codec Engine引入了远程过程调用(RPC)的概念[6],它是指在另外一个处理器上远程执行的一个命令或者过程。在该终端中,录取跟踪软件为Server端,显控处理软件为Client端,Client端应用程序调用Codec Engine向Server端发送一个命令,Server端执行命令并通过相应的通信方式将结果返回给客户端,进而实现双核的无缝连接与协调工作。
在使用Codec Engine时,一般会做以下操作:搭建开发环境、创立算法(Codec)、服务的集成(Server)以及Engine的集成和应用(App)。
2.1 软件开发环境搭建
要构建定制的Codec Engine配置,需要在TI公司提供的数字视频开发套件DVSDK中修改相关软件包的环境变量,搭建软件开发环境。该套件中集成了多种软件模块,其核心是Codec Engine。要根据实际安装情况分别修改以下文件的环境变量。
(1)在 DSPLINK软件包中的 Rules.mk、c64xxp_5.xx_linux.mk、omap3530_2.6.mk文件中分别修改内核源码路径、ARM编译器路径、XDC工具路径、DSP系统路径等,完成后编译生成dsplinkk.ko(ARM与DSP连接模块)。;
(2)在CMEM软件包中的Rules.make文件中分别修改内核源码路径、ARM编译器路径,完成后编译生成cmemk.ko(内存管理模块)。
(3)在电源管理软件包中的 Makefile文件中修改内核源码路径、ARM编译器路径、DSPLINK安装路径,完成后编译生成lpm_omap3530.ko(电源管理模块)。
2.2 算法的创立
按照xDAIS-DM标准,目标跟踪算法模块需要提供标准中所定义的一些接口的实现函数,并且需要对算法模块中用到的一些结构作出定义。扩展xDM规范中已有的标准接口是产生自定义算法模块的一种最常见的方式。本文的目标跟踪算法模块利用VISA中的SCALE接口进行xDM标准算法库的开发。图2是SCALE接口中各个package的关系。
图2 SCALE接口中各个package的关系
codecs:在该文件夹下定义相关算法的.c和.h文件。为了使编译器能识别自定义的.c文件,需要修改package.bld配置文件,将自定义的.c文件名添加到SRCS数组中,这个SRCS数组中包括了package中的所有.c文件。最后修改相应的服务配置文件生成算法并将其打包,经编译生成 scale_ti.a64P的lib库文件,这就是所需要的codec。
extensions:包括 GPP端的 stub库和 DSP端的skeleton库(通过.c和.h文件配置 stub和 skeleton函数表),经编译生成scale.a64P的lib库文件。
2.3 服务的集成
servers:算法服务集成。修改配置文件,分配内存生成一个DSP端的可执行程序all.x64P文件,这就是所需要的DSP Server算法服务器,可被应用程序直接调用。
(1)修改all.tcf文件。对 128 MB的外部 RAM空间即DDR存储区进行分配,这块空间是ARM和DSP可以共享的,ARM 通过 MMU(Memory Management Unit)看到的是内存的虚拟地址,但DSP直接使用物理地址。内存分配具体如表1所示。
(2)修改 all.cfg文件。 主要对线程属性进行设置。线程属性主要包括栈大小、内存段的ID以及优先级等。堆栈大小要大于所需要的容量,这样比较安全。
表1 DDR内存分配
2.4 Engine集成和应用
apps:apps中定义了 Engine的配置,对于应用程序是在本地(ARM)执行还是在远端(DSP)执行,通过配置脚本文件 local.cfg和 remote.cfg即可实现,在脚本文件中指明Engine名称和Server名称。经编译生成app_remote.av5T可执行程序。
App 通过调用各种 VISA(Video,Image,Speech,Audio)APIs实现具体算法实例[7-8],VISA APIs通常分为四个部分:MOD_create(用于创建算法实例)、MOD_control(用于动态地修改算法实例的属性)、MOD_process(用于对算法传递输入数据流做处理并返回一个输出数据流)、MOD_delete(用于删除编码器实例,释放创建编码器实例时占用的系统资源)。以应用程序调用MOD_process为例,GPP端和DSP端的交互过程大致如图3所示。
(1)应用程序(GPP 端)调用 MOD_process()函数;
(2)Codec Engine将调用信息和调用所需参数传递给 GPP端的 stub;
(3)stub将参数打包封装成消息,并且将GPP端的虚拟地址映射到DSP端的物理地址;(4)Codec Engine将消息传递到 DSP端的 skeleton;(5)skeleton将参数解析出来,并且调用xDAIS算法的process函数;
(6)skeleton再将参数打包返回,以消息队列形式返回给应用程序,然后stub再对参数进行解析。
最后将编译生成的all.x64P算法服务器、app_remote.av5T可执行程序、dsplinkk.ko、cmemk.ko、lpm_omap3530.ko驱动以及驱动加载/卸载配置脚本 loadmodules.sh、unloadmodules.sh一同拷入目标板的同一文件夹执行,即可实现目标跟踪。
现代雷达终端价格高、体积大、功耗大,本文基于OMAP3530实现的船用导航雷达终端的软件设计,充分发挥了OMAP3530芯片的双核特性,满足高速处理和稳定性的需求,使船载雷达终端的体积大大减小,成本大幅降低,为在中小船只上普及装备导航雷达终端提供了一种新的解决方案,值得在现代船舶导航雷达中进一步研究推广。
[1]Texas Instruments.OMAP35x applications processor Texas Instruments OMAPTMfamily of products technical reference manual[Z].2008.
[2]李忠民,杨刚,顾亦然,等.ARM嵌入式 VxWorks实践教程[M].北京:北京航空航天大学出版社,2006.
[3]袁鹏飞.24小时学通qt编程[M].北京:人民邮电出版社,2000.
[4]王德生,彭勇.ARPA系统与舰船导航雷达显示[J].中国雷达,1998(02):40-42.
[5]温君安.基于Davinci处理器的语音算法设计和优化实现[D].杭州:浙江大学,2007.
[6]刘永春.基于DSP和 ARM的车牌识别系统设计[J].微型机与应用,2012,31(22):80-82.
[7]林上升.基于OMAP3530硬件平台的ARM和DSP协同开发方法[J].电子技术应用,2013,39(2):6-8.
[8]孙连三.基于OMAP的手持设备嵌入式系统研究[J].计算机工程与设计,2008(9):2242-2245.