叶 茎,张跃华(.武汉软件工程职业学院电子工程学院,湖北武汉 43005;.西门子中国研究院,湖北武汉 430000)
一种基于LINUX的双核通信BSP系统设计与实现
叶 茎1,张跃华2
(1.武汉软件工程职业学院电子工程学院,湖北武汉 430205;2.西门子中国研究院,湖北武汉 430000)
随着无线通信技术的发展,软件与硬件成本不断增加,一种基于LINUX的数字中频盘BSP(Board Support Package),即板级支持包系统,可以丰富基站设备软件资源,并降低成本。系统分析了硬件结构、软件模块,描述了平台支撑模块、双核通信模块、数字信号处理模块、双核通信模块的设计与实现。数据通信模块提供一套访问机制来进行数字中频盘上ARM与DSP核间通信。由于CPU芯片包含ARM+DSP异步双核心并且能共享CPU所有资源,因此数据通信模块利用共享内存来完成通信功能。ARM与DSP通过对共享内存控制来进行交互,并以信号量保证其控制操作的完整性与正确性。该系统已经用于无线通信,获得良好性能。
BSP;嵌入式;LINUX;双核通信;ARM;DSP
随着经济的发展,物质生活水平的提高,人们对各种无线通信设施的要求越来越高,基站为无线通信的收发提供支撑作用,负责移动信号的接收和发送。数字中频盘是基站信号控制的重要组成部分[1],是衡量基站质量核心标准之一,由中频子系统、射频子系统和收发子系统构成,实现信号从基带到中频,再到射频的上下行控制功能。由于基站设备量产后软件与硬件成本压力变大,多数软件基于VXWORKS操作系统,本文设计一套基于LINUX操作系统的双核通信板级支持包,即BSP(Board Support Package)系统,用于数字中频盘,以丰富基站设备的软件资源,并降低成本。
数字中频盘系统采用嵌入式系统[2],核心是嵌入式处理器、嵌入式操作系统和外围设备。为了使CPU与操作系统能更好地协同工作,引入BSP系统来进行优化。BSP系统为应用程序提供访问设备的接口,使其能更好地运行在嵌入式CPU上,属于系统程序。同一款CPU的BSP技术,在不同的操作系统上,即使功能一样,程序与接口定义却是完全不同的;所以BSP系统必须基于操作系统的特性来设计,才能更好地为应用程序服务,提供稳定的接口。
BSP系统为上层应用提供底层设备的支持,主要功能是完成CPU和操作系统的初始化,提供外围设备驱动程序[3]和硬件中断程序[4],定制操作系统模块功能;让操作系统能够运行在实时多任务环境下[5],并为应用程序提供访问设备的接口。目前市场上有多种体系结构的嵌入式CPU,需求不同,配套的外围设备也大不相同。对于嵌入式系统来说,不同的CPU对应不同的BSP,因此需要根据硬件环境需求,修改BSP程序以保证系统正常运行。
系统CPU选择德州仪器公司TI(Texas Instruments)的OMAPL138[6]异步双核处理器[7],包含ARM(Advanced RISC Machine)处理系统控制功能和DSP(Digital Signal Processing)处理数字信号功能[8]。如图1所示,虚线框内为嵌入式数字中频盘BSP系统的核心硬件结构设计,由TI公司的OMAPL138(ARM+DSP)、GC5330芯片构成。其中OMAPL138集成了高性能的型号为ARM926EJ-S的ARM核以及型号为TMS329C6748xDSP的DSP核,分别简写为ARM926、DSP6748。这是一个有健全操作系统支持、低功耗、用户接口丰富的高性能混合应用处理器[9]。双核架构设备提供了RISC(Reduced Instruction Set Computer)精简指令集计算机功能和DSP数字信号处理功能,能通过多种方式进行ARM与DSP的通信,满足控制要求。数字中频盘的宽带信号处理器芯片采用TI公司的GC5330芯片,它主要用于宽带传输和接收信号。开发者可以直接采用TI公司提供的强大的软件支持进行DSP与GC5330的交互处理,减少研发时间与成本。
图1 硬件结构连接图
系统CPU能在ARM上运行LINUX操作及监控应用程序,由DSP和GC5330芯片完成数字信号处理功能,并通过共享内存、核内通信[10-11]的方式,提高双核数据交互速率和整体系统性能[12]。OMAPL138还集成了丰富的外围设备接口,包括如图1所示的传统RS232和RS485串口、spi和IIC接口等,从而完成数模/模数(DA/AD)转换、电可擦除存储器(EEPROM)的读写等,方便进行开发与调试。因为CPU的I/O资源有限,采用Fpga(Field-Programmable Gate Array),即现场可编程门阵列来扩充I/O接口,使CPU能外挂更多的设备。
该软件系统选择LINUX作为操作系统,采用模块化设计,不仅要为应用层提供设备管理接口,还要实现ARM核与DSP核的通信功能,完成对所有硬件的支持。系统使用TI公司提供的DSP算法,与GC5330芯片配合,提供项目所需的数字信号处理功能,大大降低了开发的复杂度与时间。系统软件模块关系设计如图2所示。
图2 软件模块关系图
3.1 平台支撑模块
平台支撑模块主要由OMAPL138处理器驱动组成,包括外接设备驱动和提供给上层配置的接口。LINUX操作系统支持外接设备驱动程序以动态方式加载,在系统启动时,通过加载命令将驱动模块加入到内核中;使用外接设备时,在应用程序中将该设备用“open”系统函数打开,即可对其进行读写操作,还可通过设备配置接口对其进行控制操作。设备驱动主要过程为:CPU通过访问与操作FPGA寄存器,下载文件到FPGA内部,从而可以使用FPGA的I/O口,相当于扩展了I/O口;然后通过FPGA的I/O口进行spi、IIC等接口的时序模拟,实现多个外接设备的驱动。
3.2 双核通信模块
双核通信模块由设备驱动和通信接口扩展程序组成。ARM在LINUX启动后,读写固定的内存区域,等待DSP返回操作结果,就可进行数据通信。由于ARM与DSP异步双核的特性,ARM上同时运行LINUX与DSP的操作系统,共享内存会导致两系统地址运行冲突;修改内存地址,使LINUX系统运行在高48Mbyte的内存空间,即可解决冲突,OMAPL138处理器异步双核通信也能够正常使用。集成ARM与DSP双核,共享所有外设特性和内存,实现ARM与DSP的读写功能,能使ARM与DSP读写速率更快,更稳定[13-14];同时,开发人员还可与TI公司共同设计算法,在ARM调用数字信号处理功能的扩展接口,为上层应用提供监控支持。
3.3 数字信号处理模块
数字信号处理芯片选择TI公司的GC5330,数字信号处理模块运行在DSP上,基于DSP的操作系统,使用TI公司提供的代码和算法,实现所需的数字信号处理功能。TI公司为DSP核开发了一个尺寸可裁剪的实时多任务操作系统,主要由多线程实时内核,芯片支持库与实时分析工具构成,可以方便快速地开发DSP核的应用程序,制作数字信号算法,配置芯片外设,实时监测等。因此,开发人员可以把研发力量集中在ARM。ARM在数字信号处理模块的工作是发起数字处理命令,通过通信模块传输给DSP,DSP配合GC5330芯片处理,将结果返回ARM。
平台支撑与双核通信模块都是运行在基于LINUX系统的ARM上,数字信号处理模块运行在DSP上。由于BSP系统运行在ARM上,ARM与DSP没有直接通信通道,通过与DSP共享内存通信的方式,完成ARM与DSP异步双核间通信功能,并提供通信接口扩展功能。下面详细说明双核通信模块的设计与实现。
4.1 ARM与DSP的硬件接口
OMAPL138物理上包含ARM926EJ-S和DSP6748双核心,都能够共享CPU自身所有外设资源,因此内存可作数据交换的通道。CPU与内存通过EMIFA总线连接,访问内存时直接通过总线进行控制,相对以往的联接方式,其读写速率提高了,硬线接口减少了,更为重要的是稳定性更强[15]。根据CPU的特点,ARM与DSP核的共享内存通信,是指在包含多核的嵌入式系统中,需要多次访问存储器数据时,将数据从存储器放入到缓存,并及时更新,便于快速访问。由于ARM与DSP使用不同操作系统平台,不能使用标准系统调用来完成共享内存的操作,因此需要制定一个共享内存机制来实现ARM与DSP平台上的读写控制操作。
4.2 ARM与DSP读写驱动
由于使用TI公司提供的数字信号处理模块代码,只需要完成ARM与DSP通信功能即可,因此与TI公司共同制定出特定共享内存访问机制。此机制是在内存中划出一段独立区域,利用此区域进行数据交互,完成读写操作。另外,共享内存可解决双核同步问题,通过对共享内存变量的读写,来控制两端数据访问的时机。内存地址的名称、位置、用途如表1所示。
表1 双核交互地址表
当ARM将请求写入特定地址,DSP就从表1中的地址名读取命令字大小、类型、数据,根据命令字执行不同的控制字算法,并返回结果给ARM,完成数据交换操作。双核同步机制下,ARM写入控制字前,会读取DPD_REG_CMD_FLAG状态,如果DSP处于工作中或者异常,ARM将不能写入新的命令,否则可写入DDR(Double Data Rate)共享内存,ARM与DSP读写同步操作。ARM与DSP交互代码流程说明如下:
控制字执行函数名
{
读取DPD_REG_CMD_FLAG和DPD_REG_RSP_FLAG状态
任何一个小于0,将返回DSP执行异常;
写命令字的大小到地址DPD_REG_PARAM_WORDS
写命令字的数据到地址DPD_REG_PARAM_BUF
写命令字的校验码到地址DPD_REG_PARAM_CHKSUM
写命令字类型到地址DPD_REG_CMD_FLAG
循环读取DPD_REG_CMD_FLAG 状态
{
==0时,跳出循环执行后续步骤。
不等于0时,返回执行错误
}
循环读取DPD_REG_RSP_FLAG状态
{
小于0时,返回执行错误;
==输入命令字类型,读取DPD_REG_PARAM_BUF数据,将数据返回。(写操作忽略此步)
}
}
详细流程如图3所示。
图3 ARM与DSP驱动交互图
ARM与DSP通信时,通过共享内存发送与接受对方的控制命令,ARM不需要实时获取DSP返回信息,通过在上层编写测试函数,对接口进行测试,保证通信正确性和稳定性即可。运行在DSP核的数字信号模块的算法通过封装,提供给ARM核的应用程序。由ARM发起,DSP与GC5330处理后返回给ARM。
4.3 LINUX底层扩展内存地址
LINUX系统运行在ARM核上,使用后,BSP系统共享内存必定会跟LINUX系统产生冲突,因此需要将DSP使用的内存空间与ARM运行LINUX的内存空间分隔开来。例如,内存大小为128Mbyte,DSP运行时需要使用80Mbyte,剩余48Mbyte分配给LINUX使用。除LINUX系统外,ARM上还运行了引导程序UBOOT(Universal Boot Loader),因此所有程序的地址都要偏移,需要偏移的配置修改如下:
(1)系统引导程序UBOOT区域
内核启动参数地址是指LINUX内核启动参数的读取地址,如文件系统类型、分区大小、使用内存大小等启动参数。
内核启动参数修改前:
电源对任何电路而言,都是不可或缺的。电源的形式各种各样,那么汽车电路中的电源会是什么样的呢?它的电源电路又是如何构成的?在汽车电工电子技术中,很显然,这是一个非常重要的问题,为了解决这一问题,我们设置了如下一项任务,如表1所示(见下页):
include/configs/board-name_evm.h
#define LINUX_BOOT_PARAM_ADDR(PHYS_SDRAM_1 + 0x100)
内核启动参数修改后:
include/configs/board-name_evm.h
#define LINUX_BOOT_PARAM_ADDR(0xC0000000)
TEXT_BASE是设置引导程序UBOOT在内存中的运行地址。
TEXT_BASE地址修改前:
Board/davinic/board-name_evm/config.mk
TEXT_BASE地址修改后:
Board/davinic/board-nam_evm/config.mk
TEXT_BASE=0xC6080000
(2)Linux系统区域
操作系统内核kernel运行机制地址是用来存储LINUX启动后的运行地址。
运行机制地址修改前:
arch/ARM/mach-davinci/include/mach/memory.h:
#define DAVINCI_DDR_BASE 0x80000000
运行机制地址修改后:
arch/ARM/mach-davinci/include/mach/memory.h:
#define DA8XX_DDR_BASE 0xc0000000
操作系统内核kernel导入与执行地址是用来创建kernel image的。
导入与执行地址修改前:
arch/
zreladdr-y:=0xc0008000
params_phys-y:=0xc0000100
initrd_phys-y:=0xc0800000
导入与执行地址修改后:
arch/
zreladdr-y:=0xc5008000
params_phys-y:=0xc5000100
initrd_phys-y:=0xc5800000
对于传统的CPU来说,需要通过相应的通用主机端口与DSP进行通信,不同频率、不同架构的CPU与DSP通信会存在传输速率、兼容性的问题。在本文描述的系统中,采用TI的OMAPL138芯片做CPU,这一问题得到改善。利用该平台的LINUX设备驱动测试功能,在应用层通过管理设备输入输出通道的ioctl函数发起读写操作,可以对系统进行性能测试分析。如对模数转换ADC读写功能、数模转换DAC读写功能、电可擦除只读存储器EEPROM设备读写功能,分别进行测试,由于EEPROM设备有读写次数限制,故不作压力测试,ADC、DAC将做读写压力测试。具体测试条件、步骤及测试结果如表2所示。
表2 平台设备驱动测试结果
在双核通信模块中,利用OMAPL138芯片集成ARM+DSP异步双核并且共享所有外设特性,使用共享内存的方法实现ARM与DSP读写功能。由于使用OMAPL138异步双核的特性,ARM上LINUX与DSP系统同时使用共享内存会出现冲突;通过偏移功能使得ARM上LINUX能够运行在高48Mbyte空间,使得OMAPL138异步双核双系统能够正常使用。该方案为通信部门提供了采用异步双核处理器的数字中频盘的解决方案,为数字中频盘BSP系统设计从VXWORKS系统转型为LINUX系统提供了坚实基础。该系统已经应用于数字中频盘,通过入网测试,性能指标良好。
[1]王辉.软件无线电调制解调器的设计[D].南京:南京理工大学,2010.
[2]刘伟伟.嵌入式系统低功耗技术的研究和应用[D].郑州:郑州大学,2012.
[3]曹颖鹏.基于嵌入式Linux驱动程序的研究与设计[D].西安:西安电子科技大学,2010.
[4]贾小梨.实时操作系统内核研究及中断管理的硬件实现[D].哈尔滨:哈尔滨理工大学,2011.
[5]杨瑞.操作系统实验环境的设计与实现[D].呼和浩特:内蒙古大学,2012.
[6]林淦,刘建群,许东伟,等.OMAPL138的双核通信设计[J].机床与液压,2014(22):147-149.
[7]蒋建春,汪同庆.一种异构多核处理器嵌入式实时操作系统架构设计[J].计算机科学,2011(6):298-303.
[8]侯志伟,安丽霞,包理群,等.片上双核数据并行采集及核间通信研究[J].计算机工程,2015(5):89-94.
[9]付浩,刘建群.基于OMAPL138的嵌入式运动控制器的设计与研究[J].科学技术与工程,2013(1):196-200.
[10]杨建,阳晔,严晓浪,等.片上双核通信机制的设计与应用[J].微电子学,2007(1):28-32.
[11]俞静,袁三男.基于OMAPL138双核通信的测试与实现[J].上海电力学院学报,2016(1):64-68.
[12]郭盟,尹志辉,钱世俊.基于OMAPL138的双核通信研究及应用[J].工业控制计算机,2015(11):56-57.
[13]赵学亮,姚庆明.ARM与DSP双核系统中的通信接口设计[J].计算机工程与设计,2011(5):97-100.
[14]韦建威,孙俊杰.双核通信软件在OMAP5912上的应用研究[J].计算机工程与设计,2010(16):56-58.
[15]潘必超,曹彪.基于双口RAM实现双核通信模块的驱动设计[J].电子器件,2014(1):54-58.
Design and Implementation of a Dual-Core Communication BSP System Based on LINUX
YE Jing1,ZHANG Yue-hua2
(1.School of Electronic Engineering, Wuhan Vocational College of Software and Engineering,Wuhan Hunan 430205,China;2.Siemens Ltd.,China Corporate Technology, Wuhan Hunan 430000,China)
With the development of wireless communication technology, the software and hardware of product costs are increasing. A BSP (Board Support Package) system based on LINUX for Digital Intermediate Frequency board can enrich the base station software resources, and reduce the costs. The system design analyzes the hardware structure, the software modules, describes the platform support module, the dual-core communication module, the digital signal processing module, design and implementation of the dual-core communication module. Data communication module is responsible for a set of access mechanism for inner communication between ARM and DSP on Digital Intermediate Frequency board. Since the CPU chip contains the ARM+DSP asynchronous dual core and shares all CPU resources, the data communication module could use shared memory to implement communication function. ARM and DSP could communicate by shared memory control, the integrality and validity of interact operation is ensured by signal operation. The system has been used in wireless communications, get a good performance.
BSP; embed; LINUX; dual-core communication; ARM; DSP
2017-01-09
湖北省教育厅科学研究计划资助项目“图像载体统计特性约束的信息隐藏模型研究”(Q20161508);武汉软件工程职业学院技术服务项目“嵌入式平台BSP技术开发研究”(2013J005)。
叶 茎(1983- ),女,讲师,硕士,从事电子技术与自动化控制研究。
张跃华(1983- ),男,研究员,硕士,从事智能制造研究。
TN92
A
2095-7602(2017)04-0019-07