課程詳情
嵌入式軟件架構實戰培訓
課程大綱:
程序結構設計做到模塊間松耦合(*天)
【嵌入式軟件的挑戰】
a)功能實現與具體硬件無關b)硬件無關與硬件相關代碼分離c)應付硬件變化:硬件接口模塊的可替換性可修改性d)應付協議變化:協議代碼模塊的可替換性可修改性
【講案例】大中小嵌軟架構實例觀摩a)固件分層案例b)產品化分層案例c)平臺化分層案例Ad)平臺化分層案例Be)平臺化分層案例C
【講技術】大中小嵌軟的代碼分層a)洋蔥皮b)UI-SI-DI-PDc)固件五橫一縱d)產品六橫一縱e)平臺分層
運行時結構設計做到硬件間*聯動(第1天)
【嵌入式軟件的挑戰】a)運行邏輯復雜,難設計?b)靠全局變量通信,緊耦合?
【講案例】從固件到整機嵌軟實例觀摩a)設計案例1無OS。While(1)中順序執行任務函數b)設計案例2無OS。While(1)中執行時間片任務c)設計案例3有OS。ISR與Task信號量通信,Task間隊列通信
【講技術】技術對比a)前后臺結構(死循環+中斷)骨架代碼對比
b)時間片輪詢(Time-slicePolling)骨架代碼對比
c)多任務結構(OS-basedMulti-task)骨架代碼對比
底層模塊的漂亮設計做到可重用可擴展(*天)
【嵌入式軟件架構師的崗位能力】
合格:封裝硬件細節暴露訪問接口
*:能做到支持新硬件只需局部擴展
牛人:在HAL層提供顯示服務/通信服務/存儲服務
【講案例】嵌軟HAL模塊就該這么設計
a)從led驅動,到閃爍可配置/可循環的HALAPI源代碼案例
b)從2.4G無線,到發包調用/收包回調的HALAPI源代碼案例
c)從I2C讀寫,到EEPROM的延遲寫HALAPI
【講技術】嵌軟HAL設計技巧
a)利用callback讓模塊:局部處理可擴展
b)利用配置數組讓模塊:整體邏輯可配置
c)利用Union結構讓模塊:支持多種數據類型
d)利用函數指針結構體讓模塊:接口一致的多個模塊可替換
四種需求變更的應對讓需求變更不再痛苦(第2天)
需求變更
A類:不同廠商的器件
B類:不同類型的器件
C類:不同網絡或協議
D類:不同功能或算法
案例
A類應對drv.c局部改變,接口不變
實例分析
B類應對drv.c改變,hal不變
實例分析
C類應對設計支持協議的新增與適配
實例分析
D類應對自底向上,逐級優化設計
實例分析
【精講全過程】有代碼,有每一步修改
一個單片機軟件:架構優化+代碼重構全過程
a)全新的模塊化
b)模塊的水平分層
c)模塊的跨層封裝
d)狀態機+可配置常用做法
模塊接口的漂亮設計搞定Call/Callback/Msg接口(第2天)
【嵌入式軟件架構師的崗位能力】
合格:Call接口設計
*:搞定Call/Callback/Msg接口
牛人:接口支持任務或處理的運行時注冊/注銷
【講案例】漂亮接口設計實例觀摩
a)經典Callback接口設計
b)基于注冊的Callback接口設計
遠程協議的漂亮設計搞定*復雜的交互(第2天)
【嵌入式軟件架構師的崗位挑戰】
協議設計,對許多架構師是挑戰
a)影響大:影響到多個程序/多個團隊
b)設計難:不容易設計滿意
【講技術】協議設計思路
Howto:接口過程設計
Howto:接口技術選擇
Howto:接口格式定義
【講案例】牛案例示范協議設計難點
案例一:交互復雜型協議設計范例精髓精講
案例二:通用規范型協議設計范例精髓精講