Linux Kernel方式和dpdk方式实现1588协议

1 篇文章 0 订阅
1 篇文章 0 订阅

一、1588协议说明
1、IEEE1588 ( PTP ) 协议简介
IEEE1588 协议,又称 PTP( precise time protocol,精确时间协议),可以达到亚微秒级别时间同步精度,于 2002 年发布 version 1,2008 年发布 version 2
2、IEEE1588 协议的同步原理,所提出的 Delay Request-Response Mechanism(延时响应机制)如 下图所示:
在这里插入图片描述

二、Linux 内核协议栈方式
1、下载1588协议代码
2、x86服务器测试验证
3、arm64板子测试验证
三、应用层协议到Linux内核处理udp发送数据包的过程
1、应用层通过sendto进行发送
2、Linux内核调用udp_sendmsg进行发送。。
3、。。
4、网络设备驱动函数注册
5、通过 ndo_start_xmit 发送数据

这里我在做测试验证的时候 发现无法找到设备文件ptp
于是ls -lh /dev/ptp* 后 果然没有ptp0 或者ptp1 设备文件
4、于是开始查看Linux 内核协议栈驱动程序
nxp 的设备驱动 是通过先创建dprc contianer
dprc container是作为root根节点 也就是链表的头指针
后续手动创建的dprtc 才会被挂到dprc的链表上
创建成功dprc后
驱动程序是先做一个匹配 匹配到dprtc后才是 创建ptp设备文件
然后才是进行probe操作 注册读写函数等

二、DPDK接管网卡 使用DPDK的协议栈实现1588时间同步

1、nxp 板卡配置DPDK环境说明:
修改uboot 环境变量
setenv othbootargs default_hugepagesz=1024m hugepagesz=1024m hugepages=2 pci=pcie_bus_perf isolcpus=1-8 iommu.passthrough=1

cross-compile-dpdk

export RTE_SDK=/home/zhanghh/16.latest-dpdk/dpdk
export export RTE_TARGET=build/

  1. make config T=arm64-dpaa2-linuxapp-gcc
  2. 修改 build/.config 将kernel相关module disable掉 #CONFIG_RTE_KNI_KMOD=y
  3. make -j CROSS=aarch64-linux-gnu- RTE_KERNELDIR=/home/zhanghh/05.nxp-code-with-git/flexbuild_lsdk1906/packages/linux/linux/
  4. build 出来的image在:build/路径下
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

echo-niuben

你的鼓励是我创作的巨大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值