## **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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.