嵌入式数控***双核芯片和外设间中断机制的实现方法
技术领域
本发明涉及嵌入式技术领域,具体的说是一种在双核架构的嵌入式数控***中芯片与外设间中断机制的实现方法。
背景技术
高速、高精、智能化、开放式、网络化成为当代数控***发展的主要趋势。随着电子技术的不断发展,ARM和DSP等各种嵌入式***微处理器由于具有成本低廉、功耗小、结构简单且性能稳定等特点,在嵌入式***开发领域得以广泛应用。采用ARM与DSP异构双核处理器开发嵌入式数控***,具有硬件结构简单、功耗小、高性能低成本等特点,满足中高档数控***产品市场需求,数控***结构如图1所示。
其中,DSP核处理耗费***资源多、计算量大、对实时要求高的运动控制算法,ARM核运动***人机交互,G代码解释器等模块。传统PC平台由于具有操作***和底层驱动程序,软件资源丰富,中断机制封装在操作***级,对上层应用程序透明,例如图3所示的PC平台I/O中断处理。而ARM+DSP是主从核结构,实现中断机制通常做法是由ARM响应来自外设的中断,然后通过双核通信底层机制如消息队列-中断机制或共享内存机制将中断信号送至DSP处理。这种处理方式将中断流程硬性分割在两个核上,增大了响应延迟、效率低下、鲁棒性差,不能保证实时性,且造成ARM核负载过高。其处理方式如图4。
使用的OMAP3530芯片硬件结构如图5,ARM+DSP的功能结构图如图6。其中,DSP集成在IVA图像加速器子***中,ARM芯片集成在MPU主处理器单元中。
发明内容
针对上述异构双核结构芯片与外设间中断机制的实现方法存在响应延迟大,效率低下,ARM核负载过高等问题,本发明提供了一种新的异构双核结构芯片与外设间中断机制的实现方法。本方法不需要专门的电路和协议芯片支持,而且编程模型简单,能有效地降低ARM核负载,提高数控***实时性。
本发明为实现上述目的所采用的技术方案是:嵌入式数控***双核芯片和外设间中断机制的实现方法,包括以下步骤:
连接外设的中断信号源和嵌入式数控***双核芯片的空闲输入引脚;
配置焊板和该空闲输入引脚为复用模式,并作输入使能;
DSP检测中断使能;
消去抖动;
配置中断触发方式;
在DSP实时操作***上实现中断机制;
编写中断服务例程。
所述DSP检测中断使能通过设置DSP响应中断状态的寄存器实现,该寄存器对应所述空闲输入引脚,通过查阅双核芯片数据手册找到。
所述消去抖动通过配置寄存器实现,该寄存器对应所述空闲输入引脚,通过查阅双核芯片数据手册找到。
所述在DSP实时操作***上实现中断机制的方法为:
屏蔽全局中断;
绑定中断事件与中断向量;
绑定中断向量与中断服务例程;
允许外部中断;
开启上述全局中断和中断向量。
所述中断服务例程的函数末尾清除中断状态标志寄存器。
本发明具有以下优点:
1.硬件设计简单。不需要额外的电路或芯片支持,具有规范的接口。
2.程序设计简单。只需要编写DSP端程序,省去了ARM端和ARM与DSP通信的繁杂过程。
3.实时性好。直接由DSP响应中断,进而执行中断服务函数,省去了双核通信和协同工作等细节,减小了响应延迟。能够满足数控***实时性要求。
4.鲁棒性强。来自总线通信板卡的信号是周期性的,而且是稳定健壮的,DSP有稳定的中断处理机制,且中断响应延迟远远小于信号源周期,这样增加了数控***的健壮性。
5.通用性强。上位机(主控板)双核芯片很多引脚都可以做芯片的中断引脚,用户可以根据自己需要定制引脚。且代码不仅支持双核架构芯片,对单核DSP芯片也具有较好的可扩展性。
附图说明
图1为本发明方法应用的数控***结构图;
图2为本发明一个实施例的硬件功能结构图;
图3为PC平台I/O中断处理;
图4为消息队列模式处理中断;
图5为本发明实施例中双核芯片(OMAP3530芯片)硬件结构;
图6为本发明实施例中双核结构芯片ARM+DSP的功能结构图;
图7(a)为本发明实施例的硬件平台功能模块图;
图7(b)为本发明实施例的硬件平台电气连接图;
图8为本发明中断机制实现配置流程。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
硬件上采用具有双核架构芯片的主控板,采用GPMC作为总线通信板卡与上位机(或主控板)通讯的接口,上位机(或主控板)通过GPMC读写总线通信板卡上的存储器件,完成上位机(或主控板)命令的发送以及总线反馈数据的接收;上位机(或主控板)ARM端采用Linux操作***,并针对数控领域做了实时性扩展,出于GPMC配置和控制需求,对Linux内核源码进行修改。上位机(或主控板)DSP端采用BIOS实时操作***。硬件平台平面结构如图7(a),硬件平台立体结构如图7(b)。
由于DSP端执行运动控制算法,算法的插补周期来自底层SSB-III总线控制板卡的周期性中断信号,DSP需要实时对该信号进行响应,执行运动控制算法,因此,可以将底层总线控制板卡的信号直接定位到从处理器DSP核,不再由主处理器ARM核通过消息队列双核通信方式转交给DSP核,这样,可以减轻ARM端任务负载,同时减少了中断信号传递时间,大大减小了响应延迟,增强了***的实时性能。
连接底层SSB-III总线控制板卡FPGA芯片中断输出引脚和上位机(主控板)上的双核架构芯片中断输入引脚之间连接一根导线,将上位机(主控板)芯片中断输入引脚指定为OMAP芯片Camera子模块中I/O范围内的某个引脚。中断信号从SSB-III总线控制板卡FPGA芯片沿导线进入上位机(主控板)双核芯片。中断信号触发源为周期性中断信号,该中断信号由底层SSB-III总线控制板卡提供;通过针对DSP的编程使上位机(主控板)双核芯片的DSP核响应来自SSB-III的总线控制板卡的周期性的中断信号,从而驱动DSP核上的运行运动控制算法,如粗插补计算任务和刀具补偿任务。针对DSP的编程包括对焊版的配置,GPIO引脚的输入输出使能,引脚防抖动处理,中断检测方式,中断服务函数注册,中断服务函数与中断向量绑定,开启并允许外部中断事件,开启全局中断,开启对应中断向量。
如图2所示,为本发明方法所涉及的数控***硬件功能结构图,由OMAP3530主控板和SSB-III总线通信板卡构成。OMAP3530主控板包括以下模块:OMAP3530处理器、以太网接口、USB、GPMC、串口、FLASH、SD卡接口、SDRAM、LCD接口、VGA等;SSB-III总线通信板卡主要由FPGA芯片、GPMC、以太网接口等构成。两板之间通过GPMC接口进行通信。本发明所应用的现场总线为SSB-III(Synchronous Serial Bus-III,第三代同步串行总线)数控总线。
编程模型采用DSP编程模式和使用DSP自带BIOS实时操作***函数接口,包括四部分:GPIO引脚配置,中断触发方式配置,***中断函数接口的使用,中断服务函数编程。涉及焊版的配置,GPIO引脚的输出使能,引脚防抖动处理,中断检测方式,中断服务函数注册,中断服务函数与中断向量绑定,开启允许外部中断事件,开启全局中断,开启对应中断向量等过程。
中断机制实现配置流程如图8。实现中断机制的这四个部分,涉及若干步骤具体实施方法如下:
[1]GPIO引脚配置
(1)焊板,应该在为底层SSB-III总线控制板卡FPGA芯片中断输出引脚和上位机(主控板)上的双核架构芯片指定中断输入引脚之间建立物理连接基础上,将双核架构芯片指定该引脚的CONTROL_PADCONF_CAM_D5配置为模式4,并作输入使能。
(2)引脚输入,根据OMAP3530芯片手册确认选用的芯片引脚可以配置为输入模式,再将GPIO_OE配置为输入模式。
(3)DSP检测中断使能,由ARM响应再通过消息队列方式发送给DSP的方案中断响应延迟时间长,实时性差。因此,直接配置DSP端中断检测使能,设置寄存器GPIO_SETIRQENABLE2,由DSP检测中断信号。
(4)消去抖动,防止因为电平毛刺导致沿检测失效,配置GPIO_DEBOUNCENABLE为使能状态。
寄存器配置方法就是依照0~191号对引脚编号,32个引脚为一组,由一个对应的寄存器管理,分为6组,有六个寄存器管理。对应的寄存器的一位对应这32个引脚中的某一个,例如使用的105号引脚,105=32*3+9,则应设置第4个寄存器的bit9(第十位)。
[2]中断触发方式配置,采用下降沿检测触发中断
(1)沿检测,配置了下降沿GPIO_FALLINGDETECT有效,上升沿GPIO_RISINGDETECT无效;
(2)电平检测,因为我们促发方式是沿检测机制,因此配置高电平检测GPIO_LEVELDETECT1无效,配置低电平检测无效GPIO_LEVELDETECT1无效。
[3]DSP实时操作***函数接口使用
(1)屏蔽全局中断。使用BIOS***接口函数HWI_disable()屏蔽全局中断。
(2)中断事件与中断向量绑定。使用BIOS***的接口函数HWI_eventMap()绑定中断事件与中断向量。
(3)中断向量与中断服务例程绑定,使用BIOS***的接口函数HWI_dispatchPlug()。
(4)激活WUGEN,不屏蔽外部中断,设置WUGEN_MEVTCLR0寄存器。
(5)开启对应的中断向量和全局中断。使用C64_enableIER()。
[4]中断服务函数的编写,将耗费***资源多、计算量大、实时性要求高的运动控制算法放入中断服务函数中,由于中断函数被调用执行周期等于***插补周期,它和底层SSB-III总线控制板卡的周期性的中断信号同步。修改GPIO_IRQSTATUS2寄存器清理GPIO引脚中断标志。中断服务函数的执行时间需要小于总线通信板卡的信号周期。