亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        汽車控制器開(kāi)發(fā)中定點(diǎn)接口與浮點(diǎn)模型的結(jié)合

        2012-08-27 08:32:50王海濱周宇星朱明張?jiān)?/span>
        關(guān)鍵詞:浮點(diǎn)數(shù)數(shù)據(jù)類型底層

        王海濱,周宇星,朱明,張?jiān)?/p>

        (上海汽車集團(tuán)股份有限公司 技術(shù)中心,上海201804)

        引 言

        在現(xiàn)代的汽車電子控制器開(kāi)發(fā)中,普遍采用了國(guó)際知名供應(yīng)商開(kāi)發(fā)的硬件控制器和包括Bootloader、符合OSEK標(biāo)準(zhǔn)的實(shí)時(shí)操作系統(tǒng),以及底層硬件驅(qū)動(dòng)等底層軟件,并提供相應(yīng)的軟件接口層給上層控制策略應(yīng)用軟件。但根據(jù)底層軟件因不同的硬件設(shè)計(jì)而不同的特點(diǎn),以及考慮到代碼執(zhí)行效率的原因,多采用定點(diǎn)手寫(xiě)代碼來(lái)完成。

        而隨著微電子技術(shù)的不斷進(jìn)步和電子芯片價(jià)格的不斷下降,越來(lái)越多的控制器已支持32位帶浮點(diǎn)數(shù)運(yùn)算單元的解決方案,這就為基于模型的控制算法的開(kāi)發(fā)提供了廣闊空間。

        1 ISO 26262三層安全架構(gòu)

        1.1 架構(gòu)簡(jiǎn)介

        在最新的ISO 26262(汽車行業(yè)功能安全標(biāo)準(zhǔn))中對(duì)控制器的三層安全架構(gòu)要求如下:

        ①Level1實(shí)現(xiàn)動(dòng)力系統(tǒng)管理功能,如轉(zhuǎn)換動(dòng)力系統(tǒng)請(qǐng)求扭矩、零部件監(jiān)控、輸入/輸出變量診斷及在錯(cuò)誤確認(rèn)時(shí)控制系統(tǒng)響應(yīng)。

        ②Level2負(fù)責(zé)監(jiān)控Level1功能軟件缺陷,如監(jiān)控計(jì)算的扭矩值或車輛的加速度值,如果檢測(cè)到此類錯(cuò)誤將觸發(fā)系統(tǒng)錯(cuò)誤。

        ③Level3監(jiān)控模塊獨(dú)立于Level2和Level1,通過(guò)應(yīng)答機(jī)制監(jiān)控Level2和Level1層軟件是否正常運(yùn)行,如錯(cuò)誤發(fā)生將觸發(fā)獨(dú)立于功能控制器的系統(tǒng)錯(cuò)誤。

        1.2 ISO 26262在扭矩監(jiān)控軟件的應(yīng)用

        根據(jù)ISO 26262三層安全架構(gòu)的闡述,第二層負(fù)責(zé)監(jiān)控第一層與安全相關(guān)的功能,與安全相關(guān)的輸入變量的值在被第一層軟件讀取的同時(shí)也要被第二層監(jiān)控軟件讀取,且要有冗余備份。例如,通過(guò)監(jiān)控計(jì)算的或車輛加速時(shí)的扭矩輸出,當(dāng)?shù)诙颖O(jiān)控模塊計(jì)算扭矩與第一層功能層計(jì)算扭矩不一致時(shí),會(huì)引起控制系統(tǒng)故障響應(yīng)。

        根據(jù)以上安全相關(guān)需求,在設(shè)計(jì)扭矩監(jiān)控模塊TQM時(shí),極大地提高了對(duì)參與計(jì)算的輸入/輸出變量的安全性的要求,由此引入了安全內(nèi)存(Safety RAM)。下面首先介紹底層軟件中基于定點(diǎn)數(shù)的安全內(nèi)存的實(shí)現(xiàn)原理。

        2 基于定點(diǎn)數(shù)的安全內(nèi)存應(yīng)用

        2.1 安全內(nèi)存工作原理

        與安全有關(guān)的RAM 中的數(shù)據(jù)在防止信息丟失、讀寫(xiě)能力的保護(hù)等方面需要額外的保護(hù)?;谶@個(gè)原因,將雙倍的RAM 內(nèi)存區(qū)用于軟件比較和讀/寫(xiě)測(cè)試可大幅提高數(shù)據(jù)的安全性。地址空間在兩個(gè)內(nèi)存區(qū)域復(fù)制,原始數(shù)據(jù)存儲(chǔ)在第一個(gè)內(nèi)存區(qū)域,第二個(gè)內(nèi)存包含補(bǔ)充信息,將與第一塊內(nèi)存區(qū)并行訪問(wèn)。在輸出時(shí)比較兩塊內(nèi)存的數(shù)值,如果發(fā)現(xiàn)任何偏差,會(huì)產(chǎn)生一個(gè)復(fù)位。為了檢測(cè)特定類型的位錯(cuò)誤,在第二個(gè)內(nèi)存區(qū)域的數(shù)據(jù)存儲(chǔ)采用二進(jìn)制補(bǔ)碼的形式。一般安全內(nèi)存支持訪問(wèn)下列類型:不受中斷保護(hù)的訪問(wèn)類型、寫(xiě)入或讀取的安全內(nèi)存數(shù)據(jù)、中斷保護(hù)的訪問(wèn)類型。需要寫(xiě)入或讀取相關(guān)數(shù)據(jù)的安全保護(hù)。

        在當(dāng)前的底層,基于定點(diǎn)數(shù)接口說(shuō)明如下:存儲(chǔ)到安全內(nèi)存區(qū)變量定義,分為變量的源地址定義與補(bǔ)碼地址定義,分別存放在兩處非相鄰內(nèi)存區(qū);讀取存儲(chǔ)在安全內(nèi)存區(qū)的變量參與邏輯運(yùn)算的接口RdSafetyRam32(&Var),當(dāng)這個(gè)接口被調(diào)用時(shí)與存儲(chǔ)在源碼區(qū)與補(bǔ)碼區(qū)的值進(jìn)行比較,如發(fā)現(xiàn)任何不一致將導(dǎo)致系統(tǒng)錯(cuò)誤發(fā)生;存儲(chǔ)變量到安全內(nèi)存區(qū)接口函數(shù)為WrSafetyRam32(&Var,com_var),通用內(nèi)存區(qū)變量com_var的當(dāng)前值將分別存放到Safety RAM 區(qū)變量var的源碼地址區(qū)和補(bǔ)碼地址區(qū)。

        2.2 安全內(nèi)存接口典型應(yīng)用

        在關(guān)于安全內(nèi)存典型應(yīng)用的示例中,Var1為定義到安全內(nèi)存區(qū)的變量,同時(shí)在安全內(nèi)存補(bǔ)碼區(qū)定義了相同變量名,即用后綴Cpl加以區(qū)分的補(bǔ)碼。RdSaftyRam32(&Var)和WrSafetyRam32(&Var,Common_Var)兩個(gè)函數(shù)分別為讀32位變量和寫(xiě)32位變量的接口函數(shù)。在讀寫(xiě)兩個(gè)函數(shù)中完成變量Var的源碼與補(bǔ)碼的效驗(yàn)以確保示例中變量Var1的安全,從而提高整個(gè)扭矩監(jiān)控算法的安全等級(jí)。

        3 針對(duì)Simulink浮點(diǎn)扭矩監(jiān)控模塊的解決方案

        目前的實(shí)際情況是,底層軟件提供的接口API函數(shù)只支持uint8、uint16、uint32三種數(shù)據(jù)類型,對(duì)于定點(diǎn)數(shù)的操作完全沒(méi)有問(wèn)題??墒菍?duì)于基于Simulink模型生成的基于浮點(diǎn)數(shù)的C代碼,主要應(yīng)用single的數(shù)據(jù)類型就沒(méi)有辦法直接應(yīng)用安全內(nèi)存的接口函數(shù)了,以下是針對(duì)這個(gè)問(wèn)題的幾個(gè)解決方案的比較。

        3.1 強(qiáng)制類型轉(zhuǎn)換

        強(qiáng)制類型轉(zhuǎn)換為:

        結(jié)果會(huì)導(dǎo)致B精度損失,不能滿足工程需要。

        3.2 使用union數(shù)據(jù)類型

        上述代碼對(duì)應(yīng)的Matlab模型如圖1所示。

        圖1

        該方法通過(guò)應(yīng)用Simulink的S-Function,并通過(guò)修改相應(yīng)的代碼生成時(shí)的TLC腳本來(lái)實(shí)現(xiàn)。利用聯(lián)合體共享數(shù)據(jù)空間的方式來(lái)實(shí)現(xiàn)浮點(diǎn)數(shù)與定點(diǎn)數(shù)的轉(zhuǎn)換。但使用過(guò)程中需要定義大量的聯(lián)合體類型數(shù)據(jù),且這些變量經(jīng)RTW 代碼生成后為全局變量常駐內(nèi)存,占用大量的內(nèi)存空間,且代碼可讀性差,不適合應(yīng)用于量產(chǎn)控制器中。同時(shí),因?yàn)槠渥兞款愋投x也不夠靈活,比如定義32位數(shù)據(jù)類型需要定義一個(gè)聯(lián)合體,16位和8位數(shù)據(jù)類型則需要重新定義新的聯(lián)合體,給應(yīng)用Simulink完成算法開(kāi)發(fā)的工程師帶來(lái)不便。

        3.3 修改TLC代碼生成腳本

        應(yīng)用Simulink data store、data read、data write修改相應(yīng)的TLC代碼生成腳本。

        代碼對(duì)應(yīng)的Matlab模型如圖2所示。

        圖2

        3.4 三種方案優(yōu)劣比較

        對(duì)比方案3生成的代碼與安全內(nèi)存接口應(yīng)用的典型代碼,可以發(fā)現(xiàn)以下優(yōu)點(diǎn):

        典型代碼只能直接讀取uint32類型變量,而由方案3模型生成的代碼首先調(diào)用底層接口函數(shù),驗(yàn)證定義到安全內(nèi)存區(qū)的變量A 的源碼與二進(jìn)制補(bǔ)碼是否一致,接下來(lái)運(yùn)用C語(yǔ)言逗號(hào)運(yùn)算法將采用指針取地址的方式把定點(diǎn)數(shù)A 轉(zhuǎn)換成浮點(diǎn)數(shù)賦給變量Val_A。

        典型代碼把變量寫(xiě)入32位的接口時(shí)只能接受uint32的數(shù)據(jù)類型,而由方案3模型生成的代碼則是通過(guò)指針取地址的方式把浮點(diǎn)數(shù)Val_2轉(zhuǎn)換成定點(diǎn)數(shù)賦值給定義到Safety RAM 區(qū)的變量A,從而保證了變量精度沒(méi)有任何損失。

        方案3通過(guò)修改RTW 的TLC腳本來(lái)控制data store、data read、data write生成代碼,從而實(shí)現(xiàn)底層定點(diǎn)數(shù)和上層策略浮點(diǎn)數(shù)的結(jié)合,對(duì)于開(kāi)發(fā)控制算法的工程師為透明的。同時(shí),對(duì)于模型中用到的數(shù)據(jù)類型無(wú)任何限制,可根據(jù)開(kāi)發(fā)的需要隨意修改,而相對(duì)于產(chǎn)生的C 代碼數(shù)據(jù)類型定義,則體現(xiàn)為uint32、uint16、uint8 三種數(shù)據(jù)類型。

        方案創(chuàng)新地應(yīng)用了C語(yǔ)言中的逗號(hào)運(yùn)算符和取地址的方法,解決了數(shù)據(jù)安全性問(wèn)題,同時(shí)在存儲(chǔ)浮點(diǎn)數(shù)到定點(diǎn)數(shù),及讀取定點(diǎn)數(shù)到浮點(diǎn)數(shù)的過(guò)程中,變量無(wú)任何精度損失,很好地解決了上層基于浮點(diǎn)數(shù)的模型生成代碼和底層基于定點(diǎn)數(shù)接口的結(jié)合問(wèn)題,更重要的是解決了扭矩監(jiān)控功能模塊的數(shù)據(jù)安全性問(wèn)題。

        該方法對(duì)建模工程師和負(fù)責(zé)底層軟件與上層控制策略模型的工程師均無(wú)任何額外工作,提高了工作效率。

        目前該方法已在兩個(gè)項(xiàng)目中得到應(yīng)用,并取得了很好的應(yīng)用效果,可在類似的開(kāi)發(fā)中借鑒。

        結(jié) 語(yǔ)

        越來(lái)越多的國(guó)內(nèi)OEM 廠商已不滿足完全委托國(guó)際知名供應(yīng)商開(kāi)發(fā)電子控制系統(tǒng),而是逐漸開(kāi)始組建開(kāi)發(fā)團(tuán)隊(duì)開(kāi)發(fā)控制器的控制策略,同時(shí)委托國(guó)際知名供應(yīng)商開(kāi)發(fā)硬件和底層軟件。但開(kāi)發(fā)過(guò)程中很可能遇到底層軟件提供的接口與上層控制策略模型不匹配的情況,如本文遇到的扭矩監(jiān)控模型生成代碼為浮點(diǎn)數(shù)而底層軟件接口為定點(diǎn)數(shù)的情況。在這種情況下就需要工程師們用創(chuàng)新的方法來(lái)解決這一矛盾,以保證后續(xù)開(kāi)發(fā)得以順利進(jìn)行。

        [1]Brian W Kernighan,Dennis M Ritchie.C程序設(shè)計(jì)語(yǔ)言[M].北京:機(jī)械工業(yè)出版社,2004.

        [2]黃永安,馬路,劉慧敏.MATLAB 7.0/Simulink 6.0建模仿真開(kāi)發(fā)與高級(jí)工程應(yīng)用[M].北京:清華大學(xué)出版社,2005.

        [3]國(guó)際標(biāo)準(zhǔn)組織(ISO).ISO26262 規(guī)范汽車行業(yè)功能安全標(biāo)準(zhǔn),2010.

        猜你喜歡
        浮點(diǎn)數(shù)數(shù)據(jù)類型底層
        航天企業(yè)提升采購(gòu)能力的底層邏輯
        詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
        四種Python均勻浮點(diǎn)數(shù)生成方法
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
        在C語(yǔ)言中雙精度浮點(diǎn)數(shù)線性化相等比較的研究
        非精確浮點(diǎn)數(shù)乘法器設(shè)計(jì)
        回到現(xiàn)實(shí)底層與悲憫情懷
        略論“底層”
        雜文選刊(2013年7期)2013-02-11 10:41:11
        Visual Basic處理浮點(diǎn)DSP芯片數(shù)據(jù)的方法
        底層是一車煤
        亚洲成av人片在线观看www| 色噜噜亚洲精品中文字幕| 久久精品国产亚洲av成人文字| 久久久中日ab精品综合| 成熟人妻av无码专区| 国产精品一区二区三区精品| 丰满少妇av一区二区三区| 免费国产线观看免费观看| 亚洲美女又黄又爽在线观看| 久久99精品久久久66| 国产在线丝袜精品一区免费| 午夜无码国产18禁| 亚洲视频专区一区二区三区| 亚洲无线码一区二区三区| 国语对白做受xxxxx在线中国| 国产成人精品视频网站| 亚洲天堂久久午夜福利| 久久久av波多野一区二区| 日本一区二区精品88| 日本久久一区二区三区高清| 亚洲天堂成人av在线观看| 精品国产午夜理论片不卡| 亚洲AV激情一区二区二三区| 亚洲情精品中文字幕99在线| 亚洲乱码国产乱码精华| 日韩精品无码av中文无码版| 国产美女a做受大片免费| 亚洲女同av在线观看| 天堂网在线最新版www| 久久久久成人亚洲综合精品| 久久精品亚洲乱码伦伦中文| 色噜噜亚洲男人的天堂| 亚洲永久精品ww47| 无码熟妇人妻av在线c0930| 亚洲乱码中文字幕综合久久| 老少配老妇老熟女中文普通话| 国产精品九九热| 熟女少妇av一区二区三区| 中文字幕一精品亚洲无线一区| 国产99视频精品免费视频免里| 男女男生精精品视频网站|