本系列文章深入探討了新興的確定性以太網(wǎng)標準,即以太網(wǎng)時間敏感網(wǎng)絡(TSN),以及如何在各種基于Linux的嵌入式系統(tǒng)上有效實施。我們將使用一系列低成本、現(xiàn)成的開發(fā)板硬件,演示如何為我們的用例配置 Raspberry Pi 和聯(lián)發(fā)科 LinkIt 智能板,然后使用實時數(shù)據(jù)包技術(shù)在設備之間進行通信并控制機器人外設。
首先,需要對底層組件有基本的了解。在本文中,我們從嵌入式Linux開始。
桌面Linux與嵌入式Linux的比較
嵌入式Linux是Linux內(nèi)核的改編,用于嵌入式系統(tǒng)。嵌入式Linux最流行的例子是Android操作系統(tǒng)。
但是,需要大量硬件資源來支持嵌入式 Linux,特別是如果它將部署在本系列后面重點介紹的實時機器對機器 (M2M) 通信、機器人控制或復雜計時應用等用例中。這些資源至少包括支持以太網(wǎng)和其他基本接口的嵌入式硬件平臺(板級或片上系統(tǒng)),以及用于容納操作系統(tǒng)、庫、文件系統(tǒng)、應用程序、引導加載程序等的充足 NOR 或 NAND 閃存。
就像普通的Linux一樣,嵌入式Linux是開源的,可修改的,用C編寫的。也就像桌面Linux或任何其他操作系統(tǒng)一樣,嵌入式Linux的作用是從底層處理器,內(nèi)存和其他硬件組件中抽象用戶和應用程序;為各種職能部門分配和交付系統(tǒng)資源;同時管理多個任務和應用程序,依此類推。因此,嵌入式 Linux 系統(tǒng)堆棧看起來就像典型的桌面一樣。
盡管如此,如果你現(xiàn)在還沒有注意到,嵌入式Linux和傳統(tǒng)的桌面Linux之間有許多顯著的差異。其中包括直接從閃存而不是硬盤驅(qū)動器啟動的能力。
下面提供了比較嵌入式和桌面 Linux 之間一些主要差異的圖表。

嵌入式Linux:交叉編譯器,庫和引導加載程序
由于嵌入式 Linux 是為特定應用程序設計的,因此工程師在開始進行需要開源操作系統(tǒng)的系統(tǒng)設計時,必須使用一些特定的開發(fā)工具。以下當然不是詳盡的列表,但一個好的起點是使用正確的庫、強大的交叉編譯器以及與 Linux 內(nèi)核配對的高效引導加載程序。
交叉編譯器
對于不熟悉的人來說,交叉編譯器是一種編譯器,它執(zhí)行編寫的代碼以在編譯器所在的計算機以外的其他計算機上運行。例如,在您的 PC 或筆記本電腦上運行的交叉編譯器能夠生成為嵌入式系統(tǒng)(如 Android 智能手機)編寫的代碼。

嵌入式 Linux 系統(tǒng)需要交叉編譯器,因為這些設備通常沒有在本地編譯代碼所需的資源,因此必須在其他地方編譯代碼,然后將其交付給目標。
對于提供大小優(yōu)化、支持控制處理的特征等功能的交叉編譯器,有幾個選項。但這里列出了一些最常見的交叉編譯器:
構(gòu)建根
交叉工具-NG
約克托
C 庫
C 庫在內(nèi)核和應用程序之間提供了一個接口,因此必須是交叉編譯過程的一部分。嵌入式Linux系統(tǒng)中的任何程序,無論是用python,java還是其他語言編寫的,都必須在運行時調(diào)用C庫,以便通過Linux內(nèi)核訪問硬件資源。

以下是一些用于嵌入式 Linux 系統(tǒng)的流行 C 庫。
glibc– 標準的 GNU C 庫充滿了功能,但這是以大量內(nèi)存占用為代價的。它也沒有任何配置選項。
uClibc– “u”表示uClibc是一個微控制器C庫,體積小,可用于嵌入式系統(tǒng)。
musl– musl 也很小,在 RAM 和存儲量有限的系統(tǒng)中是一個不錯的選擇。
EGLIBC– EGLIBC與glibc相同,但進行了修改,使其更適合在嵌入式設備中使用,例如支持配置。
特定于應用程序的庫
嵌入式 Linux 內(nèi)核的功能有限,因此需要特定的庫。我們當然不能全部列出,但下面列出了一些更受歡迎的。其中一些將在本系列的后面使用。
libgpiod– 如今,標準命令行并不是與 Linux 設備文件交互的唯一方式。libgpiod用于與Linux設備中的GPIO硬件進行交互。
libusb– libusb 是一個 C 庫,它為來自單個平臺的所有通用 USB 設備提供驅(qū)動程序。
套接字– 套接字庫連接網(wǎng)絡上的節(jié)點。
serdisplib– 該庫可以驅(qū)動多個顯示器,如 OLED、USB 顯示器或帶有內(nèi)置控制器的顯示器。
Pigpio – PigpioLibrary caann 用于控制 Raspberry Pi GPIO。
opc-ua– opc-ua協(xié)議是一種適用于時間敏感網(wǎng)絡的協(xié)議。
鎖定開發(fā)–鎖定和解鎖設備
libxls– 此庫用于讀取和轉(zhuǎn)換 excel 文件。
libstroke– 用于識別鼠標筆劃和手勢的庫。
libserialport– 在編寫使用串行端口的軟件時抽象出特定于操作系統(tǒng)的詳細信息
hidapi– 用于與 USB 和藍牙 HID 設備通信的庫。乙二醇
mjpg_streamer– 用于從一個或多個輸入捕獲 JPEG 幀并通過 IP 網(wǎng)絡流式傳輸它們
奶酪–奶酪可幫助您使用網(wǎng)絡攝像頭拍攝視頻,照片等。
Elisa–它是一個簡單的音樂播放器,因此您可以播放任何音頻。
引導加載程序
引導加載程序是系統(tǒng)通電后運行的第一個代碼,處理基本的硬件初始化,并從嵌入式 Linux 系統(tǒng)中的硬盤驅(qū)動器、SD 卡或閃存等可引導設備加載操作系統(tǒng)。一旦引導加載程序為 Linux 內(nèi)核設置了可執(zhí)行環(huán)境并且內(nèi)核開始執(zhí)行,就不再需要引導加載程序。
引導加載程序有各種形狀和大小,可以根據(jù)用戶或系統(tǒng)需求進行定制。事實上,一些嵌入式主板帶有引導加載程序。
這里有一些常用的引導加載程序和它們支持的處理器架構(gòu)。

這些是各種基于 Linux 的嵌入式系統(tǒng)背后的關(guān)鍵構(gòu)建塊,您可能每天都在使用,甚至可能不知道它們運行 Linux,例如智能電視、無線路由器和網(wǎng)絡連接存儲設備。
現(xiàn)在這些基礎知識已經(jīng)解決,在第 2 部分中,我們將仔細研究嵌入式硬件目標的來龍去脈,我們將在其上運行嵌入式 Linux,稍后將支持我們的以太網(wǎng) TSN 堆棧。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20449瀏覽量
334061 -
Linux
+關(guān)注
關(guān)注
88文章
11760瀏覽量
219036 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7402瀏覽量
129308
發(fā)布評論請先 登錄
智能制造背后的關(guān)鍵技術(shù):TSN與工業(yè)以太網(wǎng)的確定性革命
新品 | Unit PoE-P4,高性能PoE以太網(wǎng)嵌入式控制器
車載以太網(wǎng)協(xié)議轉(zhuǎn)換器操作教程# 車載以太網(wǎng)# 轉(zhuǎn)換器# 硬件# 教程# 汽車# 技術(shù)# 操作
探索Microchip LAN9215:16位非PCI 10/100以太網(wǎng)控制器的卓越性能
德州儀器(TI)解讀汽車區(qū)域架構(gòu)中的 TSN:啟用以太網(wǎng)環(huán)形架構(gòu)和 AVB 分布式音頻
雙通道CAN轉(zhuǎn)以太網(wǎng)和四通道CAN轉(zhuǎn)以太網(wǎng)怎么用,長什么情況下使用,三格電子帶您了解#CAN#以太網(wǎng)
Amphenol 4 端口千兆以太網(wǎng)交換機:適用于下一代無人機、機器人和嵌入式應用
基于以太網(wǎng)芯片的應用層方案
ProfiNet嵌入式板卡,主流替代可實現(xiàn)ProfiNet工業(yè)以太網(wǎng)的應用實例
車載網(wǎng)絡測試技術(shù)的進化之路#CAN #車載以太網(wǎng) #TSN #時間敏感網(wǎng)絡
Linux嵌入式和單片機嵌入式的區(qū)別?
TSN(時間敏感網(wǎng)絡)是什么
工業(yè)通信大集結(jié):TSN、PROFINET、EtherCAT交換機集中發(fā)布,光路科技展示核心產(chǎn)品
即刻啟程,踏上W55MH32高性能以太網(wǎng)單片機學習之路!
嵌入式Linux上的以太網(wǎng)TSN簡介
評論