welcom ! Handel home

2025年4月10日 星期四

RTOS 虛擬平台 (VM) 軟體系統架構規劃草案

 

📘 RTOS 虛擬平台 (VM) 軟體系統架構規劃草案


🧠 設計核心理念

  1. 語言選擇需具跨平台性與延續性

    • 建議語言:C/C++ 為底層核心語言、Python/Lua 作為上層測試或配置介面語言。

    • 語言延續性確保「知識經驗」不歸零、支援平台轉換。

  2. 重視軟體靈魂——資料結構、狀態圖與演算法設計

    • 導入 UML / Statechart / Flowchart 工具輔助分析。

    • 採標準化文檔格式(如 Markdown + PlantUML 或 Doxygen)建構文件與設計庫。

  3. 建構跨平台可重用的函數庫(Library)架構

    • 函數庫需以功能導向與需求導向為核心。

    • 移植平台時只需重新撰寫 L01~L03 層的實作即可,其餘層維持共通。


🏗️ 軟體系統分層架構

以下為推薦的 8 層虛擬平台軟體架構模型:

層級名稱功能說明可連接層
L00HardHDL實體硬體模擬層,平台抽象化支援 FPGA/MCU/ARM 等
L01BIOS最低階 I/O 初始化與啟動例程,如 clock, gpio, uartL00
L02DRIVE1_LOW基礎外設驅動,如 Timer、ADC、PWM、I2C、SPIL01, L00
L03DRIVE2_HIGH高階驅動層,封裝 sensor、motor、CAN、LCD、FlashL02, L01
L04SYS_PUBLIB系統級公用函式:RTOS抽象層、記憶體池、佇列封裝、錯誤處理L03, L02
L05APP_PUBLIB應用共用邏輯層:演算法、數學函數、座標轉換、通訊協定封裝L04, L03
L06USER_PUBLIB使用者應用函式封裝,如 control策略、任務流程模組L05, L04
L07APP實際應用程式(如自走車、機器手臂、數據採集)L06, L05, L04

🔗 嚴格層級依賴限制(LINK規範)

  • 上層僅可呼叫指定下層,反向依賴禁止

    nginx
    L07 → L06, L05, L04 L06 → L05, L04 L05 → L04, L03 L04 → L03, L02 L03 → L02, L01 L02 → L01, L00 L01 → L00



📦 技術配套工具建議

類型工具建議
文件生成DoxygenSphinxMkDocs
圖示建模PlantUMLDraw.ioyEd
設計追蹤Markdown + Git 管理技術資源庫
單元測試Unity for C, pytest for Python
VM 平台模擬QEMU、自訂 HAL/Driver layer 做 mock 驗證
自動編譯系統CMake + Makefile + NinjaPlatformIO

🧰 可進一步建構:

  • 📁 vm_sys/:儲存虛擬硬體資源模組

  • 📁 libs/:依照 L01~L06 結構分層建置

  • 📁 app/:各應用模組 (如 BLE、AGV、LineFollower)

  • 📁 doc/:UML + API 說明文件,版本控管

  • 📁 tool/:交叉編譯腳本、模擬驅動、測試平台工具


🔚 小結與後續建議

這套分層 VM 架構:

  • 可模擬 RTOS 開發、支援軟體重構與平台移植

  • 適用於教育用途、快速原型、內部開發平台統一

📌 下一步建議

  • 依此模型實作出一個 demo 架構(例如以 FreeRTOS + STM32 為範本)

  • 可建立 L01~L03 的 HAL 測試模擬框架(Mock HAL)


沒有留言: