一种基于OMAPL138的双核通信设计

2015-09-12 06:42王燕张福洪
单片机与嵌入式系统应用 2015年8期
关键词:开发板双核内核

王燕,张福洪

(杭州电子科技大学 通信工程学院,杭州310018)

王燕(硕士研究生),主要研究方向为无线通信;张福洪(教授),主要研究方向为无线通信、移动通信。

引 言

本设计主要介绍一种基于OMAPL138双核通信的握手机制。在ARM 端运行Linux系统,主要处理人机交互任务;而在DSP端运行SYSBIOS,进行实时处理。

1 OMAPL138双核处理器

OMAPL138 是 一 款 集 成 了 ARM926EJ-S 和TMS320C6748DSP的双核处理器。ARM926EJ-S内核采用流水线结构,因此,处理器和存储器系统的所有部件都可以连续的工作,DSP核采用了一个2级基于高速缓存的架构[1]。此 外,OMAPL138 还 包 括 了 一 系 列 的 外 设,ARM 和DSP可以独自操作这些外设。OMAPL138平台的双核通信基础是中断和内存共享。

OMAPL138 双核处理器的内部系统框图如图1所示。

以OMAPL138为硬件平台设计双核通信,具有以下几个优势:

①开放性好。OMAPL138 平台是一种开放式体系结构,具有标准化的接口,可使用第三方开发的新功能与新程序;并且,其标准接口允许软件很容易地在不同平台间移植,设计代码可重复使用。

②可编程性好。OMAPL138 的两个微处理器核均可编程,只需改写程序就能完全改变OMAPL138平台的功能。

③功耗低。OMAPL138 将ARM 核和DSP 核集成在一个芯片中,大大降低了额外功耗,且各部分的时钟管理相互独立,可有效控制功耗[3]。

④系统启动后两核单独运行。

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 所示。

图1 OMAPL138双核处理器的内部系统框图

图2 交叉开发模式

图2中,TARGET 是目标板,HOST 是开发主机。在开发主机上,可以安装开发工具,编辑、编译目标板的Linux引导程序、内核和文件系统,然后在目标板上运行。这种在主机环境下开发,在目标板上运行的开发模式叫做交叉开发[4]。

构建交叉开发环境,首先要安装交叉编译工具链,然后需要在环境变量PATH 中添加路径,该路径必须是工具链的安装路径。

3 双核通信设计

系统需要预留内存用于双核通信,这是非常关键的一点。由于SEED-DIM138的DDR 只有64 MB,因此在本设计中Linux内核只管理从0xC000 0000开始的32 MB的内存,剩下的从0x C200 0000~0x C3FF FFFF 的32 MB的内存留给SYSLINK 用于双核通信。

3.1 开发工具

本设计用到的DSP 端开发工具包括:集成开发环境(CCS),多线程、多任务操作系统(SYSBIOS),第三方算法库标准(eXpress DSP Component,XDC)。ARM 端开发工具包括:Linux、交叉编译工具。除此之外,还要用到的软件开发工具是SYSLINK 和IPC。

为了缩短开发时间,还安装了多核软件开发组件——MCSDK,有助于在统一平台上使用SYSBIOS或Linux。

3.2 开发板启动

Windows工作台通过串口和JTAG、网口与SEEDDIM138开发平台连接。配置PC机端的超级终端,设置串口参数:波特率为115 200,数据位为8,奇偶校验无,停止位为1,数据流控制无。打开Windows PC机串口控制台,连接串口。开发板拨码开关拨到100 011,上电后,将编译好的内核和文件系统下载到开发板,并设置内核启动参数如下:

然后保存,复位开发板从NAND FLASH 启动,并加载jffs2文件系统。

开发板启动完成后,使用tftp服务将在ubuntu下编译好的SYSLINK 驱动下载到开发板上,使用如下命令手动加载驱动:

本设计中用一个简单的LED例程设计双核通信。在例程中对外部内存的分配如表1所列,这部分内容在cfg和bld文件中进行配置。

表1 外部内存分配

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所列。

图3 软件设计基本代码流程

表2 API分配表

在OMAPL138 的ARM Linux 操 作 系 统 中,SYSLINK 提供了一个“slaveloader”组件来加载、启动、停止DSP处理器,设计了对DSP 核的管理,同时也是使用“slaveloader”组件来运行SYSLINK 示例程序。

将编译好的应用程序下载到开发板,运行后编写run.sh脚本,即实现了双核通信的过程。脚本的内容为:set-x?

基本流程是:ARM 端启动DSP并加载.xe674格式的SYS/BIOS 文件→启动ARM 端应用程序→关闭DSP核。

结 语

本设计完成了一个简单的双核通信过程,为复杂的双核通信,如A/D 数据采集和FFT 运算奠定了开发基础,在工程上具有一定的应用价值。

[1]刘纪红,叶柠,尚奎.DSP+ARM 双核处理器OMAPL138开发入门[M].北京:清华大学出版社,2013.

[2]林淦,刘建群,许东伟.OMAPL138的双核通信设计[J].机床与液压,2014(22):146-149.

[3]曾晓晓.基于OMAP-L138 的数据存储和实时成像系统[D].西安:西安电子科技大学,2013.

[4]祝夏雨,熊九龙,王志虎,等.达芬奇平台的嵌入式Linux图像采集与显示[J].单片机与嵌入式系统应用,2014(1):34-36.

猜你喜欢
开发板双核内核
全球金融“F20”在此召开!横沥进入“双核”时代
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
浅析单片机开发板的设计与制作
新型夹心双核配和物[Zn2(ABTC)(phen)2(H2O)6·2H2O]的合成及其荧光性能
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
提升影视文化软实力的人文内核审视
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板