• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 告別內存焦慮!最適合小RAM MCU的RTOS,來了!

    告別內存焦慮!最適合小RAM MCU的RTOS,來了!

    作者:嵌入式芯視野 時間:2025-07-15 來源:今日頭條 收藏


     是一個面向小內存嵌入式系統(如 8KB RAM MCU)的輕量級、協作式 RTOS,它的最大特點是 共享棧技術。以下是對你提供內容的整理和總結,方便你理解和介紹該操作系統:


    什么是

     是一個簡潔、高效的 協作式內核 RTOS(非搶占式),專門為 RAM 極其緊張的嵌入式平臺設計,尤其適用于 8KB~20KB RAM 的 MCU。

    核心理念:

    • 簡單

    • 易用

    • 極低資源占用

    • 強調開發友好性


    為什么開發 BasicOS?

    背景項目:

    在開發 BasicOS 之前,作者曾開發過 EventOS 和 EventOS Nano,它們以 事件驅動、控制反轉、OOP 等理念為核心,雖然資源占用極低,但 上手難度較高。

    問題:

    • 很多嵌入式工程師難以掌握事件驅動模型

    • 閱讀和維護事件驅動代碼成本較高

    • RTOS 占用 RAM 高,不適用于小 RAM 芯片

    解決方案:

    借助網友“光哥”的建議,作者引入了 “共享棧”技術,在協作式 RTOS 模型下大大節省內存。


    什么是共享棧?

    傳統 RTOS:

    每個任務分配獨立棧空間,占用大量 RAM。

    BasicOS:

    所有任務共享一個物理棧區,在任務切換時:

    1. 收縮并保存 當前任務的堆棧

    2. 擴展并恢復 下一個任務的堆棧

    特點:

    • 顯著節省 RAM

    • 切換過程多了內存復制,犧牲了一點性能

    • 適合任務數少、對實時性要求不高的系統


    為什么使用協作式內核?

    協作式(Cooperative)特點:

    • 任務主動釋放 CPU

    • 沒有資源競爭問題

    • 調試簡單,邏輯可控

    相比搶占式(Preemptive):

    • 并發問題更少

    • 更適合大多數非硬實時系統

    • 響應時間可達 <10ms,足以滿足大部分產品


    BasicOS 的技術特點

    特性

    描述

    協作式調度

    無搶占,任務必須主動讓出 CPU

    共享任務棧

    多個任務使用一個棧區,降低 RAM 占用

    Export 機制

    每個任務只占用 16 字節內存,通過 bos_task_export 宏定義任務

    不支持 FPU

    為降低占用,默認不支持浮點運算,需在 MDK 中關閉 FPU 配置

    可擴展基礎設施

    支持加入消息隊列、信號量等 RTOS 基礎設施

    計劃與 EventOS 結合

    將事件驅動與共享棧線程模型結合,提升系統靈活性

    CMSIS-RTOS 適配中

    支持 CMSIS 標準,計劃加入 eLab 平臺


    示例代碼

    主函數初始化:

    int main(void){
       bsp_init(); // 初始化外設

       static uint8_t stack[4096];
       basic_os_init(stack, sizeof(stack));  // 初始化 BasicOS(分配共享棧)
       basic_os_run();                       // 啟動 BasicOS

       return 0;
    }

    任務定義方式(通過宏導出):

    static void task_entry_led(void){    while (1)
       {
           bos_delay_ms(500); // 任務延遲
           bos_delay_ms(500);
       }
    }

    bos_task_export(led, task_entry_led, 2, NULL); // 注冊任務,優先級為2

    SysTick 中斷(用于系統心跳):

    void SysTick_Handler(void){
       bos_tick(); // 系統時間推進}

    項目目錄結構說明

    路徑

    說明

    BasicOS/basic_os.c

    內核核心實現

    BasicOS/basic_os.h

    內核頭文件

    01_basic_os_iar/

    針對 IAR 的 Cortex-M0 示例

    02_basic_os_mdk/

    針對 MDK 的 Cortex-M0 示例


    總結

    BasicOS 是一個非常適合 極小 RAM 嵌入式平臺 的協作式操作系統,它通過共享任務棧技術,將任務切換的 RAM 成本壓縮到極致,適合低資源、低實時性需求的項目。它的出現,為那些無法使用主流 RTOS 的 MCU 提供了新思路。

    開源網站:
    https://gitee.com/event-os/basic-os



    關鍵詞: BasicOS

    評論


    技術專區

    關閉
    主站蜘蛛池模板: 讷河市| 穆棱市| 城口县| 陵川县| 泌阳县| 东辽县| 佛坪县| 汉沽区| 望江县| 永福县| 武山县| 同德县| 泸西县| 长顺县| 屏南县| 马鞍山市| 鸡西市| 逊克县| 清涧县| 长岛县| 莎车县| 郧西县| 西宁市| 湘乡市| 沙坪坝区| 晋城| 渭源县| 游戏| 兴隆县| 达孜县| 泽普县| 灵台县| 吴川市| 茂名市| 府谷县| 万源市| 霸州市| 富宁县| 洮南市| 刚察县| 灵武市|