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