## **Embedded Linux or RTOS** [<h3>🍔 What Is Embedded Linux?</h3>](<https://www.windriver.com/solutions/learning/embedded-linux#differences_between_linux_distros>) 與所有 Linux 系統一樣,嵌入式 Linux 建構在相同的 Linux 核心上,可從 kernel.org 取得。 但嵌入式系統具有企業系統根本沒有的嚴格約束,從更高的可靠性和安全性要求到更嚴格的資源可用性以及通常持續 10 年或更長時間的工程支援的需求。此外,嵌入式設備通常需要相互通訊以及與雲端資源通訊。 那麼,嵌入式系統的 Linux 需要原始核心以外的附加軟體包。 您的發行版需要哪些特定的軟體包取決於您要建立的內容,而最佳解決方案將根據不同的用例而有所不同。最終,每個嵌入式 Linux 系統都是獨一無二的,專為智慧邊緣而建置。 <h3>🍔 Embedded Linux Architecture</h3> 從最基本的層面來看,嵌入式 Linux 系統是一種使用 Linux 作為位於嵌入式裝置的硬體和應用程式之間的作業系統的系統。嵌入式 Linux 系統有五個關鍵元件: 1. Hardware processor 2. Hardware abstraction layer (HAL) 3. Linux operating system 4. Service layer 5. Application layer  <h3>🍔 Embedded Linux Development</h3> <h4>BSP Development:</h4> - **Board support package (BSP)** 是一個軟體層,包含特定於硬體的驅動程式和其他例程,可讓Linux 在特定的硬體環境中運作。 - 它不僅應該根據正確的架構/作業系統組合進行定制,還應該根據精確的系統單晶片(SoC)和電路板配置進行自訂。 - 為了優化嵌入式環境,BSP 還應該包括 Linux(或其他作業系統)的客製化版本。 - 您的 BSP 供應商可以提供客製化的測試套件、專家的開發人員協助以及其他專業服務。 <h4>System Integration:</h4> - 子系統的聚合相互協作,以便系統可以提供整體功能並確保子系統作為一個系統一起運作。 - 系統整合涉及協調現有的、通常是不同的嵌入式系統,以便可以解決專門的用例。 [<h3>🍔 What is an RTOS - Real Time Operating System Information and Training</h3>](<https://www.highintegritysystems.com/rtos/what-is-an-rtos/>) **Real Time Operating System**,通常稱為 **RTOS**,是一種在任務之間快速切換的軟體元件,給人的印像是多個程式在單一處理核心上同時執行。 事實上,處理核心在任何時候只能執行一個程序,而 RTOS 實際上所做的是在各個編程線程(或任務)之間快速切換,以給人一種多個程序同時執行的印象。  --- <br> <br> ## **Monolithic Kernel Design and Micro Kernel Design** ### **🍔 Monolithic Kernel Design (單核心、整合式核心、單體式核心):** 其中一個做法為讓整個作業系統都在 kernel mode 底下執行,例如在 xv6 中,所有作業系統的服務都是在 kernel mode 底下執行,而這種 kernel 的設計模式稱為 Monolithic Kernel Design。 - 在 Monolithic Kernel Design 底下,由於作業系統運作在 kernel mode 底下,擁有對於所有硬體設備完整的存取權限,設計的時候便不需要注意各個元件之間的權限問題,此外,作業系統不同部分也可以更方便的進行合作,共享記憶體等等,也可以擁有更好的性能,如 linux。 - 缺點為由於整個作業系統都在 kernel mode 底下,作業系統有著大量的程式碼,任何程式碼的 BUG 因為在 kernel mode 底下,都有可能成為重大的 BUG。 ### **🍔 Micro Kernel Design:** 為了避免大量的程式碼運作在 kernel mode 底下造成的一些安全性風險,希望在 kernel space 底下執行的程式碼量越少越好,因此將作業系統劃分成許多塊模組,只有其中一塊在 kernel space 底下執行,剩下在 user space 執行,這樣在 user space 上面的程式在執行時遇到錯誤不至於造成太大的危害。 - **Modularity (模組化):** 微核心採用模組化結構設計,將核心功能分成小的、獨立的元件,更容易增加、刪除或更新,而不影響整個系統。 - **Kernel Minimalism (內核極簡主義):** 透過保持最小化,可減少可信任運算基礎 (TCB),從而增強安全性和可靠性。 - **Inter-Process Communication (IPC) (進程間通訊):** 微內核嚴重依賴 IPC 機制(例如訊息傳遞)來進行用戶空間伺服器和微核心之間的通信。 - **Scalability (可擴展性):** 微核心比單晶片更具可擴展性,可以更輕鬆地適應不同的系統要求,而無需犧牲效能。 - **Performance Overhead (效能開銷):** 用戶空間伺服器和微核心之間的通訊通常涉及進程間通訊 (IPC),與單片核心中的直接函數呼叫相比,這會帶來效能開銷。 - **IPC Mechanisms (進程間通訊機制):** 設計高效且安全的 IPC 機制可能很複雜。低效率的 IPC 機制可能會破壞模組化和隔離的好處。 - **Size of Microkernel (微內核大小):** 雖然目標是保持微內核小而最小,但添加基本功能可能會增加其大小。平衡小型 TCB 的需求與包含必要的服務是一個微妙的權衡。 - **Real-Time Constraints (即時約束):** 由於潛在的 IPC 開銷和對可預測通訊延遲的需求,滿足微核心架構中的即時限制可能具有挑戰性。 <br> 綜上所述,微核心架構是一種強調靈活性、模組化和可靠性的設計方法,使其適合一系列應用。 雖然單晶片以其性能和簡單性而聞名,但微核心在模組化和容錯性方面具有優勢,使其適合某些應用,例如即時系統和嵌入式系統。兩種架構之間的選擇通常取決於作業系統的特定要求和目標。  ### **🍔 MicroKernel vs Monlithic Kernel**  [<h2>Linux Boot Process</h2>](<https://www.baeldung.com/linux/boot-process>) ➡ 1. **Power On** ➡ 2. **BIOS/UEFI(POST)** ➡ 3. **Boot Device** ➡ 4. **Boot Loader(GRUB2)** ➡ 5. **Kernel** ➡ 6. **Run Level/Systemd** <br> <br> <br> --- ## 參考網站 - [Day-06 RISC-V 簡介, Microkernel vs Monolithic kernel - iT 邦幫忙](<https://ithelp.ithome.com.tw/articles/10295909>) - [Microkernel Architecture. A microkernel is a type of operating](<https://medium.com/@soumyaroy172003/microkernel-architecture-f2443c8ba915>) ## 學習影片 - [【嵌入式放牛班】RTOS-01](<https://www.youtube.com/watch?v=a0jo2wJXhgU>) 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up