摘要:以合众达公司的SEED—DIM138开发板作为硬件开发渠道,运用SYSLINK驱动规划了一种可用于DSP和ARM之间通讯的握手机制。ARM端运转Linux操作体系,进行人机交互;DSP端运转SYSBIOS操作体系,进行数据存储和买时运算。两者运用SYSLINK进行多核通讯,经过调用SYSLINK的API完结ARM和DSP之间的通讯。
要害词:OMAPL138;SYSLINK;SYSBIOS;双核通讯
导言
本规划首要介绍一种根据OMAPL138双核通讯的握手机制。在ARM端运转Linux体系,首要处理人机交互使命;而在DSP端运转SYSBIOS,进行实时处理。
1 OMAPL138双核处理器
OMAPL138是一款集成了ARM926EJ—S和TMS320C6748 DSP的双核处理器。ARM926EJ—S内核选用流水线结构,因而,处理器和存储器体系的一切部件都能够接连的作业,DSP核选用了一个2级根据高速缓存的架构。此外,OMAPL138还包含了一系列的外设,ARM和DSP能够独自操作这些外设。OMAPL138渠道的双核通讯根底是中止和内存同享。
OMAPL138双核处理器的内部体系框图如图1所示。
以OMAPL138为硬件渠道规划双核通讯,具有以下几个优势:
①开放性好。OMAPL138渠道是一种开放式体系结构,具有规范化的接口,可运用第三方开发的新功用与新程序;而且,其规范接口答应软件很容易地在不同渠道间移植,规划代码可重复运用。
②可编程性好。OMAPL138的两个微处理器核均可编程,只需改写程序就能彻底改动OMAPL138渠道的功用。
③功耗低。OMAPL138将ARM核和DSP核集成在一个芯片中,大大降低了额定功耗,且各部分的时钟办理彼此独立,可有用操控功耗。
④体系发动后两核独自运转。
2 Linux开发环境树立
2.1 主机开发环境的树立
双核通讯需求3个体系,即Windows体系、PC Linux体系和ARM Linux体系。
本规划PC机选用Windows7+VMware虚拟机+Linux的开发环境,其间VMware选用的是8.0版别,Linux选用的是ubuntu-10.04.4桌面版。
2.2 穿插编译环境的树立
在开发之前,还需求树立一个穿插开发环境,这是一套由编译器、链接器和libc库等组成的开发环境。其开发模型如图2所示。
图2中,TARGET是方针板,HOST是开发主机。在开发主机上,能够装置开发东西,修改、编译方针板的Linux引导程序、内核和文件体系,然后在方针板上运转。这种在主机环境下开发,在方针板上运转的开发形式叫做穿插开发。
构建穿插开发环境,首先要装置穿插编译东西链,然后需求在环境变量PATH中增加途径,该途径有必要是东西链的装置途径。
3 双核通讯规划
体系需求预留内存用于双核通讯,这是十分要害的一点。因为SEED—DIM138的DDR只要64 MB,因而在本规划中Linux内核只办理从0x C000 0000开端的32 MB的内存,剩余的从0x C200 0000~0x C3FF FFFF的32 MB的内存留给SYSLINK用于双核通讯。
3.1 开发东西
本规划用到的DSP端开发东西包含:集成开发环境(CCS),多线程、多使命操作体系(SYSBIOS),第三方算法库规范(eXpress DSP Component,XDC)。ARM端开发东西包含:Li nux、穿插编译东西。除此之外,还要用到的软件开发东西是SYSLINK和IPC。
为了缩短开发时刻,还装置了多核软件开发组件——MCSDK,有助于在一致渠道上运用SYSBIOS或Linux。
3.2 开发板发动
Windows作业台经过串口和JTAG、网口与SEED—DIM138开发渠道衔接。装备PC机端的超级终端,设置串口参数:波特率为115 200,数据位为8,奇偶校验无,中止位为1,数据流操控无。翻开Windows PC机串口操控台,衔接串口。开发板拨码开关拨到100 011,上电后,将编译好的内核和文件体系下载到开发板,并设置内核发动参数如下:
U—Boot—DIM138>setenv bootargs,console=ttysl,115200n8root=/dev/mtdblock4 rw rootfs=jffs2 mem=32@0xc0000000
然后保存,复位开发板从NAND FLASH发动,并加载iffs2文件体系。
开发板发动完结后,运用tftp服务将在ubuntu下编译好的SYSLINK驱动下载到开发板上,运用如下指令手动加载驱动:
insmod SYSLINK.ko TRACE=1 TRACEFAILURE=1 TRACECLASS=3
本规划顶用一个简略的LED例程规划双核通讯。在例程中对外部内存的分配如表1所列,这部分内容在cfg和bld文件中进行装备。
3.3 软件规划
软件规划根本代码流程如图3所示。软件规划中,DSP核的处理器ID为0,ARM核的处理器ID为1,DSP端调用IPC模块的MultiProc.h中的MultiProc_getId()函数获取HOST端的ID,HOST端运用相同的函数获取DSP端的ID,以此作为通讯的根底。通讯交互流程能够看做是一种“乒乓”操作,最终还要开释资源。本规划要完结的操作是,在程序中经过对LED对应的GPIO相关寄存器装备使2个LED接连闪耀2次,再别离顺次点亮2个LED,最终顺次平息2个LED。规划中要用到的API如表2所列。
在OMAPL138的ARM Linux操作体系中,SYSLINK供给了一个“slaveloader”组件来加载、发动、中止DSP处理器,规划了对DSP核的办理,一起也是运用“slaveloade”组件来运转SYSLINK示例程序。
将编译好的使用程序下载到开发板,运转后编写run.sh脚本,即完成了双核通讯的进程。脚本的内容为:set—x
./slaveloader startup DSP server_dsp.xe674
./app_host DSP
./slaveloader shutdown DSP
根本流程是:ARM端发动DSP并加载.xe674格局的SYS/BIOS文件→发动ARM端使用程序→封闭DSP核。
结语
本规划完结了一个简略的双核通讯进程,为杂乱的双核通讯,如A/D数据收集和FFT运算奠定了开发根底,在工程上具有必定的使用价值。