介绍GMAC的功能和使用方法。
模块介绍
GMAC(Gigabit Media Access Controller)模块是一种用于支持千兆以太网通信的控制器 ,负责数据帧的发送、接收和网络流量管理。
功能介绍
协议栈层:负责实现操作系统内核使用的各种网络协议。
网络设备抽象层:屏蔽驱动实现细节,为上层的TCP/IP协议栈提供统一、标准化的接口。
网络设备驱动层:网络设备驱动层直接操作具体的GMAC硬件,实现数据的实际传输控制和设备管理。
物理层:GMAC、PHY等物理设备。
源码结构介绍
gmac驱动代码在drivers\net\ethernet\spacemit目录下:
drivers\net\ethernet\spacemit
|-- emac-ptp.c #提供PTP协议支持
|-- k1x-emac.c #k1 gmac驱动代码
|-- k1x-emac.h #k1 gmac驱动头文件
关键特性
特性
特性 | 特性说明 |
---|---|
支持10/100/1000M以太网 | 兼容多速率以太网连接 |
支持DMA | 高效数据传输降低CPU负载 |
支持NAPI | 提升中断处理效率减少CPU开销 |
中断合并机制 | 合并中断提升高负载性能 |
支持RGMII/RMII | 适应多应用场景 |
支持PTP | 实现设备间亚微秒级时间同步 |
支持电源管理 | 支持挂起恢复适应低功耗需求 |
性能参数
单网卡单工 | 单网卡双工 | 双网卡单工 | 双网卡双工 | |
---|---|---|---|---|
TX速率 (MB/s) | 942 | 658 | 468 | 298 |
RX速率 (MB/s) | 941 | 661 | 464 | 326 |
单网卡测试
两块k1-deb1板子,记作机器A和机器B,其eth0口用网线直连,并将IP地址设置在同一网段,例如:
#机器A
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
#机器B
ifconfig eth1 192.168.0.2 netmask 255.255.255.0
确保互相能够ping通后方可进行下面的测试
单工/TX
#机器A
iperf3 -s -A 1 -D -B 192.168.0.1
#机器B
iperf3 -c 192.168.0.1 -A 2 -t 30 -B 192.168.0.2