1. 程式人生 > 其它 >嵌入式 Linux 的基礎知識介紹

嵌入式 Linux 的基礎知識介紹

嵌入式Linux是Linux核心的改編版,用於嵌入式系統。嵌入式Linux最流行的例子是Android作業系統。

但是,需要大量硬體資源來支援嵌入式Linux,特別是如果它將部署在實時機器對機器(M2M)通訊、機器人控制或複雜計時應用等用例中時.這些資源至少包括支援乙太網和其他基本介面的嵌入式硬體平臺(板卡或片上系統),以及用於容納作業系統、庫、檔案系統、應用程式、引導載入程式、等等。

桌面Linux與嵌入式Linux

嵌入式Linux是開源的、可修改的、用C編寫的。而桌面Linux或任何其他作業系統一樣,嵌入式Linux的作用是從底層處理器中抽象出使用者和應用程式,記憶體和其他硬體元件;為各種功能分配和交付系統資源;同時管理多個任務和應用程式等等。

儘管如此,如果您現在還沒有注意到,嵌入式Linux和傳統桌面Linux之間存在許多顯著差異。這些包括例如直接從快閃記憶體而不是硬碟啟動的能力。

下面提供了一張圖表,比較了嵌入式Linux和桌面Linux之間的一些主要差異。

嵌入式Linux:交叉編譯器、庫和引導載入程式

由於嵌入式Linux是為特定應用程式設計的,因此在開始進行需要開源作業系統的系統設計時,工程師必須使用一些特定的開發工具。以下當然不是一個詳盡的列表,但一個好的起點是使用正確的庫、強大的交叉編譯器和與Linux核心配對的高效引導載入程式。

交叉編譯器

對於不熟悉的人來說,交叉編譯器是一種編譯器,它執行編寫的程式碼,以便在編譯器所在的機器之外的其他機器上執行。例如,在您的PC或膝上型電腦上執行的交叉編譯器能夠生成為Android智慧手機等嵌入式系統編寫的程式碼。

嵌入式Linux系統需要交叉編譯器,因為這些裝置通常沒有在本地編譯程式碼所需的資源,因此必須在其他地方編譯然後交付給目標。

對於提供大小優化、支援控制處理的特性等功能的交叉編譯器,有多種選擇。但是這裡列出了一些最常見的交叉編譯器:Buildroot、Crosstool-NG、Yocto。

C庫

C庫提供核心和應用程式之間的介面,因此必須是交叉編譯過程的一部分。嵌入式Linux系統中的任何程式,無論是用python、java還是其他語言編寫的,都必須在執行時呼叫C庫才能通過Linux核心訪問硬體資源。

下面是一些在嵌入式Linux系統中使用的流行C庫。

glibc–標準的GNUC庫功能豐富,但代價是佔用大量記憶體。它也沒有任何配置選項。

uClibc–“u”表示uClibc是一個小型的微控制器C庫,用於嵌入式系統。

musl–musl也很小,在RAM和儲存量有限的系統中是一個不錯的選擇。

eglibc–eglibc與glibc相同,但做了一些修改,使其更適合在嵌入式裝置中使用,例如支援配置。

特定於應用程式的庫

嵌入式Linux核心的功能有限,因此需要特定的庫。下面列出了一些受歡迎的。

libgpiod–如今,標準命令列並不是與Linux裝置檔案互動的唯一方式。libgpiod用於與Linux裝置中的GPIO硬體互動。

libusb–libusb是一個C庫,它從單一平臺為所有通用USB裝置提供驅動程式。

Socket—Socket庫可連線網路上的節點。

serdisplib–該庫可以驅動多個顯示器,如OLED、USB顯示器或帶有內建控制器的顯示器。

Pigpio–Pigpio庫可用於控制RaspberryPiGPIO。

opc-ua–opc-ua協議是一種適用於時間敏感網路的協議。

lockdev–鎖定和解鎖裝置

libxls–該庫用於讀取和轉換Excel檔案。

libstroke–用於識別滑鼠筆觸和手勢的庫。

libserialport–在編寫使用串列埠的軟體時抽象作業系統特定的細節

hidapi–用於與USB和藍芽HID裝置通訊的庫。乙肝

mjpg_streamer–用於從一個或多個輸入捕獲JPEG幀並通過IP網路流式傳輸它們

cheese—cheese可以幫助您使用網路攝像頭拍攝視訊、照片等。

Elisa–它是一個簡單的音樂播放器,因此您可以播放任何音訊。

引導載入程式

引導載入程式是系統開機後執行的第一個程式碼,它處理基本的硬體初始化並從可引導裝置(如硬碟驅動器或SD卡或嵌入式Linux系統中的快閃記憶體)載入作業系統。一旦引導載入程式為Linux核心設定了可執行環境並且核心開始執行,就不再需要引導載入程式。

引導載入程式有各種形狀和大小,可以根據使用者或系統需求進行定製。事實上,一些嵌入式電路板帶有引導載入程式。

這裡介紹了一些常用的引導載入程式及其支援的處理器架構。

名稱

支援的架構

DasU-Boot

ARC、ARM、Blackfin、Microblaze、MIPS、NiosII、OpenRice、PowerPC、SuperH

RedBoot

ARM、MIPS、PowerPC、SuperH

Barebox

ARM、Blackfin、MIPS、NiosII、PowerPC

GRUB2

x86、x86_64

LittleKernel

arm

YAMON

MIPS

CFE

BroadcomMIPS

這些是您可能每天使用的各種基於Linux的嵌入式系統背後的關鍵構建塊,您可能甚至不知道它們執行Linux,例如智慧電視、無線路由器和網路附加儲存裝置。

本文由朗銳智科(www.lrist.com)編輯整理,如有侵權請聯絡本站。