嵌入式 Linux 開發大致涉及三個層次:引導裝載程序、Linux 內核和圖形用戶界面。在本文中,我們將集中討論涉及這三層的一些基本概念;深入了解引導裝載程序、內核和文件系統是如何交互的;并將研究可用于文件系統、 GUI 和引導裝載程序的眾多選項中的一部分。Linux 社區正積極地為新硬件添加功能部件和支持、在內核中修正錯誤并且及時地進行常規改進。這導致大約每 6 個月就有一個穩定的 Linux 樹的新發行版。不同的維護者維護針對特定體系結構的不同內核樹和補丁。當為一個項目選擇了一個內核時,您需要評估發行版的穩定性如何、它是否符合項目要求和硬件平臺、從編程角度來看它的舒適程度以及其它難以確定的方面。還有一點也非常重要:找到需要應用于基本內核的所有補丁,以便為特定的體系結構調整內核。
內核布局分為特定于體系結構的部分和與體系結構無關的部分。內核中特定于體系結構的部分首先執行,設置硬件寄存器、配置內存映射、執行特定于體系結構的初始化,然后將控制轉給內核中與體系結構無關的部分。系統的其余部分在這第二個階段期間進行初始化。內核樹下的目錄 arch/ 由不同的子目錄組成,每個子目錄用于一個不同的體系結構。每一個這樣的子目錄都包含 kernel/ 和 mm/ 子目錄,它們包含特定于體系結構的代碼來完成象初始化內存、設置 IRQ、啟用高速緩存、設置內核頁面表等操作。一旦裝入內核并給予其控制,就首先調用這些函數,然后初始化系統的其余部分。一旦為目標系統編譯了內核后,通過使用引導裝載程序,內核就被裝入到目標系統的內存。通過使用串行、USB 或以太網端口,引導裝載程序與主機通信以將內核傳送到目標的閃存或 DRAM 中。在將內核完全裝入目標后,引導裝載程序將控制傳遞給裝入內核的地址。
嵌入式系統通常有許多設備用于與用戶交互,象觸摸屏、小鍵盤、滾動輪、傳感器、RA232 接口、LCD 等等。除了這些設備外,還有許多其它專用設備,包括閃存、USB、GSM 等。內核通過所有這些設備各自的設備驅動程序來控制它們,包括 GUI 用戶應用程序也通過訪問這些驅動程序來訪問設備。本節著重討論通常幾乎在每個嵌入式環境中都會使用的一些重要設備的設備驅動程序。系統需要一種以結構化格式存儲和檢索信息的方法;這就需要文件系統的參與。Ramdisk是通過將計算機的 RAM 用作設備來創建和掛裝文件系統的一種機制,它通常用于無盤系統。