基于ZYNQ双核处理器的RTOS-GPOS双操作系统机器人控制器的制作方法

文档序号:17287270发布日期:2019-04-03 03:40阅读:805来源:国知局
基于ZYNQ双核处理器的RTOS-GPOS双操作系统机器人控制器的制作方法

本发明属于自动化控制技术领域,具体涉及一种基于zynq双核处理器的rtos-gpos双操作系统机器人控制器。



背景技术:

机器人是一种机电一体化的控制对象,其控制软件既包含人机交互、路径规划等上层非实时任务,又包含运动控制、应急操作等底层实时任务。机器人控制系统的实现,目前多采用上位机+运动控制卡的形式,上位机运行通用操作系统来完成非实时任务,运动控制卡运行实时操作系统或裸板程序来完成实时任务。这种传统的控制结构使得机器人控制器需要至少两块控制板卡,增加了空间,同时上下层通信效率较低,复用性较差。

目前,国内外已经对新型的机器人控制器开展了研究。一些机器人团队提出了模块化的机器人控制器设计方案。例如由北京航空航天大学设计的基于arm+fpga的模块化控制器是其中一种选择。这种设计可以提高硬件平台重用性,缩短开发时间,但缺点在于arm和fpga的没有专门的通信通路,容易影响整体性能提升,fpga的硬件加速特性也无法得以发挥。固高科技的四轴运动控制器采用dsp+fpga实现,但单台价格相对比较昂贵,而且系统设计复杂,设计成本较高。

因此,有必要开发一种低成本,通信效率高,系统易于设计的机器人控制器。



技术实现要素:

针对上述现有技术中存在的问题,本发明的目的在于提供一种可避免出现上述技术缺陷的基于zynq双核处理器的rtos-gpos双操作系统机器人控制器。

为了实现上述发明目的,本发明提供的技术方案如下:

一种基于zynq双核处理器的rtos-gpos双操作系统机器人控制器,包括zynq双核处理器和以zynq双核处理器为控制核心的外围硬件模块。

进一步地,所述外围硬件模块包括电机驱动模块、应急制动模块、电机状态反馈模块、电源模块和人机交互模块;所述电机驱动模块包括差动驱动器电路和光耦电路,用于将处理器输出的脉冲信号、方向信号以及控制信号通过差动放大以及和光耦隔离控制伺服电机驱动器;所述应急制动模块利用伺服电机驱动器输出的电磁刹车控制信号控制继电器通断,控制抱闸电源的接通和断开;所述电机状态反馈模块利用伺服电机驱动器的串列通信功能,通过串口与驱动器进行通信;所述电源模块通过电源转换芯片以及稳压器件为其他各模块所供电;所述人机交互模块包括触摸屏和上位机连接串口,触摸屏用于人机交互软件显示,上位机串口用于与pc相连将通用系统输出信息打印到pc端。

进一步地,所述控制器还包括以zynq双核处理器为硬件基础的rtos-gpos双操作系统,所述rtos-gpos双操作系统包括主系统模块、从系统模块、系统启动控制模块和双核通信模块。

进一步地,所述主系统模块包括通用操作系统linux,用于控制从系统的启动关闭、运行上层非实时软件;所述从系统模块包括实时操作系统freertos,用于运行底层实时任务软件;所述系统启动控制模块运行在主系统模块中,用于控制在从cpu上加载和卸载非对称多处理架构下的从系统模块的过程;所述双核通信模块以驱动程序的形式运行在主系统模块中,以库函数的形式运行于从系统模块中,利用共享内存,在两cpu间建立通信通道,用于主系统和从系统间的通信。

进一步地,所述rtos-gpos双操作系统运行在拥有双arm内核的zynq芯片上,其中有主cpu和从cpu,双操作系统包括运行在主cpu上的主系统通用操作系统linux和运行在从cpu上的从系统实时操作系统freertos,二者在非对称多处理架构下并行运行,由主系统引导从系统的启动和关闭,其中主操作系统运行上层非实时任务,从操作系统运行底层实时任务。

进一步地,所述双核通信模块将外部ddr3内存一部分取消掉cache功能,由软件控制读取,划分为双核共享内存作为通信通道;使用基于中断的通信机制通信,通信过程中发送方通过向icdsgir寄存器写入sgi中断号以及指定目标cpu来产生一个软件中断,接收方收到中断后读取内存,并向icdicpr寄存器相应位置写1清除中断。

进一步地,所述双核启动模块采用由主cpu引导的启动方式,从操作系统以主系统上运行的远程固件的形式由其控制开启和关闭;双核启动模块是linux驱动程序,它控制在从cpu上加载和卸载非对称多处理架构下的从操作系统的过程。

进一步地,所述双核启动模块的启动方法,由主cpu引导,首先双核在对称多处理架构下共同运行主系统linux,当双核启动模块启动后,主cpu调用启动控制模块获取从系统启动镜像并获取资源列表,并将从系统的系统镜像文件和资源列表文件加载到从cpu的内存空间上,加载完毕后再给从cpu发送复位启动信号,使其读取从系统镜像,从操作系统镜像作为一个固件存储在主系统linux的文件系统目录下;启动完成后,双操作系统控制器开始运行,两系统中的程序通过调用通信模块进行通信,当需要从操作系统关闭时,由主系统通过通信模块向从系统发送特定的关闭信息,从系统确认后再次调用双核启动控制模块进行析构,释放从系统使用的资源,使双cpu重新在对称多处理架构下运行linux。

所述机器人控制器的建立方法,包括以下步骤:

第一步,建立基于zynq的硬件平台,包括对zynq处理器的配置和对外围硬件模块的配置;使用vivado开发工具,通过加入gpio、系统复位、内部通信模块,使用axi总线连接;生成位流文件,用于对芯片内部的可编程逻辑pl部分进行配置,通过pl建立起处理系统ps与片内和外围硬件模块之间的连接,构成控制器硬件基础;

第二步,建立双系统并行运行机制并移植到上述平台上,使用petalinux建立主系统linux,按需要裁剪,分别对共享资源、双核通信、双核启动进行配置和搭建,使用sdk建立从系统freertos以及各系统软件程序,最终使用petalinux生成主系统文件,使用sdk生成启动引导文件,通过sd卡拷入烧写启动。

所述控制器的运行方法,包括:通过在主系统linux上运行的人机交互软件获取控制信息,经由linux上的机器人控制程序解析生成发送给下位机的控制序列,通过通信模块发送给从系统freertos,freertos根据输入对机器人执行机构进行实时的控制;双系统运行的可行性通过软件程序得到验证,当双系统启动完成后,由linux端软件通过通信模块向freertos端发送信息,freertos软件再将收到的信息返回,由linux端软件验证原信息是否完整正确。

本发明提供的基于zynq双核处理器的rtos-gpos双操作系统机器人控制器,通过在双核芯片zynq上建立基于非对称多处理架构的双操作系统并行运行机制,构建出一种双系统机器人控制器,可同时运行通用操作系统linux和实时操作系统freertos,从而既能完成人机交互、路径规划等上层任务,又能执行运动控制、应急操作等实时任务,从而为机器人开发提供了一种轻便、通信效率高、复用性好的控制器,可以很好地满足实际应用的需要。

附图说明

图1是本发明中控制器的结构框架图;

图2是本发明中双核通信模块的结构图;

图3是本发明中启动控制模块流程图;

图4是本发明中主操作系统中软件运行流程图;

图5是本发明中从操作系统中软件运行流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本发明做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,一种基于zynq双核处理器的rtos-gpos双操作系统机器人控制器,包括zynq双核处理器以及以zynq双核处理器为硬件基础的rtos-gpos双操作系统,所述双操作系统包括作为主系统的通用操作系统(gpos)linux、作为从系统的实时操作系统(rtos)freertos、双核共享资源、双核启动模块和双核通信模块。

实施过程中,所述zynq处理器选用高性价比的zynq-7000apsoc芯片,zynq-7000系列全可编程芯片是xilinx公司2010年发布的可扩展处理器芯片。该系列芯片采用了28nm工艺流程,将双核cortex-a9arm内核和fpga集成在一块芯片内,构成全可编程芯片。zynq内部分为以apu为主要部分的处理系统ps(processingsystem)和以fpga为主体的可编程逻辑pl(programmablelogic)。本设计要在双核处理器上进行系统移植,因此以ps部分为主。ps部分主要包含以下功能模块:应用处理单元apu、存储器接口、外设i/o、内部总线。apu是ps部分中的运算单元,主要部分是两个cortex-a9arm处理器。每个cpu的私有设备主要包括:32kb的l1级缓存、内存管理单元mmu(memorymanagementunit)、neon协处理器等。其中mmu负责存储器保护和地址转换,它控制着对外部存储器的读写。由于zynq中每个cpu各拥有一个mmu,使两个cpu可以并行对各自的存储区域进行读写,这为双核异构提供了硬件基础。

实施过程中,使用开发工具通过可编程逻辑pl建立起处理系统ps与片内和板卡资源之间的连接,包括加入gpio、系统复位、内部通信模块,使用axi总线连接,构成处理器硬件基础。

所述的基于zynq双核处理器的rtos-gpos双操作系统的机器人控制器,如图1所示。硬件部分包括zynq双核处理器1和以其为控制核心的外围硬件模块,所述外围硬件模块包括电机驱动模块2、应急制动模块3、电机状态反馈模块4、电源模块5和人机交互模块6。所述的电机驱动模块2包括差动驱动器电路和光耦电路,用于将处理器输出的脉冲信号、方向信号以及控制信号通过差动放大以及和光耦隔离控制伺服电机驱动器。所述的应急制动模块3利用伺服电机驱动器输出的电磁刹车控制信号控制继电器通断,控制抱闸电源的接通和断开。所述的电机状态反馈模块4利用伺服电机驱动器的串列通信功能,通过串口与驱动器进行通信。所述的电源模块5通过电源转换芯片以及稳压器件为其他各模块所供电。所述的人机交互模块6包括触摸屏和上位机连接串口,触摸屏用于人机交互软件显示,上位机串口用于与pc相连将通用系统输出信息打印到pc端。所述的zynq开发平台建立在zedboard上,使用开发工具通过可编程逻辑pl建立起处理系统ps与片内和板卡资源之间的连接,包括加入gpio、系统复位、内部通信模块,使用axi总线连接,构成控制器硬件基础。

软件部分包括rtos-gpos双操作系统架构。所述的双操作系统架构包括主系统模块8、从系统模块9、系统启动控制模块10和双核通信模块11。所述的主系统模块8,包括通用操作系统linux,用于控制从系统的启动关闭,运行人机交互、路径规划等上层非实时软件。所述从系统模块9,包括实时操作系统freertos,用于运行实施运动控制、应急制动等底层实时任务软件。所述的系统启动控制模块10,以驱动程序的形式运行在主系统模块中,用于控制在从cpu上加载和卸载非对称多处理架构下的从系统模块的过程。所述的双核通信模块11,以驱动程序的形式运行在主系统模块中,以库函数的形式运行于从系统模块中,利用共享内存,在两cpu间建立通信通道,可由两系统中的软件调用,用于两系统间的通信。

所述的rtos-gpos双操作系统,运行在拥有双arm内核的zynq芯片上,其中有主核cpu0(简称主cpu)和从核cpu1(简称从cpu),双操作系统包括运行在cpu0上的主系统通用操作系统linux和运行在cpu1上的从系统实时操作系统freertos,二者在非对称多处理架构下并行运行,由主系统引导从系统的启动和关闭,其中主操作系统可以运行人机交互、路径规划等上层非实时任务软件,从操作系统可以运行实时运动控制、应急制动等底层实时任务软件。

实施过程中,需要对双核共享资源进行划分,包括zynq芯片上的512kb的l2缓存、256kb的片上内存ocm、外部的ddr存储器等,需要对它们进行分配以使两个cpu能够在各自拥有的资源下独立运行。共享资源根据各操作系统的需求进行分配,在linux系统编译之前进行配置。ddr内存有1gb存储空间,根据内核大小,将ddr的前256mb分配给freertos,之后的768mb分配给linux。实时操作系统的一部分内存地址将作为共享内存用于双系统间的通信,如图2所示。其他主要共享资源划分为:l2缓存交给主cpu使用,片上内存ocm在对称多处理状态又双核共同使用,在非对称多处理状态由主cpu使用。

所述的双核通信模块,如图2所示,将外部ddr3内存一部分取消掉cache功能,由软件控制读取,划分为双核共享内存作为通信通道。为了避免双核对共享内存的读取冲突,通信模块使用基于中断的通信机制通信,通信过程中发送方通过向icdsgir寄存器写入sgi中断号,以及指定目标cpu,来产生一个软件中断,接收方收到中断后读取内存,并向icdicpr寄存器相应位置写1清除中断。

所述的双核启动模块,采用了由主cpu引导的启动方式,从操作系统以主系统上运行的远程固件的形式由其控制开启和关闭。双核启动模块是linux驱动程序,它控制在从cpu上加载和卸载非对称多处理架构下的从操作系统的过程。启动流程如图3所示,首先双核在对称多处理架构下共同运行主系统linux,当双核启动模块启动后,主cpu会调用启动控制模块获取从系统启动镜像并获取资源列表,并将从系统的系统镜像文件和资源列表文件加载到从cpu的内存空间上,具体是由模块中的remoteproc_init()和remoteproc_resource_init()函数实现。加载完毕后再给从cpu发送复位启动信号,使其读取从系统镜像,由remoteproc_boot()实现。在这个过程中,从操作系统镜像会作为一个固件存储在主系统linux的文件系统目录下。启动完成后,双操作系统控制器便开始运行,两系统中的程序可以通过调用通信模块进行通信,具体使用模块中的rpmsg_send()函数。当需要从操作系统关闭时,由主系统通过通信模块向从系统发送特定的关闭信息,从系统确认后再次调用双核启动控制模块进行析构,释放从系统使用的资源,使双cpu重新在对称多处理架构下运行linux,具体是由模块中的remoteproc_deinit()、remoteproc_resource_deinit()和remoteproc_shutdown()函数实现。

控制器具体建立步骤如下:

第一步,建立基于zynq的硬件平台,包括对zynq处理器的配置和对外围硬件模块的配置。使用vivado开发工具,通过加入gpio、系统复位、内部通信模块,使用axi总线连接。生成位流文件,用于对芯片内部的可编程逻辑pl部分进行配置,通过pl建立起处理系统ps与片内和外围硬件模块之间的连接,构成控制器硬件基础;

第二步,建立双系统并行运行机制并移植到上述平台上,使用petalinux建立主系统linux,按需要裁剪,分别对共享资源、双核通信、双核启动进行配置和搭建,使用sdk建立从系统freertos以及各系统软件程序,最终使用petalinux生成主系统文件,使用sdk生成启动引导文件,通过sd卡拷入烧写启动。

该双操作系统控制器在具体实施过程中运行流程如下:通过在主系统linux上运行的人机交互软件获取控制信息,经由linux上的机器人控制程序解析生成发送给下位机的控制序列,通过通信模块发送给从系统freertos,freertos根据输入对机器人执行机构进行实时的控制。双系统运行的可行性通过软件程序得到了验证,当双系统启动完成后,由linux端软件通过通信模块向freertos端发送信息,freertos软件再将收到的信息返回,由linux端软件验证原信息是否完整正确,linux端软件运行流程如图4所示,freertos端软件运行流程如图5所示。

本发明的控制器使用具有双arm内核的zynq芯片实现充分利用zynq芯片的资源,实现双操作系统在双核芯片上以非对称多处理架构并行运行,使其能够同时运行人机交互、路径规划等上位机软件和运动控制、应急制动等下位机软件,提高了机器人控制器通信效率和复用性,降低了控制器开发设计成本,使机器人控制器能集成到一块芯片上。本发明充分利用zynq芯片内部的双核处理器及其资源,通过设计外部硬件、双操作系统的运行机制、共享资源、启动方式、通信方式,实现在双核芯片上双操作系统以非对称多处理架构并行运行,使得扩展了芯片的使用范围,实现了一种低成本小体型高复用性的机器人控制器。

以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1