法律状态公告日
法律状态信息
法律状态
2018-08-14
授权
授权
2016-07-06
实质审查的生效 IPC(主分类):G05B19/418 申请日:20141113
实质审查的生效
2016-06-08
公开
公开
技术领域
本发明涉及数控技术领域,具体地说是一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法。
背景技术
实时工业以太网因其传输速度快,数据包容量大,传输距离远,实时性高和开放互联的特点,被越来越多的应用到了数控领域。德国Beckhoff公司提出的EtherCAT(EthernetforControlAutomationTechnology)便是其中的一种,它具有高性能、低成本、应用简单、拓扑灵活的特点,并且支持100Mbps全双工,有效数据率可达90%以上,可以极大的提高数控系统的性能。
与此同时,ARM嵌入式微处理器正朝着高性能、智能化的方向发展,其主频越来越高,接口功能越来越丰富,而价格则越来越低,相较于工业PC机更灵活,功耗更小,成本更低。因此数控系统也越来越多的朝着嵌入式的方向发展,如何设计相应的嵌入式EtherCAT主站已经成为将EtherCAT技术应用在数控系统中的难题。
发明内容
针对现有技术的不足,本发明提供一种基于AM335X系列处理器构建嵌入式实时EtherCAT主站的方法
本发明为实现上述目的所采用的技术方案是:一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法,先构建嵌入式实时Linux系统,再构建嵌入式实时EtherCAT主站。
所述构建嵌入式实时Linux系统包括以下步骤:
步骤1:执行AM335X处理器的内核默认配置;
步骤2:给配置好的内核打上RTPatch补丁,并进一步配置与实时性相关的内核选项;
步骤3:安装Linux内核及文件系统,构建成嵌入式实时Linux系统。
所述构建嵌入式实时EtherCAT主站包括以下步骤:
步骤1:根据IgHEtherCATMaster主站的本地EtherCAT设备驱动的实现原理,修改AM335X处理器的网络设备驱动程序;
步骤2:根据修改的网络设备驱动程序,在AM335X处理器上配置、编译、安装IgHEtherCATMaster主站模块。
所述修改AM335X处理器的网络设备驱动程序包括以下过程:
步骤1:在代表网络设备的结构体中添加ec_device_t结构体类型的指针对象ecdev来表示本驱动为EtherCAT网络设备驱动,并添加一个长整形的变量ec_watchdog_jiffies用于记录轮询的时间;
步骤2:在网络设备驱动程序驱动的probe探测函数中,使用EtherCATMaster提供的ecdev_offer()专用的EtherCAT设备注册函数替换默认的register_netdev()网络设备注册函数,同时将返回值赋给ecdev指针变量;
步骤3:在probe探测函数的最后,通过EtherCATMaster提供的ecdev_open()函数将EtherCAT网络设备打开;
步骤4:在模块撤销的函数中,使用EtherCATMaster提供的ecdev_close()函数关闭EtherCAT网络设备,并使用ecdev_withdraw()注销函数替换默认的网络设备注销函数unregister_netdev();
步骤5:使用EtherCATMaster提供的ec_poll()轮询函数替换默认网络设备驱动中的Poll()函数,在ec_poll()中使用看门狗周期性的轮询网络设备;
步骤6:使用EtherCATMaster提供的ecdev_receive()数据接收函数,替换默认的内核协议栈函数netif_receive_skb(),并重启看门狗。
给内核打RTPatch补丁的过程中按照提示对RTPatch补丁进行修改。
所述与实时性相关的内核选项包括对实时性产生不良影响的选项和需要开启的实时性扩展选项。
本发明具有以下有益效果及优点:
1.本发明使用开源的Linux系统作为EtherCAT主站的基础,并使用开源实时补丁RTPatch实现Linux的实时化,最后使用开源软件IgHEtherCATMaster构建EtherCAT主站系统,全部基于开源组件构建,加快了开发周期。
2.本发明使用高性能低功耗的嵌入式处理器,节约了开发成本。本发明使用AM335X系列高性能嵌入式处理器,相比于传统基于工业PC机实现EtherCAT主站更具有成本优势。
3.本发明实现的嵌入式EtherCAT主站既可以集成在嵌入式系统中使用,又可以单独作为一个协议模块来使用,具有很好的灵活性。
附图说明
图1是本发明的方法流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
如图1所示,本发明方法包括以下步骤:
本发明为一种构建嵌入式实时EtherCAT主站的方法,包括以下步骤:
以AM3358处理器为例:
构建嵌入式实时Linux系统,针对TI官网为AM3358处理器提供的Linux内核源码linux-3.2.0-psp04.06.00.11,使用版本与之对应的RTPatch源码patch-3.2-rt10.patch.bz2为之打补丁。
RTPatch补丁是针对标准的Linux内核源码设计的,对于TI提供的Linux内核并不完全适用,因此在打过补丁后根据错误提醒手动修改内核代码。接着执行配置内核命令。
其中需要配置一下两个方面的内容:
一些配置选项会对系统实时性能产生不良的影响,必须在配置的时候将其关闭,这些选项包括:Moduleversioningsupport、PowerManagementsupport(Powermanagementoptions的所有子项)、CPUFrequencyscaling。
打完RTPatch实时补丁之后,会多出一些扩展Linux内核实时性的配置选项,需要开启,包括开启实时补丁的抢占模式,开启对高精度定时器的支持,这些选项在内核配置的Processortypeandfeture中,包括:PreemptionMode(CompletePreemption(Real-Time))、HighResolutionTimerSupport。
最后编译并安装RTPatch嵌入式实时内核到AM3358处理器平台上。
构建嵌入式实时EtherCAT主站
从EtherLab官网下载最新的EtherCAT主站源码IgHEtherCATMasterV1.5.2,并解压到当前的工作目录。
根据本地EtherCAT设备驱动的实现原理,修改AM3358处理器的网络设备驱动程序CPSW(CommonPlatformEthernetSwitch)以兼容EtherCAT,具体修改方法的步骤如下:
在代表网络设备的结构体中添加ec_device_t结构体类型的指针对象ecdev来表示本驱动为EtherCAT网络设备驱动,并添加一个长整形的变量ec_watchdog_jiffies用于记录轮询的时间。
接着在CPSW驱动的probe探测函数中,使用EtherCATMaster提供的ecdev_offer()专用的EtherCAT设备注册函数替换默认的register_netdev()网络设备注册函数,同时将返回值赋给ecdev指针变量。
接着在probe探测函数的最后,通过EtherCATMaster提供的ecdev_open()函数将EtherCAT网络设备打开。
接着在模块撤销的函数中,使用EtherCATMaster提供的ecdev_close()函数关闭EtherCAT网络设备,并使用ecdev_withdraw()注销函数替换默认的网络设备注销函数unregister_netdev();
参照CPSW驱动中的poll()函数实现EtherCAT驱动的ec_poll()函数,ec_poll()的主要工作是处理接收和发送的数据帧,根据看门狗是否到期选择重启看门狗。
使用EtherCATMaster提供的ecdev_receive()数据接收函数,替换默认的内核协议栈函数netif_receive_skb(),并重启看门狗。
屏蔽其他所有的网络协议栈接口函数,包括netif_stop_queue()、dev_kfree_skb_any()、netif_wake_queue()、dev_kfree_skb()。
接着移植EtherCAT主站模块,进入EtherCATMaster目录进行配置、编译和安装。在配置中,通过prefix指定安装的路径,disable-8139too表示禁用掉默认的8139网卡驱动;enable-cpsw表示使能AM3358处理器的本地EtherCAT网络设备驱动,该驱动是针对AM3358处理器的CPSW驱动程序修改而来本地EtherCAT设备驱动;最后通过with-linux-dir指定使用的Linux内核的路径。
机译: 用于基于选择的准则来构建联系人记录的关系的实时计算机交互方法以及用于构建交互式hasPo的计算机系统是基于所选择的准则的联系人的真实关系。
机译: 基于嵌入式处理器的三维声像实时信号处理装置
机译: 基于嵌入式处理器的三维声像实时信号处理装置