一個好的嵌入式項目,通常會有一套比較好的軟件架構的設計。除非你的項目只是一個點燈項目。
1、前言
模塊化程序設計是指在進行程序設計時將一個大程序按照功能劃分為若干小程序模塊,每個小程序模塊完成一個確定的功能,并在這些模塊之間建立必要的聯系,通過模塊的互相協作完成整個功能的程序設計方法。
比如搭積木,可以用一個個積木模塊組合成我們想要的任何樣子,而且通過使用相同的積木模塊組合成不同的樣子
2、為何要模塊化
為什么要模塊化程序設計?那就需要從程序模塊化的好處說起!只有了解了其優(yōu)點,才能更好的實現模塊化編程。
降低程序設計的復雜度
有利于程序的設計和調試,功能相對獨立,結構清晰;主要是封裝實現細節(jié),提供使用接口即可
提供代碼的復用性
現成的程序代碼,直接移植到另一個項目中簡單修改甚至不用修改就能使用,多個模塊程序組合就完成了一個新的功能;這也是模塊化最大的意義所在
便于功能維護和擴展
一旦出現問題,能迅速定位哪個模塊出現的問題
程序的結構一目了然
可以看出程序中使用了哪些驅動、有哪些外設模塊、大概有哪些功能等
保證系統(tǒng)穩(wěn)定性
該模塊程序已通過之前的項目經過反復驗證,穩(wěn)定性高,在新項目中移植比重寫更穩(wěn)定
有利于團隊開發(fā)
各模塊之間功能獨立,有利于任務分解,團隊分工,各自實現對應的功能,并且可以單獨進行測試驗證
3、如何拆分模塊
基本思路是自頂向下、逐步分解、分而治之,即將一個較大的程序按照功能分割成一些小模塊;比如手持遙控器,主要功能就是人機交互,可能還會有參數設置等,那么依次往下分解得到以下模塊:
在拆分模塊時應該注意以下幾個主要原則:
模塊獨立
模塊的獨立性原則表現在模塊完成獨立的功能,與其他模塊的聯系應該盡可能得簡單,各個模塊具有相對的獨立性。
模塊的規(guī)模要適當
模塊的規(guī)模不能太大,也不能太小。如果模塊的功能太強,可讀性就會較差,若模塊的功能太弱,就會有很多的接口。開發(fā)者需要通過較多的程序設計來進行經驗的積累。
分解模塊時要注意層次
在進行多層次任務分解時,要注意對問題進行抽象化。在分解初期,可以只考慮大的模塊,在中期,再逐步進行細化,分解成較小的模塊進行設計。
不對外開放全局變量
模塊內部使用的全局變量,需要外部修改或者獲取時,需要通過封裝成 API 函數對外提供,同時可以在函數內有相關限制,防止外部直接操作模塊內部的全局變量引發(fā)模塊運行異常,因此模塊內部的全局變量可定義為靜態(tài)全局變量。
4、如何理解
通常一個模塊就是一個.c 文件和一個.h 文件的結合,頭文件(.h)中是對于該模塊接口的聲明
該模塊的.c文件實現具體功能,而.h文件則為該功能模塊的接口函數等
一個大模塊中也會存在多個小模塊,即模塊中存在多個.c和.h文件,每個.c和.h作用各不相同
一個.c 文件必須一個對應的.h文件,而.h文件不一定需要對應的.c 文件
比如實現一個OLED驅動模塊,可能會有以下的文件:
oled.c 和 oled.h
實現具體功能,如清屏、畫圖、字符顯示等;.h 文件對外提供 API 接口函數
oledio.c 和 oledio.h
實現底層接口初始化和通信(IIC或SPI),為oled.c文件提供驅動接口
oledconf.c 和 oledconf.h
驅動配置, 如字體大小、分辨率等配置信息
fontxxx.h 和 bmpxxx.h
用來存放字體和BMP圖形點陣數據
審核編輯:劉清
-
人機交互
+關注
關注
12文章
1199瀏覽量
55269 -
遙控器
+關注
關注
18文章
829瀏覽量
65871 -
BMP
+關注
關注
0文章
48瀏覽量
17027 -
嵌入式軟件
+關注
關注
4文章
239瀏覽量
26598 -
OLED驅動
+關注
關注
1文章
13瀏覽量
10214
原文標題:嵌入式軟件架構模塊設計
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論