📘 RTOS 虛擬平台 (VM) 軟體系統架構規劃草案
🧠 設計核心理念
-
語言選擇需具跨平台性與延續性
-
建議語言:C/C++ 為底層核心語言、Python/Lua 作為上層測試或配置介面語言。
-
語言延續性確保「知識經驗」不歸零、支援平台轉換。
-
-
重視軟體靈魂——資料結構、狀態圖與演算法設計
-
導入 UML / Statechart / Flowchart 工具輔助分析。
-
採標準化文檔格式(如 Markdown + PlantUML 或 Doxygen)建構文件與設計庫。
-
-
建構跨平台可重用的函數庫(Library)架構
-
函數庫需以功能導向與需求導向為核心。
-
移植平台時只需重新撰寫
L01~L03層的實作即可,其餘層維持共通。
-
🏗️ 軟體系統分層架構
以下為推薦的 8 層虛擬平台軟體架構模型:
| 層級 | 名稱 | 功能說明 | 可連接層 |
|---|---|---|---|
| L00 | HardHDL | 實體硬體模擬層,平台抽象化支援 FPGA/MCU/ARM 等 | — |
| L01 | BIOS | 最低階 I/O 初始化與啟動例程,如 clock, gpio, uart | L00 |
| L02 | DRIVE1_LOW | 基礎外設驅動,如 Timer、ADC、PWM、I2C、SPI | L01, L00 |
| L03 | DRIVE2_HIGH | 高階驅動層,封裝 sensor、motor、CAN、LCD、Flash | L02, L01 |
| L04 | SYS_PUBLIB | 系統級公用函式:RTOS抽象層、記憶體池、佇列封裝、錯誤處理 | L03, L02 |
| L05 | APP_PUBLIB | 應用共用邏輯層:演算法、數學函數、座標轉換、通訊協定封裝 | L04, L03 |
| L06 | USER_PUBLIB | 使用者應用函式封裝,如 control策略、任務流程模組 | L05, L04 |
| L07 | APP | 實際應用程式(如自走車、機器手臂、數據採集) | L06, L05, L04 |
🔗 嚴格層級依賴限制(LINK規範)
-
上層僅可呼叫指定下層,反向依賴禁止
📦 技術配套工具建議
| 類型 | 工具建議 |
|---|---|
| 文件生成 | Doxygen、Sphinx、MkDocs |
| 圖示建模 | PlantUML、Draw.io、yEd |
| 設計追蹤 | Markdown + Git 管理技術資源庫 |
| 單元測試 | Unity for C, pytest for Python |
| VM 平台模擬 | QEMU、自訂 HAL/Driver layer 做 mock 驗證 |
| 自動編譯系統 | CMake + Makefile + Ninja 或 PlatformIO |
🧰 可進一步建構:
-
📁
vm_sys/:儲存虛擬硬體資源模組 -
📁
libs/:依照 L01~L06 結構分層建置 -
📁
app/:各應用模組 (如 BLE、AGV、LineFollower) -
📁
doc/:UML + API 說明文件,版本控管 -
📁
tool/:交叉編譯腳本、模擬驅動、測試平台工具
🔚 小結與後續建議
這套分層 VM 架構:
-
可模擬 RTOS 開發、支援軟體重構與平台移植
-
適用於教育用途、快速原型、內部開發平台統一
📌 下一步建議:
-
依此模型實作出一個 demo 架構(例如以
FreeRTOS+STM32為範本) -
可建立
L01~L03的 HAL 測試模擬框架(Mock HAL)

沒有留言:
張貼留言