基于OMAPL138双核通信的测试与实现
2016-04-06袁三男
俞 静, 袁三男
(上海电力学院 电子与信息工程学院, 上海 200090)
基于OMAPL138双核通信的测试与实现
俞静, 袁三男
(上海电力学院 电子与信息工程学院, 上海200090)
摘要:通过分析双核处理器OMAPL138的双核架构、双核通信组件DSPLINK,以及基本数据流的概念,构建了双核通信中基本数据流的传输流程,并搭建了基于Linux系统的嵌入式交叉编译开发平台,测试实现了通用处理器端任务和数字信号处理器端任务的数据传输.
关键词:嵌入式系统; 双核通信; 数据流; 数字信号处理器
随着科学技术的发展和社会的进步,嵌入式技术在电子产品和通信领域中的地位日趋提高.嵌入式产品广泛应用于通信、医疗、娱乐、军事等重要领域.随之对嵌入式系统的性能要求也越来越高.嵌入式系统也正朝着高效性、稳定性、可靠性、节能性的方向发展[1].OMAPL138就是TI公司推出的一款高性能、低功耗的嵌入式双核处理器,已广泛应用于对讲机、广播电视监控等.OMAPL138的双核芯片设计降低了硬件电路设计的难度,增强了数据处理能力,但也给双核开发的软件设计带来了难度[1-2].本文通过DSP/BIOS和Linux端DSPLINK(“DSP/BIOS LINK”的简称)技术,建立ARM(高级精简指令集计算机)端和DSP(数字信息处理器)端数据传递通道,实现了简单数据流的传输.
1OMAPL138双核架构特点
OMAPL138双核架构兼具DSP的高数字信号处理性能和精简指令计算机(RISC)技术的优点,采用一个高性能的 TMS320C674x DSP内核和 ARM926EJ-S 内核,因此OMAPL138结合了ARM 和DSP处理器的优点[2].共享内存、中断控制和DSPLINK组件的完美设计解决了OMAPL138双核间通信的问题.
1.1OMAPL138通信流程
OMAPL138板上集成了丰富的外设资源,并且通过外设与内存统一编址[3-4].板上的外设资源除小部分仅ARM和DSP单独享用,其余外设资源均可以被ARM和DSP共享.RAM和DDR(片外)通常作为共享内存区域,RAM通常用于存放小数量的控制信息传输,DDR则用于大数量的通信传输[5].共享内存为OMAPL138的双核间通信提供了良好基础.OMAPL138系统配置模块中共增加了7个中断,其中,DSP响应中断3个,ARM响应中断4个.OMAPL138双核间通信通过中断来控制.例如:ARM在RAM中写入命令或是在DDR中写入传输数据,再向DSP端发出对应的中断信号,DSP在接收到中断信号后,从共享内存中读取数据或命令,按中断的优先级做出相应的处理,完成后再中断通知ARM,最终完成了双核通信.如图1所示.
1.2DSPLINK简介
DSPLINK是进行双核通信的驱动程序,也是双核通信中最关键的部分[6].为了减小开发的难度,对DSPLINK双核的物理连接进行虚拟化处理,并提供了一整套的应用程序编程接口[7].DSPLINK的软件架构如图2所示.
1.2.1GPP(通用处理器)端和DSP端
GPP是指和DSP端通信的通用处理器.DSPLINK中GPP端由GPP OS,OS抽象层,Link Driver,Processor Manager,DSP/BIOS Link API组成.Linux操作系统是本实验的GPP OS.OS抽象层主要负责提供其他组件访问的应用程序接口和一些常用的操作系统服务组件.Link Driver是指链接驱动层,在双核间数据传输和DSP工作中发挥着重要作用.Processor Manager为进程管理单元,主要帮助用户控制连接驱动层和维护信息.GPP端的最上层就是接口层,通过接口可以更好地访问GPP端,给用户开发带来便利.
DSPLINK中DSP端由DSP/BIOS,Link Driver和其他驱动组成,其中DSP/BIOS指DSP端的一个实时的轻量级操作系统.与GPP端的链接驱动层不同,DSP端的连接驱动层只负责在物理连接成功的状态下和GPP端的交互.
1.2.2相关组件
GPP端中DSPLINK包含了PROC,CHNL,MSGQ,POOL,NOTIFY,MPCS,MPLIST,RINGIO等重要组件[8].本文中使用了其中的PROC,CHNL,POOL这3个DSPLINK组件.
(1) PROC组件可以对DSP的空间进行直接操作,读写DSP端的地址空间,控制DSP端的程序运行.PROC_setup()初始化DSP,PROC_attach()按照规定的处理器的ID号与指定的DSP链接,PROC_load()将编译好的程序载入DSP中.
(2) CHNL组件主要负责ARM端和DSP端的数据传送,是一个逻辑数据传输通道,采用issue-reclaim模式进行数据传送.
(3) POOL 组件主要用于配置共享内存,提供相关应用程序接口.
1.3开发环境搭建
良好的开发环境是双核通信测试中必不可少的部分[9].本实验操作系统为Linux系统,其开发流程如图3所示.测试前需要在PC机上安装虚拟机和Linux系统,将OMAPL138开发板和PC机用串口线、网线等连接好.待软硬件就绪后,在虚拟机上建立存放GPP端和DSP端的程序的文件夹,并将该文件夹下载到开发板上.进入开发板目录安装驱动程序dsplink.ko.准备就绪即可开始测试.
2基本数据流传输测试
在信息技术高速发展的今天,数据流作为一种高速、海量的数据形式出现在实际应用领域中[10].数据流通常被定义为只能以事先规定好的顺序被读取一次的数据序列,其在通信中代表“所使用的信息的数字编码信号序列”[10].由于数据流简单、方便,其在传输测试的应用十分广泛.本文将传输的内容定义为简单数据流序列0x47,在基于OMAPL138的嵌入式开发平台下,通过DSPLINK开发组件的应用,进行GPP端与DSP端的传输测试.其中,DSP端应用程序采用SIO(流输入输出)来实现任务传输.
2.1GPP端
本实验中,GPP端就是ARM端.GPP端只要将DSPLINK组件初始化,将定义好的简单的数据流发送给DSP端并保存,待DSP端接收并返回传输内容后,进行比较,再清除释放内存.GPP端是通过调用不同模块的功能函数来实现不同的功能,具体流程如图4所示.
2.1.1准备
(1) 首先设置DSP的状态变量DSP_STATUS,根据状态变量判断DSP的状态是否正常,这将直接影响到后面的操作.
(2) 设置用于数据传输测试的GPP端缓冲区的大小和循环的次数.为了解决某种型号的一个CPU可以有几个内核DSP的问题,必须明确指定出其ID号,这样就解决了多内核带来的混淆不清的问题.在本文中只用了一个DSP内核,所以ID均被默认为零.
2.1.2创建
(1) 创建和初始化PROC组件,PROC是表述应用空间的DSP处理器.
(2) 根据DSP的ID号连接到指定的DSP,建立起GPP端与DSP端的联系.
(3) 打开共享内存池.使用内存池不会产生或很少产生堆碎片,可以避免内存泄漏,并比malloc或free的内存申请和释放更快.
(4) 将编译好的DSP程序下载到DSP中,等待DSP处理.
(5) 创建用于数据通信的通道.由于CHNL(数据传输的通道)组件无方向性,通道方向可以配置,必须建一个通往DSP通道和一个反方向的通道.
(6) 根据DSP的ID号分配一块用于DSP数据传输的缓冲区.
(7) 最后,初始化带有效数据的缓冲区并返回状态值.
2.1.3执行
(1) 根据DSP的ID号开始运行DSP.
(2) 创建一个数组填写用于数据传输的数据,并且设定大小.
(3) 循环发送数据到指定DSP,接受来自DSP的数据,并将接收到的数据和原来的数据进行校验以检测传输的正确性.
(4) 最后,返回本过程的状态值.
2.1.4释放内存
由于过多的占用内存空间,会引起内存泄漏,程序运行时间越长,占用存储空间越多,最终造成整个系统清除崩溃.为了避免这种情况的发生,要在执行步骤完成后释放内存.
2.2DSP端
本实验中,DSP端主要进行数据的接收、处理以及将处理后的数据返回给GPP端,在DSP端采用了流输入输出型(SIO)实现DSP/BIOS线程中的任务.具体流程如图5所示.
(1) 定义任务模式TSK.TSK模式遵循“先来先服务”的原则,任务的优先级低于软中断.
(2) 初始化中断服务子程序ISR和DSP/BIOS LINK.
(3) 确定传输次数和大小.
(4) 执行任务模式.首先,动态创建IOM硬件设备驱动模块和DIO适配模块.IOM是DSP/BIOS的设备驱动模块的一种接口方式,其根据输入输出方式的不同,有不同的类驱动程序.本文中采用流输入输出型SIO方式.DIO适配模块主要负责信号同步和缓冲管理等.然后定义数据结构,创建SIO输入输出流.其次,分配缓冲区,接收处理数据并将处理后的数据送回给GPP端.最后,释放内存缓冲区.
2.3实验结果
本实验在SDK(软件开发工具包)提供的范例基础上加以调整和更改,最终通过不断调试,实现了双核间的简单数据流通信,通信效果良好.但在测试过程中经常会遇上开发板无法成功启动的情况,uboot和Kernel都无法启动.经过研究发现问题是系统没有配置好,在uboot要起来的时候敲命令printenv查看,然后重新配置系统,特别要注意IP地址的配置.
3结语
本文对OMAPL138中DSPLINK双核通信系统架构进行了分析,详细概述了双核通信的基本传输流程,并搭建了基于Linux系统的嵌入式交叉编译平台,利用简单数据流的易操作特点和DSP端流输入输出SIO模块完成了基于DSPL-INK的GPP端和DSP端的数据传输任务.实验结果表明,双核通信效果良好,这一技术具有较高的实用价值和应用前景.
参考文献:
[1]朱敏.基于OMAP平台DMR数字集群直通模式实现[D].成都:电子科技大学,2012.
[2]刘纪红,叶柠,尚奎.DSP+ARM双核处理器OMAPL138开发入门[M].北京:清华大学出版社,2013:5-21.
[3]郭睿,林岩.OMAPL138和FPGA的合并单元设计方案[J].单片基于嵌入式系统应用,2012(11):49-52.
[4]罗泽雄.基于OMAP平台的水声通信网络协议实现研究[D].哈尔滨:哈尔滨工程大学,2013.
[5]赵加祥.DSP系统设计和BIOS编程及应用实例[M].北京:机械工业出版社,2008:14-23.
[6]翟巍,刘成,田永春.基于OMAPL138芯片的无线传感器网络节点设计[J].通信技术,2014(2):221-225.
[7]岳仁超,孙建东,刘晓铭.基于OMAPL138智能台区终端的设计[J].自动化与仪器仪表,2014(5):44-49.
[8]HENZINGER M R,RAGHAVAN P,RAJAGOPALAN S.Computing on data streams[C]∥External Memory Algorithms.American Mathematical Society,1999:107-118.
[9]李心阳,唐厚君.基于OMAPL138的电能质量监测系统的设计[J].微计算机信息,2011(6):78-80.
[10]李培培.数据流中概念漂检测与分类方法研究[D].合肥:合肥工业大学,2012.
(编辑桂金星)
Test and Realization of Dual-core Communication Based on OMAPL138YU Jing, YUAN Sannan
(School of Electronics and Information Engineering, Shanghai University of
Electric Power, Shanghai200090, China)
Abstract:By analyzing OMAPL138 dual-core architecture,dual-core communication component DSPL-INK and the basic concept of data streams,the basic data stream transmission process is constructed between dual-corecommunication.On the basis of the system of Linux,the embedded cross-compilation development platform is established.By testing,the task of data transmission between digital signal processor task and general processor is realized.
Key words:embedded system; dual-core communication; data stream; digital signal processor
中图分类号:TP332
文献标志码:A
文章编号:1006-4729(2016)01-0061-05
通讯作者简介:袁三男(1967-),男,博士,副教授,江苏苏州人.主要研究方向为通信与信息系统,流媒体网络,数字电视,嵌入式系统.E-mail:samuel.yuan@shiep.edu.cn.
收稿日期:2015-06-08
DOI:10.3969/j.issn.1006-4729.2016.01.014