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