征程 6 VIO Frame 时间戳介绍

1. 时间类型
征程 6 内部的时间类型如下

Linux 系统时间是基于 arm system counter 抽象的,Linux 的基于 arm system counter 抽象了很多种时间,图中画了两种。CLOCK_MONOTONIC_RAW 是不会被时间同步调整的。

2. Frame 时间戳
从 VIO 侧获取的图像数据,带有时间戳信息,相关信息如下:
time_stamp:代表收到第一行到达时刻,获取的是 system count;
struct timeval tv: 代表收到第一行到达时刻,时间戳来源有 3 个地方, 分别代表 RTC 时戳,wall time,PHC 时戳,可通过/sys/devices/platform/soc/soc:globaltime/globaltime 配置;
struct timeval trig_tv: 同 tv,代表 LPWM trigger 时刻;

RTC、PHC 是可以被时间同步调整的,直接调整的是硬件 counter。
○ PHC 时间获取:驱动调用 hobot_eth_get_phc_time 接口
○ RTC 时间获取:CIM 可以通过读寄存器直接拿到 RTC 时间,不建议调用接口获取 RTC 时间
■ RTC 精确到秒的时间:应用层可以获取
■ RTC 精确到纳秒的时间:
□ 如果时间同步在同步 RTC,不允许其他应用获取 RTC 时间,因为获取 RTC 时间可能 导致 RTC 时间异常改变,这个是硬件限制。
□ 如果不做 RTC 的时间同步,应用层可以获取 RTC 时间
车载系统一般使用 PHC 时间域,所以 frame timestamps 选择 PHC 时钟源的情况偏多,当前具体使用哪个时钟源,看具体方案;
评论