nvidia xavier nx平台上精确时间协议(PTP)调试记录4

free-jdx 2021-05-25 15:32:16 7384
1. 前言

承接上篇 https://www.ebaina.com/articles/140000012553

2. linuxptp

来自linuxptp维护人员:

/dev/pps0使用的是软件时间戳
这对PTP GM来说是一个相对贫乏的资源。

有些板(但不是你的)有pps在直接时间戳。
一些imx6有这个。
仍然需要修改驱动程序,因为它只处理PPS-out,但是小于25ns精确一次运行

然而我希望启用SPE/ Apply SPE rtos补丁,
这样从gpio到timepulse信号的pin7将有更少的延迟。
我正在查看如下文件
/l4t-rt/rt-aux-cpu-demo/doc

在那里我只能找到AGX Xavier的说明,如何将rt-aux应用于NX!

此外,linuxptp的维护者建议:
你不能期望在GPIO上使用PPS的微秒精度。
独自中断延迟和抖动将导致太多的时间错误。
如果你的MAC上有这些东西,
cat /sys/class/ptp/ptp0/n_external_timestamps
然后安排PPS信号被准确地打上时间戳
就可以使用ts2phc程序MAC的PHC指向GPS的PPS。

在nx,我可以看到输出0

cat /sys/class/ptp/ptp0/n_external_timestamps
0
3.修改dts

这里有一个dts文件,执行以下操作

添加pps-gpio使用AON GPIO CC 7,这是引脚28在40引脚头(以前是I2C0_SCL)
使用AON GPIO DD 0添加nvpps,这是40引脚头上的引脚27(以前是I2C0_SDA)
启用Tegra通用时间戳引擎

使用AON gpio应该提供事件时间戳

注意:
如果想要ACTIVE_LOW而不是ACTIVE_HIGH,
将gpios行中最后一个" 0 "改为" 1 ",
如果不想捕获清除事件,删除" capture-clear "行。

/dts-v1/;
/plugin/;
/ {
 overlay-name = "NX PPS NVPPS";
 compatible = "nvidia,p3449-0000+p3668-0000", "nvidia,p3449-0000+p3668-0001", "nvidia,p3509-0000+p3668-0000", "nvidia,p3509-0000+p3668-0001", "nvidia,tegra194";
 fragment@pps {
  target-path = "/";
  __overlay__ {
   pps: pps_gpio {
    compatible = "pps-gpio";
    gpios = <&tegra_aon_gpio ((2 * 8) + 7) 0>;
    capture-clear;
    status = "okay";
   };
  };
 };
 fragment@nvpps {
  target-path = "/";
  __overlay__ {
   nvpps {
    compatible = "nvidia,tegra194-nvpps";
    gpios = <&tegra_aon_gpio ((3 * 8) + 0) 0>;
    status = "okay";
   };
  };
 };
 fragment@tegra_gte_aon {
  target = < &tegra_gte_aon >;
  __overlay__ {
   status = "okay";
  };
 };
};

使用下面的命令编译并复制到/boot

dtc -I dts -O dtb -@ -o NX_PPS_NVPPS.dtbo NX_PPS_NVPPS.dts
4. ntp

没法正常工作
为我使用的默认版本的ntp提供与tyhe系统

 cat /etc/udev/rules.d/99-gps.rules
KERNEL=="ttyACM0", SYMLINK+="gps0"
KERNEL=="pps0", MODE="0660", SYMLINK+="gpspps0"
ls /dev/gp
gpiochip0     gpiochip1     gpiochip2     gps0          gpspps0       gpu_freq_max  gpu_freq_min
cat /etc/ntp.conf
...
server 127.127.20.0 mode 80 minpoll 3 burst iburst prefer
fudge 127.127.20.0 stratum 1 flag1 1 flag2 0 flag3 1 flag4 0 time1 0.0 time2 0.095 refid GPS0
server 127.127.28.0 minpoll 4
fudge  127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge  127.127.28.1 refid PPS
service ntp start
ntpq -p
...
 ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
 GPS_NMEA(0)     .GPP0.           1 l    -    8    0    0.000    0.000   0.000
 SHM(0)          .NMEA.           0 l    -   16    0    0.000    0.000   0.000
 SHM(1)          .PPS.            0 l    -   16    0    0.000    0.000   0.000
gpspipe -r
{"class":"VERSION","release":"3.17","rev":"3.17","proto_major":3,"proto_minor":12}
{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyACM0","driver":"u-blox","activated":"2020-06-29T19:17:22.004Z","flags":1,"native":1,"bps":115200,"parity":"N","stopbits":1,"cycle":1.00,"mincycle":0.25}]}
{"class":"WATCH","enable":true,"json":false,"nmea":true,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}

这可能是因为gpsd正在运行,正在声明端口

奇怪的是gps uart输出gpspipe -r将永远不会显示任何东西。
添加用户到拨号组。
ttyACM也不会通过gpspipe -r显示。
cat /dev/ttyTHS0 or /dev/ttyTHS1

fudge 127.127.20.0 stratum 1 flag1 1 flag2 0 flag3 1 flag4 0 time1 0.0 time2 0.095 refid GPS0

127.127.20是一个特殊的地址,意味着使用NMEA Refclock。
最后的.0表示查找/dev/gps0和/dev/gpspps0。
flag1 1 =开启PPS处理
flag2 0 =捕获上升边(设置为1以捕获下降边)
flag3 1 =使用内核规则
flag4 0 =关闭内部时间码中的位置
time1 = PPS时间偏移量(离开0)
time2 = PPS到GPRMC(或其他)句尾的偏移量。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 95 5 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区