基于DPAA网卡设备在VxWorks7.0操作系统中的驱动架构研究与实现

2021-09-22 02:14易荣武
科技研究 2021年22期
关键词:数据包队列网卡

摘要:恩智浦的QorIQ系列在网络通信中采用高性能数据通道加速结构(Data Path Acceleration Architecture简称DPAA),相比传统的网卡,DPAA网卡的结构更为复杂,主要在数据分发、队列拥塞管理和内容加速处理方面减少CPU开销,以提升性能。本文介绍了基于DPAA的网卡在VxWorks7.0操作系统中的驱动架构及开发流程。

关键词:DPAA;驱动;VxWorks7.0

引言:VxWorks是较为常用的嵌入式硬实时操作系统,在航天航空、国防军工、工业控制、轨道交通等领域应用广泛,目前最新的操作系统平台已是VxWorks7.0。传统的网卡驱动主要采用在内核态收发包的模式,然后交给内核协议栈处理,效率低,無法满足高速传输的需求。而 DPAA 提供了一套硬件加速平台,主要包括三个模块:BMan、QMan、FMan。通过这三个模块能很好的决解包括处理器负载平衡、流顺序维护和有效的缓存利用率等问题[1]。

1 DPAA概述

DPAA的主要目的是在片上系统的 IO 部分内提供智能处理,进行路由和管理与流量相关的处理工作,以简化与多核相关的排序和负载平衡问题处理。主要包括三个模块:BMan(Buffer Manager)缓存管理、QMan(Queue Manager)队列管理、FMan(Frame Manager)帧管理。

1.1 BMan缓存管理

BMan缓冲管理模块的主要作用是把处于空闲状态的内存给集中的管理起来,这样来减少空闲缓冲区对软件的开销。处理器核心、FMan、SEC(Security and Encryption Engine)、都可以直接从BMan中获得缓冲区,而不需要额外的软件干预,并且在缓冲区不使用时负责将缓存资源回收到缓冲池中。

1.2 QMan队列管理

QMan队列管理模块为网络接口硬件加速模块,主要功能是提供多处理器内核、网络接口和硬件加速器之间的数据排队机制,如拥塞管理、优先级的排队机制等。QMan操作的实体是帧描述符,帧描述符里保存了数据缓冲的地址,数据缓冲地址指向数据缓冲区的内存地址。QMan管理的对象是数据包的指针而不是数据包本身。QMan会根据内部局域优先级的调度策略自动为软件入口选出合适的帧队列进行出队操作。

1.3 FMan帧管理

FMan帧管理模块负责处理DPAA发送和接收的网络数据包。FMan在物理网卡收发数据时,使用BMan提供的缓冲保存数据,使用QMan的队列机制对带有数据的帧描述符进行组织和管理。FMan在LS1046处理器的CCSR中有一定大小的配置空间,其中包括了缓冲管理模块接口(BMI)寄存器组和帧队列模块接口(QMI)寄存器组,通过这些寄存器可以配置数据包在FMan内部存储空间与外部缓冲之间的传输,以及帧描述符的入队和出队。

2 基于DPAA网卡在VxWorks7.0操作系统中的驱动架构和实现

本文以NXP的LS1046处理器上的DPAA网卡为例,阐述在VxWorks7.0操作系统中是如何实现DPAA网卡驱动的。整个驱动架构可以分为四个部分,设备树文件配置、eEMAC控制器驱动模块、MDIO驱动模块以及PHY驱动模块,其中驱动模块采用VxWorks操作系统提供的VxBus架构,完成驱动编写后包含对应的驱动组件,操作系统会自动调用进行网卡初始化工作。

2.1 VxWorks7.0 VxBus驱动架构概述

VxBus架构是VxWorks操作系统厂商风河公司开发的一套设备驱动程序架构,这种架构包含对BSP的支持。VxBus在总线控制器驱动程序服务的支持下,能在总线上发现设备,并执行一些初始化工作,使驱动与硬件设备之间正常的通讯[2]。

2.2 设备树配置

在VxWorks7.0版本中,风河公司首次引入了设备树。设备树是一种描述硬件信息的数据结构,通过在设备树源文件中描述整个单板硬件信息,这样就不再需要在操作系统中进行大量的冗余编码,简化了板级支持包(BSP)开发流程。所以首先需要在LS1046处理器的BSP中进行设备树配置。有三个层面的配置,分别是BMan配置、Qman配置和FMan配置,其中FMan配置又包括MDIO配置、MAC控制器配置,其中MDIO配置又包括对PHY的配置。

2.3 eEMAC控制器驱动模块

此驱动模块实现与CPU的MAC控制器以及网络协议栈的MUX层对接,同时对BMan和QMan进行初始化。此驱动模块还负责MAC控制器与PHY芯片之间通过MII(Media Independent Interface)总线进行数据收发。

2.4 MDIO驱动模块

此驱动模块实现对mEMAC网络控制器上的MDIO接口进行支持,主要是用于在多个内核之间共享对MDIO端口的访问。在驱动中会对挂载在MAC控制器上的PHY设备进行扫描和配置,并提供对PHY芯片寄存器读写接口。

2.5 PHY驱动模块

此驱动模块的主要功能是对PHY芯片进行配置,并提供初始化物理层、设置媒体模式、检查当前媒体模式和链路状态等方法。

结论:本文主要介绍了DPAA的组成模块及基本功能,对基于DPAA的网卡在VxWorks7.0操作系统上的驱动架构进行了研究,并阐述了驱动开发的方法及步骤。完成驱动设计后,在NXP的LS1046参考板上进行可测试验证,使用网络分析仪连接DPAA网卡,对网口的基本功能、传输速率进行测试。测试结果表明,基于DPAA的网卡性能优于普通的网卡,建议进一步推广使用。

参考文献:

[1]高晓成,吴耀云,王树朋,等.DPAA技术在单脉冲处理中的应用[J].电子信息对抗技术,2019,34(02):23-27.

[2]向昱丞,周加谊.浅谈VxBus的设备驱动开发[J].机电产品开发与创新,2016,29(002):57-58.

作者简介:易荣武;男;1988.3;湖南武冈;汉;硕士研究生;工程师;嵌入式软件开发

猜你喜欢
数据包队列网卡
满足法规要求的车载终端数据包加密方案分析
联网全靠它 认识笔记本的无线网卡
队列队形体育教案
C#串口高效可靠的接收方案设计
缓存淘汰算法研究
青春的头屑
网络数据包的抓取与识别
挑战Killer网卡Realtek网游专用Dragon网卡
USB故障又一原因
如何屏蔽集成声卡显卡和网卡