一、底層軟件開發(fā)介紹
1 底層軟件主要內(nèi)容
底層軟件開發(fā)內(nèi)容有:一方面是設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn),基于主芯片有:底層驅(qū)動(dòng)PORTS,ADC,PWM,SPI,CAN,SENT等,基于外圍芯片的復(fù)雜驅(qū)動(dòng)。
另一方面基礎(chǔ)功能的開發(fā),bootloader開發(fā),操作系統(tǒng)RTOS,存儲(chǔ)管理,故障診斷,通訊和網(wǎng)絡(luò)安全等功能。

2 底層軟件開發(fā)基礎(chǔ)
對(duì)于上述的底層軟件開發(fā)內(nèi)容,若要深入的話,一是要能看懂芯片手冊(cè),熟悉所使用芯片提供的資源 ,包括多核定義,內(nèi)存分配情況(包括RAM和ROM/FLASH/EEPROM),ADC模塊,GTM模塊和通訊模塊等等;二是要掌握常用的標(biāo)準(zhǔn)與協(xié)議,包括OSEK標(biāo)準(zhǔn)(操作系統(tǒng)相關(guān)),14229協(xié)議和15765協(xié)議(診斷,刷寫相關(guān)),XCP協(xié)議(標(biāo)定相關(guān))和 11989協(xié)議(CAN通訊相關(guān))等;三是要掌握C語言編程,ECU底層軟件使用該語言進(jìn)行開發(fā)。

3 底層軟件開發(fā)工具
底層軟件開發(fā)最常用的工具有勞特巴赫TRACE32和Vector三件套(Canlyzer, CANape,CANoe)。其中,勞特巴赫調(diào)試工具提供了嵌入式開發(fā)全生命周期的支持, 覆蓋了Pre-Silicon,芯片Bring-Up, Bootloader、 Firmware的開發(fā),OS和App的調(diào)試,以及后續(xù)的軟件測(cè)試等過程。
舉一個(gè)簡(jiǎn)單應(yīng)用,比如開發(fā)者使用勞特巴赫實(shí)時(shí)跟蹤代碼的運(yùn)行狀態(tài),觀察一些調(diào)試資源,像寄存器、內(nèi)存、C源碼、變量等等,這樣就可以識(shí)別開發(fā)的功能是否滿足設(shè)計(jì)要求。
而Vector工具的話:對(duì)于CANlyzer,一方面可以模擬報(bào)文節(jié)點(diǎn),發(fā)送或接收?qǐng)?bào)文,以此來驗(yàn)證通訊或診斷功能,另一方面通過CAPL語言可設(shè)計(jì)一個(gè)模擬環(huán)境來測(cè)量或驗(yàn)證所開發(fā)的功能。對(duì)于CANape,一方面可以實(shí)時(shí)監(jiān)測(cè)TCU的內(nèi)外部變量,另一個(gè)方面還可以改變標(biāo)定變量的數(shù)值。

熟悉了上述的兩類工具,底層軟件所涉及的測(cè)試和驗(yàn)證工作就基本沒問題。
二、應(yīng)用層軟件開發(fā)介紹
1.應(yīng)用層軟件概述
相對(duì)于底層軟件,應(yīng)用層軟件偏向于解決車輛的實(shí)際駕駛工況和應(yīng)用場(chǎng)景問題,以及通過精妙的控制算法或策略實(shí)現(xiàn)零部件的精準(zhǔn)控制。應(yīng)用層軟件一般從底層軟件獲取來自傳感器或CAN通訊的輸入數(shù)據(jù),通過自身復(fù)雜而有效的策略和算法計(jì)算或決策出控制目標(biāo),輸出給底層軟件最終去驅(qū)動(dòng)執(zhí)行器。比如電機(jī)控制器,根據(jù)當(dāng)前油門或制動(dòng),坡度,車速等數(shù)據(jù),識(shí)別出車輛現(xiàn)在處于什么工況,再根據(jù)工況的特性,是加速還是減速,是急加速還是急減速等特性,計(jì)算出電機(jī)的目標(biāo)轉(zhuǎn)速和目標(biāo)扭矩,然后基于電機(jī)特性Map,確定目標(biāo)電流或電壓,最終驅(qū)動(dòng)電機(jī),以此精準(zhǔn)控制電機(jī)運(yùn)轉(zhuǎn)。通過這個(gè)例子,也不難發(fā)現(xiàn),要做好應(yīng)用層軟件有幾點(diǎn)要求:
1) 深入理解控制對(duì)象所應(yīng)用的場(chǎng)景,車輛有不同的駕駛工況,比如加速超車,制動(dòng)回饋,自動(dòng)巡航,自動(dòng)泊車等。在這些場(chǎng)景下,我們一方面要深入理解控制對(duì)象的應(yīng)用狀況,另一方面也要處理不同駕駛工況如何相互切換;
2)深入了解控制對(duì)象的實(shí)際特性,以電機(jī)為例,電機(jī)特性Map圖(轉(zhuǎn)速-扭矩-功率),電機(jī)特性受溫度等因素的影響情況;
3)深入掌握控制對(duì)象的基礎(chǔ)知識(shí),還以電機(jī)為例,電機(jī)的基本控制方法,電機(jī)驅(qū)動(dòng)控制原理,車輛運(yùn)動(dòng)學(xué)理論等。
2 應(yīng)用層軟件的開發(fā)工具
當(dāng)前應(yīng)用層軟件的開發(fā)工具,在國(guó)內(nèi)最流行的應(yīng)該是Mathworks公司的Matlab+Simulink+Stateflow, 以前在德企會(huì)用Matlab+targetlink+stateflow, 像博世還有自己的開發(fā)工具。像當(dāng)下自動(dòng)駕駛的應(yīng)用層,有很多公司會(huì)采用代碼開發(fā),像C、C++等,不過這里提到的都是基于模型的應(yīng)用層軟件開發(fā)。
相對(duì)于底層軟件,應(yīng)用層軟件偏向于解決車輛的實(shí)際駕駛工況和應(yīng)用場(chǎng)景問題,以及通過精妙的控制算法或策略實(shí)現(xiàn)零部件的精準(zhǔn)控制。應(yīng)用層軟件一般從底層軟件獲取來自傳感器或CAN通訊的輸入數(shù)據(jù),通過自身復(fù)雜而有效的策略和算法計(jì)算或決策出控制目標(biāo),輸出給底層軟件最終去驅(qū)動(dòng)執(zhí)行器。比如電機(jī)控制器,根據(jù)當(dāng)前油門或制動(dòng),坡度,車速等數(shù)據(jù),識(shí)別出車輛現(xiàn)在處于什么工況,再根據(jù)工況的特性,是加速還是減速,是急加速還是急減速等特性,計(jì)算出電機(jī)的目標(biāo)轉(zhuǎn)速和目標(biāo)扭矩,然后基于電機(jī)特性Map,確定目標(biāo)電流或電壓,最終驅(qū)動(dòng)電機(jī),以此精準(zhǔn)控制電機(jī)運(yùn)轉(zhuǎn)。通過這個(gè)例子,也不難發(fā)現(xiàn),要做好應(yīng)用層軟件有幾點(diǎn)要求:
1) 深入理解控制對(duì)象所應(yīng)用的場(chǎng)景,車輛有不同的駕駛工況,比如加速超車,制動(dòng)回饋,自動(dòng)巡航,自動(dòng)泊車等。在這些場(chǎng)景下,我們一方面要深入理解控制對(duì)象的應(yīng)用狀況,另一方面也要處理不同駕駛工況如何相互切換;
2)深入了解控制對(duì)象的實(shí)際特性,以電機(jī)為例,電機(jī)特性Map圖(轉(zhuǎn)速-扭矩-功率),電機(jī)特性受溫度等因素的影響情況;
3)深入掌握控制對(duì)象的基礎(chǔ)知識(shí),還以電機(jī)為例,電機(jī)的基本控制方法,電機(jī)驅(qū)動(dòng)控制原理,車輛運(yùn)動(dòng)學(xué)理論等。
3 應(yīng)用層軟件的開發(fā)工具
當(dāng)前應(yīng)用層軟件的開發(fā)工具,在國(guó)內(nèi)最流行的應(yīng)該是Mathworks公司的Matlab+Simulink+Stateflow, 以前在德企會(huì)用Matlab+targetlink+ stateflow, 像博世還有自己的開發(fā)工具。像當(dāng)下自動(dòng)駕駛的應(yīng)用層,有很多公司會(huì)采用代碼開發(fā),像C、C++等,不過這里提到的都是基于模型的應(yīng)用層軟件開發(fā)。

就是先根據(jù)詳細(xì)設(shè)計(jì)方案搭建模型,再基于開發(fā)工具所提供自動(dòng)生成代碼配置,將所有模型自動(dòng)生成C代碼;生成的應(yīng)用層軟件代碼和底層代碼一起編譯執(zhí)行,生成可供ECU執(zhí)行運(yùn)行的文件,比如s19,Hex,Bin等格式;最終通過刷寫工具將軟件燒錄到ECU相應(yīng)的內(nèi)存空間,啟動(dòng)ECU就可以實(shí)時(shí)運(yùn)行軟件,執(zhí)行相應(yīng)的功能。

審核編輯:湯梓紅
電子發(fā)燒友App


















評(píng)論