0

我制作了一个通过 CAN 总线与硬件通信的程序。当我通过 CLI 启动程序时,一切似乎都运行良好,但通过 Systemd 服务启动进程会导致流量暂停

我正在制作一个通过 CAN 总线与硬件通信的系统。当我通过 CLI 启动我的程序时,一切似乎都运行良好,我将在一秒钟内对此进行量化。然后我创建了 systemd 服务,如下所示,在系统启动时自动启动进程。

通过绘制日志时间戳,我们注意到在 30 分钟的窗口内,每隔 5 分钟左右(不是常规速率),CAN 流量会出现周期性暂停,介于 250 毫秒到几秒之间。如果我们切换回通过 CLI 启动,我们可能会在 3 小时内出现 100 毫秒的下降,基本上没有问题。

从技术上讲,我们可以容忍这样的流量暂停,但问题是我们不了解这些丢失消息的原因(通过 systemd 运行与通过命令行手动启动)。

有没有人知道这里发生了什么?

其他注意事项: - 我们不使用任何环境变量或参数(通过配置文件读取)。- 我们刚刚观察到 CAN 流量没有任何运行,没有丢包,所以我们非常确信这不是我们的硬件/socketCAN 驱动程序 - 我们尝试通过 Arch 笔记本电脑上的服务启动,但没有看到这种暂停行为。

[Unit]
Description=Simple service to start CAN C2 process 

[Service]
Type=simple
User=dzyne
WorkingDirectory=/home/thisguy/canProg/build/bin
ExecStart=/home/thisguy/canProg/build/bin/piccolo
Restart=on-failure 
# or always, on-abort, etc
RestartSec=5

[Install]
WantedBy=multi-user.target

当通过系统服务运行时,我希望消息之间不会出现大于约 20-100 毫秒的停顿,这是我们的容忍度

4

0 回答 0