Powerlink总线协议在QNX系统上的移植

您所在的位置:网站首页 powerlink总线协议 Powerlink总线协议在QNX系统上的移植

Powerlink总线协议在QNX系统上的移植

2024-02-02 04:16| 来源: 网络整理| 查看: 265

一、硬件平台 通讯主站选用安装QNX系统的工控机,交叉编译工具选用QNX Momentics IDE,QNX Momentics IDE软件是基于WINDOWS系统下的QNX交叉开发环境,使用户可以使用熟悉的windows系统进行软件的开发工作。通讯从站选用以FPGA为核心的Powerlink控制板卡,由于FPGA的高通讯速率,使得Powerlink从站的反应时间大大缩减。 在此次实验中,主要的工作为将powerlink协议移植到QNX实时通信系统上,以及从站与主站的联合通信调试,以测试移植的实时性以及正确性。 二、Powerlink在QNX下实现的整体设计思路 Powerlink协议找在QNX系统上的移植可以分为内核空间的移植和用户空间的移植。所谓内核移植就是将Powerlink作为一个内核模块被执行,Powerlink协议运行在内核态,而用户空间的移植就是将协议找运行在用户空间,可直接与QNX应用进行绑定。两种移植方式的特点: Powerlink协议找在用户空间实现的特点: (1)实时性能可以满足一般的工业控制要求。 (2)借助开源网络libpacp库对以太网底层驱动进行管理,用户无需管理内核底层代码。 (3)系统维护较容易,调试简单。 (4)移植工作相对来说比较容易。 Powerlink协议找在内核空间实现的特点: (1)可以提供高性能、高精度。 (2)需要对太网底层驱动进行重新编写,使底层驱动程序成为Powerlink协议的一部分。 (3)具有一定的开发难度,不容易调试。 本文采用用户空间的方式,开发难度小,周期短,采用此种方式,则要将powerlink协议栈移植到qnx系统上,需要调用libpcap库中提供的api函数来调用网卡驱动函数来进行数据包的收发。Libpcap是数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。libpcap主要由两部份组成:网络分接头(Network Tap)和数据过滤器(Packet Filter)。网络分接头从网络设备驱动程序中收集数据拷贝,过滤器决定是否接收该数据包。Libpcap利用BSD Packet Filter(BPF)算法对网卡接收到的链路层数据包进行过滤。BPF算法的基本思想是在有BPF监听的网络中,网卡驱动将接收到的数据包复制一份交给BPF过滤器,过滤器根据用户定义的规则决定是否接收此数据包以及需要拷贝该数据包的那些内容,然后将过滤后的数据给与过滤器相关联的上层应用程序。libpcap的包捕获机制就是在数据链路层加一个旁路处理。当一个数据包到达网络接口时,libpcap首先利用已经创建的Socket从链路层驱动程序中获得该数据包的拷贝,再通过Tap函数将数据包发给BPF过滤器。BPF过滤器根据用户已经定义好的过滤规则对数据包进行逐一匹配,匹配成功则放入内核缓冲区,并传递给用户缓冲区,匹配失败则直接丢弃。如果没有设置过滤规则,所有数据包都将放入内核缓冲区,并传递给用户层缓冲区。 我们通过改写Powerlin协议栈里数据包发送和接收函数来将Powerlink协议栈融入到QNX系统里,主要用到的API为: 1. pcap_sendpacket()函数,此函数通过调用libpacp库来实现网络数据包的发送。 2. pcap_recvpacket()函数, 此函数通过调用libpacp库来实现网络数据包的接收。 3. pcap_open_live()函数,获取网卡操作对象。 通过改写Powerlink的网络传输层函数,来实现对数据发送的调度。 部分代码实现:

///协议栈初始化函数,通过调用pcap_open_live 函数来与QNX系统的网卡相连


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3