ZHCAAA2A April 2019 – May 2021 AM5706 , AM5708 , AM5716 , AM5718 , AM5726 , AM5728 , AM5729 , AM5746 , AM5748 , AM5749 , TIOL111 , TIOL1113 , TIOL1115 , TPS2660
不同的機器視覺庫(例如 MVTec 的 HALCON)和神經網絡在 Linux 操作系統上會作為應用程序運行。Linux 支持應用的輕松移植,并為不同的硬件(例如網絡接口、大容量存儲,甚至是攝像機)提供了通用軟件接口。因此,當視覺傳感器必須捕獲和處理圖像,但無需將原始圖像傳輸到視覺計算機時,很適合使用 Linux 平臺。
圖 1-1 具有 IO-Link 的視覺傳感器簡化方框圖這樣的器件可能還需要使用 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 內核之間會建立非關鍵通信鏈路以用于交換數據。