文献标识码:A
DOI:10.16157/j.issn.0258-7998.2015.09.008
中文引用格式:杨剑波,赵东标,刘念. 基于OMAP3530数控系统的双核通信设计[J].电子技术应用,2015,41(9):33-35,38.
英文引用格式:Yang Jianbo,Zhao Dongbiao,Liu Nian. Design of dual core communication based on OMAP3530 CNC system[J].Application of Electronic Technique,2015,41(9):33-35,38.
0 引言
OMAP3530是TI公司推出的一款高性能移动应用处理器[1]。OMAP3530在单一芯片上无缝集成一个600 MHz ARM Cortex-A8内核和一个具有卓越运算能力和超低功耗的430 MHz TMS320C64x+ DSP内核,单个ARM在人机交互、网络通信、多任务处理上有着很大的优势,但是其计算能力有所不足;DSP有着强大的计算和数据处理能力,但是在任务分配上难度较大。因此,充分利用两个处理器各自的优势,把ARM和DSP结合起来使用能够大大提升数控系统的性能。本数控系统使用ARM+FPGA上下位机控制[2],上位机由ARM Cortex-A8控制核心和DSP运算核心组成,完成译码、粗插补、加减速控制、图形界面显示等任务;下位机由FPGA电机控制子系统和CPLD辅助控制子系统组成,完成精插补、系统I/O输入输出、位置控制等任务。为了能够使ARM核和DSP核更好地协调配合,共同完成实时多任务的数控系统软件体系,本文使用DSPLINK进行双核之间的通信,设计了一种地址指针传递的双核通信方式,大大提升数控系统的性能。
1 数控系统硬件平台设计
1.1 上位机系统设计
上位机由集成了控制核心ARM和运算核心DSP的OMAP3530处理器组成,如图1所示,ARM、 DSP、存储器以及各种通信接口均连接在片内L3总线上,其中ARM用于数控系统的控制和资源管理,完成NC代码译码、MST控制、数控图形界面管理以及人机交互等任务;DSP用于数控系统的高密度的计算,完成数控系统粗插补、刀具补偿以及加减速控制等需要大量运算的任务,为数控系统的实时性提供有力的保障。上位机提供丰富的外设资源,外接的256 MB LPDDR为数控系统软件提供大量的内存空间,256 MB NAND Flash用于存储数控系统文件和一些运行相关的参数文件;外接的LCD显示器用于数控系统图形界面的显示;MMC/SD以及USB接口用于数控系统加工程序代码的输入以及数控系统的升级等;标准RS232接口用于与PC进行远程通信;此外片上还集成以太网的接口,用于远程通信、诊断和操作功能的实现。上位机通过GPMC(系统外部总线)与下位机进行通信;向下位机发送粗插补和速度控制的信息,为下位机进行精插补做准备,并接收下位机传输的数控系统按键信息、I/O输入和位置控制信息并及时作出响应。
1.2 下位机系统设计
下位机由大规模可编程逻辑控制器FPGA和CPLD构成,电机控制子系统FPGA采用Altera公司ACEX系列的EP1K100QC208,片上有丰富的逻辑资源和I/O端口资源,可以为数控系统提供大量的脉冲发生、脉冲计数和I/O控制能力。采用FPGA作为电机控制子系统大大简化了硬件电路,具有高速、并行处理、稳定性高、抗干扰性强等特点。辅助控制子系统CPLD选用Altera公司EPM1270芯片,完成FPGA的配置、矩阵键盘的控制以及外扩系统I/O端口的控制功能。本文使用一种改进的串行配置策略对FPGA进行配置[3],如图2所示,CPU把存放在NAND Flash中的配置数据通过外部系统总线发送到CPLD,然后CPLD产生配置时序和串行化数据并将配置数据传输给FPGA。采用这种改进的串行配置方式,可以大大降低硬件电路的配置成本。另外,CPLD芯片具有编程加密位,使CPLD内部的电路逻辑无法被读出,所以同时提高了数控系统的保密性。
2 双核握手机制的设计
数控系统多任务是由两个处理器(ARM和DSP)共同完成的,双核之间的任务分配和通信在共同完成数控系统任务要求时尤为重要。本文使用DSPLINK对双核的通信进行设计和开发[4]。其原理框图如图3所示,它把ARM与DSP之间的物理电路连接特性抽象化为通用的API,这样开发者无需从电路底层做起,而可以更专注于应用程序的设计。
DSPLINK集成了很多供双核通信使用的组件,常用的有PROC、POOL、MSGQ、MPCS等,本文对双核通信的设计是基于MSGQ组件开发的。通过DSPLINK进行双核通信的机理是双核通过对共享内存区域的数据分别进行读写,达到双核数据信息共享的目的。本文将集成在片内的64 KB片内RAM作为共享内存区域,使用片内的RAM进行数据的传输可以增加数据传输的效率并且简化数据传输的软件结构。MSGQ[5](message queue)主要负责ARM端和DSP端可变长度短消息的交互,更为重要的是其支持高频率的处理器之间信息的交互,这在实时多任务的数控系统中十分重要,为数控系统的实时性提供有力的保障,该组件会把要发送的数据包装成一个message,双核之间以message的形式进行通信。本设计的基于MSGQ的双核通信框图如图4所示,ARM和DSP可以通过指令MSGQ_put()和MSGQ_get()向消息队列中写入和读取数据,通过ARM和DSP高频率地对共享内存区域的读写,达到双核通信的目的。
在数控程序运行过程中,ARM和DSP通过共享内存区域传递互相所需要的数据,但是数控程序一般较为复杂,message存放在片内64 KB RAM中,故一次性传递的数据大小受到很大限制,而且传递数据所花费的时间也会大大增加,这样对实时性要求很高的数控系统来说是十分不利的。本文对message消息的内容进行了优化,将传递数控相关数据改为传递相关指针变量,这样不仅节省了message消息队列的空间大小,很好地利用了片内RAM的有效空间,并且很大程度上提升了双核通信的效率,从大量繁琐的数控程序的传递到数控程序和数据所在地址的传递,传递的内容得到了优化并且软件框架也得到了大大的减化[6]。
本文将一个包含许多指针变量的struct变量包装成一个message,ARM和DSP通过对struct变量中相关成员参数进行修改,达到双核协调合作共同完成数控系统软件工作的要求。设计的struct变量如下:
struct message
{
(Uint32) MGSQ_ID;//消息队列的ID号,
用来标识制定的message进行通信
(Uint32) arm_enable;//ARM使能标志位,
允许ARM使用芯片内部总线
(Uint32) dsp_enable;//DSP使能标志位,与ARM使能
标志位相反,使同一时刻只有一个处理器
使用内部总线,避免冲突
(Uint32) *arm_start_read;//ARM待读取数据起始地址的
指针变量
(Uint32) *arm_start_write;//ARM待写入数据的起始地址的
指针变量
(Uint32) *arm_end_read;//ARM读取数据截止地址的
指针变量
(Uint32) *arm_end_write;//ARM写入数据截止地址的
指针变量
(Uint32) *dsp_start_read;//DSP待读取数据起始地址的
指针变量
(Uint32) *dsp_start_write;//DSP待写入数据的起始地址的
指针变量
(Uint32) *dsp_end_read;//DSP读取数据截止地址的指针变量
(Uint32) *dsp_end_write;//DSP写入数据截止地址的指针变量
(Uint32) armcacheover;//ARM 256 KB一级缓存区满标志位,
用于刷新LCD显示数据
}message1;
数控程序运行时通过引用特定的消息队列号来进行双核通信,通过设置ARM和DSP使能标志位使得在同一时间只有一个处理器使用内部总线,避免了数据传输冲突;数控软件运行时会有许多子任务,产生很多中断,每当产生中断时就相应修改对应的指针变量,ARM和DSP通过指针变量传递相应的地址信息达到双核通信的目的,这相比通过message进行数控数据的传输简化了很多的工作量,使程序更精简,运行效率更高。
3 双核通信整体框架设计
数控系统是典型的多任务实时控制系统[7],针对多任务特性选用中断服务程序进行多任务之间的切换;针对实时特性选用时间片轮转法设定相应时间片大小,限定各个子任务的运行时间,从而在宏观上达到各个子任务的并行运行。此外,下位机接收矩阵键盘、系统I/O输入、手轮和编码器的反馈后向上位机通过系统外部总线发出中断,上位机响应中断后对插补程序作相应的调整,后再把数据传递给下位机使其完成精插补。数控系统整体软件框架图如图5和图6所示,具体的工作步骤如下:
(1)ARM端首先启动,在运行Linux系统后向DSP加载DSP启动所需要的执行程序,等待启动DSP。
(2)在多任务运行时,ARM和DSP需要分时共用内部总线,因此通过设置arm_enable和dsp_enable来确定内总线的使用权。
(3)ARM端需要执行译码、MST控制和人机界面的显示任务,选用时间片轮转法进行控制,设定每个时间片为1 ms,循环执行这3个子程序,其中人机界面的显示任务实时性要求不高,每次执行的数据暂时存放在256 KB一级缓存区中,等待armcacheover置位后再刷新LCD显示屏;在一个加工程序段中最多只能有一个M、S、T功能,通过设置相应标志位,在程序段未结束时取消MST控制的时间片。
(4)DSP以1 ms粗插补周期为中断周期接收ARM译码后的数据,进行粗插补、刀具补偿和加减速控制的任务。
(5)FPGA同样以1 ms的周期产生中断信号,接收DSP传送的精插补所需的数据,进行精插补的工作。
(6)为了数控程序能够顺序执行,在每个数控程序子任务执行完后必须相应地更改struct成员的信息。
(7)数控程序执行完毕后,首先会关闭message通信通道,ARM与DSP断开连接。
4 结束语
本设计采用ARM+DSP双核完成上位机任务,CPLD+FPGA完成下位机任务的模式,在提升了数控系统的加工质量和效率的同时,也提升了数控系统的实时性和保密性;设计了一种新的双核通信方式,大大提高了双核通信的效率,为数控系统双核任务分配提供软件基础;通过合理进行数控任务的分配,可以做到译码与粗插补和精插补的并行运行,使得连续小线段的译码速度大于加工速度,实现精插补脉冲序列无间断输出,大大改善零件表面光洁度和加工精度,为高精度、高性能数控系统的发展提供一定参考。
参考文献
[1] Instruments T.OMAP35x applications processor:Technical reference manual(Literature No. SPRUF98O)[Z].Dallas,Texas,2010.
[2] WANG L,SU B,DONG S,et al.Double CPU open CNC system based on programmable multi-axis controller[J].Computer Integrated Manufacturing Systems Beijing,2002,8(1):69-72.
[3] 张金霞,赵东标.数控系统中精插补芯片FPGA的配置[J].机械与电子,2007(3):30-32.
[4] Instruments T.DSP/BIOS LINK user guide-version 1.65.00.02[Z].Reference:LNK,58,2010.
[5] LUAN X F.Debugging method based on OMAPL138 dual- core system[J].Microcontrollers & Embedded Systems,2012,12(1):9.
[6] 林淦,刘建群,许东伟,等.OMAPL138的双核通信设计[J].机床与液压,2014(22);056.
[7] 陈蔚芳,王宏涛,薛建彬,等.机床数控技术及应用[M].北京:科学出版社,2006.