課程簡介
六個模塊對應六個實際工作場景▂▃▅█提高嵌軟架構師的崗位勝任力
1)程 序 結 構 設 計——做到模塊間松耦合
2)運行時 結 構 設 計——結構清晰地控制精確聯(lián)動
3)底層模塊的漂亮設計——做到可重用、可擴展
4)四種需求變更的應對——讓需求變更不再痛苦
5)模塊接口的漂亮設計——搞定Call、Callback、Msg接口
6)遠程協(xié)議的漂亮設計——搞定最復雜的交互
目標收益
精準提高嵌軟工程師的崗位勝任力
1)程 序 結 構 設 計——做到模塊間松耦合
2)運行時 結 構 設 計——做到硬件間精確聯(lián)動
3)底層模塊的漂亮設計——做到可重用、可擴展
4)功能模塊的漂亮設計——做到可配置、可擴展
5)模塊接口的漂亮設計——搞定Call、Callback、Msg接口
6)遠程協(xié)議的漂亮設計——搞定最復雜的交互
培訓對象
培訓對象:嵌軟工程師、嵌軟高級工程師
設備廠商:儀器儀表、通訊設備、白電黑電、消費電子、醫(yī)療電子、汽車電子
方案廠商:工業(yè)控制、測控監(jiān)控、傳統(tǒng)安防、智慧城市、智能家居、智能制造
軍工院所:航空航天、衛(wèi)星導航、海工船舶、核工業(yè)
學員基礎:在崗嵌軟工程師,均可參加。
課程大綱
程序結構設計——做到模塊間松耦合(第一天) |
嵌軟的挑戰(zhàn) a)功能實現(xiàn)與具體硬件無關 b)硬件無關與硬件相關代碼分離 c)應付硬件變化:硬件接口模塊的可替換性、可修改性 d)應付協(xié)議變化:協(xié)議代碼模塊的可替換性、可修改性 【講案例】大中小嵌軟架構實例觀摩 a)固件分層……案例 b)產(chǎn)品化分層……案例 c)平臺化分層……案例A d)平臺化分層……案例B e)平臺化分層……案例C 【講技術】大中小嵌軟的代碼分層 a)洋蔥皮 b)UI-SI-DI-PD c)固件五橫一縱 d)產(chǎn)品六橫一縱 e)平臺分層 |
運行時結構設計——做到硬件間精確聯(lián)動(第一天) |
嵌軟的挑戰(zhàn) a)運行邏輯復雜,難設計? b)靠全局變量通信,緊耦合? 【講案例】從固件到整機嵌軟實例觀摩 a)設計案例1……無OS。While(1)中順序執(zhí)行任務函數(shù) b)設計案例2……無OS。While(1)中執(zhí)行時間片任務 c)設計案例3……有OS。ISR與Task信號量通信,Task間隊列通信 【講技術】技術對比 a)前后臺結構(死循環(huán)+中斷) ……骨架代碼對比 b)時間片輪詢(Time-slice Polling) ……骨架代碼對比 c)多任務結構(OS-based Multi-task)……骨架代碼對比 |
底層模塊的漂亮設計——做到可重用、可擴展(第一天) |
嵌軟架構師的崗位能力 合格:封裝硬件細節(jié)、暴露訪問接口 優(yōu)秀:能做到支持新硬件只需局部擴展 牛人:在HAL層提供顯示服務/通信服務/存儲服務 【講案例】嵌軟HAL模塊就該這么設計 a)從led驅動,到閃爍可配置/可循環(huán)的HAL API……源代碼案例 b)從2.4G無線,到發(fā)包調(diào)用/收包回調(diào)的HAL API……源代碼案例 c)從I2C讀寫,到EEPROM的延遲寫HAL API 【講技術】嵌軟HAL設計技巧 a)利用callback……讓模塊:局部處理可擴展 b)利用配置數(shù)組……讓模塊:整體邏輯可配置 c)利用Union結構……讓模塊:支持多種數(shù)據(jù)類型 d)利用函數(shù)指針結構體……讓模塊:接口一致的多個模塊可替換 |
四種需求變更的應對——讓需求變更不再痛苦(第二天) |
求變更 A類:不同廠商的器件 B類:不同類型的器件 C類:不同網(wǎng)絡或協(xié)議 D類:不同功能或算法 ……案例 A類應對——drv.c需 局部改變,接口不變 ?實例分析 B類應對——drv.c 改變,hal 不變 ?實例分析 C類應對——設計支持協(xié)議的新增與適配 ?實例分析 D類應對——自底向上,逐級優(yōu)化設計 ?實例分析 【精講全過程】有代碼,有每一步修改 一個單片機軟件:架構優(yōu)化+代碼重構全過程 a)全新的模塊化 b)模塊的水平分層 c)模塊的跨層封裝 d)“狀態(tài)機+可配置”常用做法 |
模塊接口的漂亮設計——搞定Call/Callback/Msg接口(第二天) |
嵌軟架構師的崗位能力 合格:Call接口設計 優(yōu)秀:搞定Call/Callback/Msg接口 牛人:接口支持任務或處理的運行時注冊/注銷 【講案例】漂亮接口設計實例觀摩 a)經(jīng)典Callback接口設計 b)基于注冊的Callback接口設計 |
遠程協(xié)議的漂亮設計——搞定最復雜的交互(第二天) |
嵌軟架構師的崗位挑戰(zhàn) a)協(xié)議設計,對許多架構師是挑戰(zhàn) a)影響大:影響到多個程序/多個團隊 b)設計難:不容易設計滿意 【講技術】協(xié)議設計思路 How to:接口過程設計 How to:接口技術選擇 How to:接口格式定義 【講案例】牛案例示范協(xié)議設計難點 案例一:“交互復雜型”協(xié)議設計范例——精髓精講 案例二:“通用規(guī)范型”協(xié)議設計范例——精髓精講 |
程序結構設計——做到模塊間松耦合(第一天) 嵌軟的挑戰(zhàn) a)功能實現(xiàn)與具體硬件無關 b)硬件無關與硬件相關代碼分離 c)應付硬件變化:硬件接口模塊的可替換性、可修改性 d)應付協(xié)議變化:協(xié)議代碼模塊的可替換性、可修改性 【講案例】大中小嵌軟架構實例觀摩 a)固件分層……案例 b)產(chǎn)品化分層……案例 c)平臺化分層……案例A d)平臺化分層……案例B e)平臺化分層……案例C 【講技術】大中小嵌軟的代碼分層 a)洋蔥皮 b)UI-SI-DI-PD c)固件五橫一縱 d)產(chǎn)品六橫一縱 e)平臺分層 |
運行時結構設計——做到硬件間精確聯(lián)動(第一天) 嵌軟的挑戰(zhàn) a)運行邏輯復雜,難設計? b)靠全局變量通信,緊耦合? 【講案例】從固件到整機嵌軟實例觀摩 a)設計案例1……無OS。While(1)中順序執(zhí)行任務函數(shù) b)設計案例2……無OS。While(1)中執(zhí)行時間片任務 c)設計案例3……有OS。ISR與Task信號量通信,Task間隊列通信 【講技術】技術對比 a)前后臺結構(死循環(huán)+中斷) ……骨架代碼對比 b)時間片輪詢(Time-slice Polling) ……骨架代碼對比 c)多任務結構(OS-based Multi-task)……骨架代碼對比 |
底層模塊的漂亮設計——做到可重用、可擴展(第一天) 嵌軟架構師的崗位能力 合格:封裝硬件細節(jié)、暴露訪問接口 優(yōu)秀:能做到支持新硬件只需局部擴展 牛人:在HAL層提供顯示服務/通信服務/存儲服務 【講案例】嵌軟HAL模塊就該這么設計 a)從led驅動,到閃爍可配置/可循環(huán)的HAL API……源代碼案例 b)從2.4G無線,到發(fā)包調(diào)用/收包回調(diào)的HAL API……源代碼案例 c)從I2C讀寫,到EEPROM的延遲寫HAL API 【講技術】嵌軟HAL設計技巧 a)利用callback……讓模塊:局部處理可擴展 b)利用配置數(shù)組……讓模塊:整體邏輯可配置 c)利用Union結構……讓模塊:支持多種數(shù)據(jù)類型 d)利用函數(shù)指針結構體……讓模塊:接口一致的多個模塊可替換 |
四種需求變更的應對——讓需求變更不再痛苦(第二天) 求變更 A類:不同廠商的器件 B類:不同類型的器件 C類:不同網(wǎng)絡或協(xié)議 D類:不同功能或算法 ……案例 A類應對——drv.c需 局部改變,接口不變 ?實例分析 B類應對——drv.c 改變,hal 不變 ?實例分析 C類應對——設計支持協(xié)議的新增與適配 ?實例分析 D類應對——自底向上,逐級優(yōu)化設計 ?實例分析 【精講全過程】有代碼,有每一步修改 一個單片機軟件:架構優(yōu)化+代碼重構全過程 a)全新的模塊化 b)模塊的水平分層 c)模塊的跨層封裝 d)“狀態(tài)機+可配置”常用做法 |
模塊接口的漂亮設計——搞定Call/Callback/Msg接口(第二天) 嵌軟架構師的崗位能力 合格:Call接口設計 優(yōu)秀:搞定Call/Callback/Msg接口 牛人:接口支持任務或處理的運行時注冊/注銷 【講案例】漂亮接口設計實例觀摩 a)經(jīng)典Callback接口設計 b)基于注冊的Callback接口設計 |
遠程協(xié)議的漂亮設計——搞定最復雜的交互(第二天) 嵌軟架構師的崗位挑戰(zhàn) a)協(xié)議設計,對許多架構師是挑戰(zhàn) a)影響大:影響到多個程序/多個團隊 b)設計難:不容易設計滿意 【講技術】協(xié)議設計思路 How to:接口過程設計 How to:接口技術選擇 How to:接口格式定義 【講案例】牛案例示范協(xié)議設計難點 案例一:“交互復雜型”協(xié)議設計范例——精髓精講 案例二:“通用規(guī)范型”協(xié)議設計范例——精髓精講 |