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