ZHCAAA2A April 2019 – May 2021 AM5706 , AM5708 , AM5716 , AM5718 , AM5726 , AM5728 , AM5729 , AM5746 , AM5748 , AM5749 , TIOL111 , TIOL1113 , TIOL1115 , TPS2660
不同的机器视觉库(例如 MVTec 的 HALCON)和神经网络在 Linux 操作系统上会作为应用程序运行。Linux 支持应用的轻松移植,并为不同的硬件(例如网络接口、大容量存储,甚至是摄像机)提供了通用软件接口。因此,当视觉传感器必须捕获和处理图像,但无需将原始图像传输到视觉计算机时,很适合使用 Linux 平台。
这样的器件可能还需要使用 IO-Link 来控制外部执行器或传感器。例如,可将其用于测量与物体之间的距离或控制闪光强度和持续时间。如图 1-1 所示,可通过使用 IO-Link PHY(例如 TIOL111)和 SoC 的集成式 UART 来实现 IO-Link。本文档介绍在 Linux 上实现实时协议的不同方式以及获得的计时抖动。
在嵌入式 Linux 系统上处理诸如 IO-Link 之类的实时通信会是一项挑战。在 Linux 用户空间中,无法在 µs 范围内以确定性计时读写外设(如 UART)。Linux 调度程序并不适合此类应用,并且还必须处理其他任务。调度程序会导致计时抖动(具体情况取决于 CPU 负载),进而无法实现实时通信。
另一种方法是集成到 Linux 内核中。在内核空间中,高分辨率计时器可产生只能被另一个内核计时器或硬件外设阻止的精确计时。在这种情况下,抖动优于用户空间实现方式,但是其仍然存在。另外,将复杂的堆栈移入内核空间也并不总是一种良好设计做法。
第三种选择是使用单独的处理器内核来处理实时通信。除了两个 Arm®Cortex®-A15 内核之外,Sitara™ AM5728 SoC 还具有多个可用于该应用的 Arm Cortex-M4 内核。可将严格计时部分卸载,而 Arm Cortex-A15 和 M4 内核之间会建立非关键通信链路以用于交换数据。