Linux被採用的關鍵如下
- Linux擁有所需功能。包括一個良好的排程管理、一個好的網路推疊機制、支援USB、WiFi、藍芽和各種儲存媒體,以及對多媒體設備的支援度夠好等等。以上這些功能盡在其中。
- Linux是 open source (開源)的,所以你可以自由下載 source code(原始碼) ,並依你的需求修改。你自己或者是替你工作的人,可以根據特定的系統單晶片機板或是設備來建立支援套件。你可以增加協定、功能,以及其他不在主版本原始碼的技術。你可以移除那些不需要的功能,以降低記憶體與空間需求。Linux是很彈性的。
- Linux有個活躍的社群,特別是在Linux kernel的部份非常活躍。只要每10到12週,就會釋出一個新版本的kernel,而每次釋出中都包含了將近1000名開發者所貢獻的程式碼。一個活躍的社群代表者Linux能跟得上潮流,而且能支援最新的硬體、協定、標準。
- 開源授權保證你能拿到原始碼,而無須與共應商打交道。
一般來說,embedded system 專案的生命週期
開發者在開發 embedded system專案時,需要經歷以下過程:
- embedded linux的要件(第1 ~ 6章)將會協助你建立開發環境,並且為後續的階段構建一個工作平台。這通常又稱硬體啟動(board bring up)階段。
- 系統架構與設計的抉擇(第7 ~ 9章)將會協助你根據程式與資料儲存空間,來審視一些你需要決定的設計方向,以及告訴你如何在 kernel 與應用程式之間分配工作量,還有如何啟動系統。
- 開發嵌入式應用程式(第10、11章)會告訴你如何有效運用 Linux 的 process 與 thread,以及如何在資源有限的設備上管理記憶體。
- 除錯以及最佳化效能(第12、13章)會描述如何在應用程式與kernel層上面替你的程式碼追蹤、剖析、除錯。
- 第五個部份為 RTOS (即時系統)開發,會需要涉及前面所有的四個階段的內容。
而在 Embedded Linux 中,通常需要
- Toolchain:包含了compiler,以及其他必要的工具,用以產出能在目標設備上執行的程式碼。所有其他的工作都依靠這個 toolchain 中。
- Bootloader(啟動載入器):用以啟動機板,並且載入、啟動 Linux 的 kernel。
- Kernel:這是系統的核心,用以管理系統資源,並與硬體介接。
- Root filesystem:這當中包含了一旦 kernel 完成啟動,就可以執行的應用程式。
- Application:用來讓設備發揮應有功能的程式集。
本書會用到的硬體
BeagleBone Black:詳細資訊請參考 wiki。
本書也會使用QEMU來進行模擬
QEMU是一種模擬器,並且有著不同的類型,每種類型不僅能夠模擬特定的處理器架構,也能夠模擬該架構的多種機板。
針對每種架構,QEMU都能夠擬出許多硬體,你可以輸入參數-machine help來查閱。而每種模擬的環境,都能夠模擬出機板上多數的常見硬體。
可以透過參數將硬體與本機端的資源連結起來,像是將一個本機檔案模擬成一顆磁碟。