利用多目標建模技術(shù)降低ECU軟件成本
圖2就是具有數據對象的工作區例子??梢再x于數據對象的數據屬性包括了初始值、數據類(lèi)型、存儲類(lèi)、描述、最小和最大值等。除此之外,還可以賦于定點(diǎn)屬性,如字長(cháng)度、小數長(cháng)度或二進(jìn)制小數點(diǎn)、有符號或無(wú)符號等等。使用數據對象進(jìn)行仿真和代碼生成的通用模型如圖3所示。這些例子描述的技術(shù)并不代表Visteon公司專(zhuān)有的產(chǎn)品數據或模型。
本文引用地址:http://dyxdggzs.com/article/82873.htm
圖2:數據字典例子。
圖3:通用模型例子。
在建立通用模型后,Visteon公司的軟件工程師就要為他們需要的目標架構創(chuàng )建并換成特定的數據字典,然后使用這個(gè)數據字典進(jìn)行仿真和代碼生成。然而,創(chuàng )建一個(gè)優(yōu)秀的定點(diǎn)數據字典需要花很長(cháng)的時(shí)間,這是因為在確定換算系數時(shí)需要做多方面的折衷考慮。工程師需要選擇能夠提供足夠精度但在已知范圍內的換算系數。如果換算系數的選擇不夠充分,那么當結果超過(guò)字長(cháng)時(shí)可能發(fā)生數字上溢或下溢。
在選擇換算系數時(shí)自動(dòng)換算工具被證明是非常有用的。這些工具能夠非常容易地確定仿真期間是否會(huì )發(fā)生上溢或下溢。圖4是來(lái)自Simulink定點(diǎn)用戶(hù)接口工具的輸出例子。在這個(gè)例子中,數據記錄顯示了仿真過(guò)程中信號獲得的最小和最大值。在這種情況下,所有信號都在范圍之內。如果發(fā)生上溢或飽和,數據記錄會(huì )標志這一事件,從而促使設計工程師調查問(wèn)題原因,并選擇新的正確的換算系數。
圖4:自動(dòng)換算工具和記錄結果例子。
如果需要額外的保護,設計師可以使用由Simulink在模塊參數對話(huà)框中提供的飽和設置在計算中增加上溢保護。飽和檢查對生成代碼的效率來(lái)說(shuō)非常重要,下面的結論部分將提到這一點(diǎn)。
產(chǎn)品ECU程序的結果
Visteon動(dòng)力系統實(shí)現了用于發(fā)動(dòng)機管理系統的產(chǎn)品化浮點(diǎn)和定點(diǎn)的應用。對開(kāi)發(fā)過(guò)程來(lái)說(shuō)最大的好處是顯著(zhù)減少了時(shí)間和成本。在有個(gè)案例中,Visteon公司在三個(gè)月內就完成了ECU軟件的開(kāi)發(fā),如果采用手工編碼方案的話(huà)起碼要6個(gè)月。
與人工編碼相比,浮點(diǎn)自動(dòng)代碼的效率也有所提高,使用的RAM和ROM空間要少5%左右。定點(diǎn)自動(dòng)代碼效率幾乎接近手工編碼效率。在對導航程序中定點(diǎn)代碼的初始分析過(guò)程中,Visteon公司將對前面討論過(guò)的飽和檢查進(jìn)行確認,這將對定點(diǎn)代碼效率起關(guān)鍵作用。如果每次定點(diǎn)計算都激活了飽和檢查,那么代碼長(cháng)度會(huì )有顯著(zhù)增加。然而,如果象在手工編碼中做的那樣只在需要時(shí)做飽和檢查,那么生成代碼所需的RAM和ROM空間基本上等于手工編碼所需的空間。
另外需要注意的是,為了確保獲得高質(zhì)量的代碼,開(kāi)發(fā)人員仍要使用靜態(tài)分析工具和MISRA檢查器對自動(dòng)代碼進(jìn)行檢查。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論