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