首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

嵌入式 C 語言軟件架構設計:模塊劃分與任務模型選型

     編輯:C 語言基礎

模塊劃分原則

C 語言模塊 = .c + .h。核心規範:

  1. .h 僅含**聲明**(extern 函數/變量),**嚴禁定義**變量(否則多文件包含產生多份實體)
  2. .c 內部函數/變量加 static 限制作用域
  3. 對外接口在 .h 加 extern 公開

正反例對比

// ❌ 錯誤:module1.h 定義變量
int a = 5;
// 包含此 .h 的所有 .c 都會產生獨立的 a

// ✅ 正確:
// module1.h
extern int a;      // 聲明
// module1.c
#include "module1.h"
int a = 5;         // 定義(僅此處分配內存)
// module2.c, module3.c
#include "module1.h"  // 共享同一 a

嵌入式系統兩類模塊

  • 硬件驅動模塊:一設備一模塊(GPIO、UART、SPI、I2C、Timer 等)
  • 軟件功能模塊:業務邏輯,**高內聚、低耦合**劃分

單任務 vs 多任務選型

輕量級內核實踐

針對 80186 等 16 位 MCU,<1000 行可實現最簡調度器(任務創建、延時、信號量、上下文切換)。關鍵點:

  • 任務棧獨立分配
  • 中斷安全的就緒隊列操作
  • 上下文切換汇编實現(保存 CS:IP、SS:SP、通用寄存器)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度單任務(裸機/超級循環)多任務(RTOS)
調度主循環輪詢調用各模塊處理函數內核調度器基於優先級/事件搶佔式調度
TCB無任務控制塊:狀態、優先級、棧指針、上下文
上下文切換無(協作式)保存/恢復寄存器組(硬件/軟件協作)
典型場景簡單協議棧、小家電、基礎傳感器節點手機、工控、複雜通訊設備