ZHCAAA2A April 2019 – May 2021 AM5706 , AM5708 , AM5716 , AM5718 , AM5726 , AM5728 , AM5729 , AM5746 , AM5748 , AM5749 , TIOL111 , TIOL1113 , TIOL1115 , TPS2660
不同的機器視覺庫(例如 MVTec 的 HALCON)和神經(jīng)網(wǎng)絡(luò)在 Linux 操作系統(tǒng)上會作為應(yīng)用程序運行。Linux 支持應(yīng)用的輕松移植,并為不同的硬件(例如網(wǎng)絡(luò)接口、大容量存儲,甚至是攝像機)提供了通用軟件接口。因此,當視覺傳感器必須捕獲和處理圖像,但無需將原始圖像傳輸?shù)揭曈X計算機時,很適合使用 Linux 平臺。
圖 1-1 具有 IO-Link 的視覺傳感器簡化方框圖這樣的器件可能還需要使用 IO-Link 來控制外部執(zhí)行器或傳感器。例如,可將其用于測量與物體之間的距離或控制閃光強度和持續(xù)時間。如圖 1-1 所示,可通過使用 IO-Link PHY(例如 TIOL111)和 SoC 的集成式 UART 來實現(xiàn) IO-Link。本文檔介紹在 Linux 上實現(xiàn)實時協(xié)議的不同方式以及獲得的計時抖動。
在嵌入式 Linux 系統(tǒng)上處理諸如 IO-Link 之類的實時通信會是一項挑戰(zhàn)。在 Linux 用戶空間中,無法在 μs 范圍內(nèi)以確定性計時讀寫外設(shè)(如 UART)。Linux 調(diào)度程序并不適合此類應(yīng)用,并且還必須處理其他任務(wù)。調(diào)度程序會導致計時抖動(具體情況取決于 CPU 負載),進而無法實現(xiàn)實時通信。
另一種方法是集成到 Linux 內(nèi)核中。在內(nèi)核空間中,高分辨率計時器可產(chǎn)生只能被另一個內(nèi)核計時器或硬件外設(shè)阻止的精確計時。在這種情況下,抖動優(yōu)于用戶空間實現(xiàn)方式,但是其仍然存在。另外,將復雜的堆棧移入內(nèi)核空間也并不總是一種良好設(shè)計做法。
第三種選擇是使用單獨的處理器內(nèi)核來處理實時通信。除了兩個 Arm?Cortex?-A15 內(nèi)核之外,Sitara? AM5728 SoC 還具有多個可用于該應(yīng)用的 Arm Cortex-M4 內(nèi)核??蓪栏裼嫊r部分卸載,而 Arm Cortex-A15 和 M4 內(nèi)核之間會建立非關(guān)鍵通信鏈路以用于交換數(shù)據(jù)。