《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于AutoSAR規(guī)范的驅動代碼生成工具箱設計與實現(xiàn)
基于AutoSAR規(guī)范的驅動代碼生成工具箱設計與實現(xiàn)
來源:電子技術應用2012年第7期
馮輝宗,劉先東,蔣建春,邱寶梅
重慶郵電大學 重慶高校汽車電子與嵌入式系統(tǒng)工程研究中心,重慶400065
摘要: 針對汽車控制器中驅動代碼生成存在對硬件依賴性強、代碼格式不規(guī)范、可重用性不強等問題,提出利用仿真建模工具Simulink/RTW、結合AutoSAR規(guī)范、基于代碼生成技術的汽車控制器驅動工具箱的設計方法。通過對驅動配置模塊的不同芯片配置及對相關參數(shù)的設置滿足多處理器需求,依據(jù)AutoSAR規(guī)范對驅動函數(shù)接口的封裝實現(xiàn)代碼的可重用性。最后將設計的驅動工具箱結合代碼生成模板應用于BCM車窗控制系統(tǒng),實驗證明了該方法的高效性和可行性。
中圖分類號: TP316.2
文獻標識碼: A
文章編號: 0258-7998(2012)07-0033-04
Design and implementation of the driver code generation toolbox based on AutoSAR
Feng Huizong,Liu Xiandong,Jiang Jianchun,Qiu Baomei
Engineering Research Center of Automotive Electron and Embeded System, Chongqing University of Posts and Telecommunications, Chongqing 400065,China
Abstract: According to the problems of code generation in the driver of auto controller, such as depending on hardware strongly,code format not standard, reusability not strong and so on, this paper puts forward a kind of designing method of the driver toolbox of auto controller using the simulation modeling tools Simulink/RTW, combining with AutoSAR norms,based on code generation. In designing process, it meets many processors through different chips configuration and the related parameters settings of the drive configuration module, and realizes the code reusability through the encapsulation of driver function interface according to AutoSAR norms. Finally, the designed driver toolbox is used in BCM windows control system, combining with the code generation template, and the experimental results proves the high efficiency and feasibility of this method.
Key words : code generation;the drive toolbox;AutoOSAR;Simulink/RTW

    隨著汽車電子的飛速發(fā)展和代碼自動生成技術的出現(xiàn),汽車電子控制系統(tǒng)實現(xiàn)了從建模、仿真到代碼自動生成的一體化開發(fā), 極大提高了生成代碼的效率、通用性及可移植性[1]。但是,汽車控制系統(tǒng)中驅動代碼卻依賴于特定的硬件與運行環(huán)境,主要還是以手工編寫代碼為主[2]。這種手工編寫代碼的方法存在大量的重復勞動,且代碼無法規(guī)范統(tǒng)一,可重用性不強、可讀性差。

    所以,設計一款可以兼容多款處理器的驅動代碼工具,生成統(tǒng)一性、規(guī)范性和開發(fā)性代碼成為行業(yè)發(fā)展的趨勢。當前在汽車行業(yè)應用最廣的是德國dSPACE公司的Targetlink代碼生成工具和Mathworks公司的RTW代碼生成工具[3]。本文采用Matlab/Simulnik/RTW工具設計并實現(xiàn)了基于代碼生成技術的驅動工具箱,實現(xiàn)了汽車電控系統(tǒng)中驅動代碼生成的可靠性、安全性、高效性及可移植性。
1 AutoSAR規(guī)范驅動接口
    汽車開放式系統(tǒng)架構標準AutoSAR(AuTomotive Open System ARchitecture),主要可分為三層:應用層、運行時環(huán)境和基礎軟件。其中基礎軟件又包括系統(tǒng)服務、ECU抽象層和uC抽象層,所有驅動程序都包含在uC抽象層和ECU抽象層中。
    本文依據(jù)AutoSAR規(guī)范中ECU抽象層和uC抽象層中硬件接口標準編寫驅動程序,組成驅動資源庫[4]。驅動程序按照硬件功能特點可分為四類:通用I/O硬件驅動、通信硬件驅動、存儲硬件驅動和微控制器驅動。其內容與結構如圖1所示。

    AutoSAR規(guī)范定義了汽車電控單元硬件驅動程序的接口規(guī)范,把驅動函數(shù)進行了標準化和模塊化,為驅動工具箱開發(fā)應用奠定了良好的基礎。
2 驅動代碼生成工具箱的設計與實現(xiàn)
2.1 設計方法

    在Simulink/RTW平臺上設計基于AutoSAR規(guī)范的驅動代碼生成工具箱是通過建立S函數(shù)模塊配置參數(shù)并設計封裝入庫[5]來實現(xiàn)的。驅動工具箱的設計流程如圖2所示,具體內容如下:

    (1)分析AutoSAR規(guī)范中驅動函數(shù)接口標準的內容,確定驅動應用代碼的內容。
    (2)分析汽車電控系統(tǒng)中驅動代碼的需求,確定驅動應用代碼的格式。
    (3)根據(jù)規(guī)范和需求確定驅動工具箱的設計方案,設計驅動工具箱為驅動配置功能模塊和驅動API功能模塊兩大類。
    (4)編寫S函數(shù),實現(xiàn)驅動配置功能模塊和驅動API功能模塊的參數(shù)變量。
    (5)在Simulink平臺上建立S函數(shù)模塊并添加各功能模塊的參數(shù)變量。
    (6)設計和封裝S函數(shù)模塊內容及格式,實現(xiàn)驅動功能模塊的功能和創(chuàng)建驅動工具箱并添加到Simulink庫中。
    (7)依據(jù)驅動工具箱的功能編寫代碼生成模板,實現(xiàn)驅動應用代碼自動生成。
2.2 實現(xiàn)
    下面以驅動ADC模塊的實現(xiàn)為例詳細介紹驅動工具箱模塊的實現(xiàn)方法。
    依據(jù)驅動工具箱的設計方案可知,驅動ADC功能模塊分為配置模塊和API模塊。ADC配置模塊實現(xiàn)不同處理器初始化配置;API模塊(即ADC驅動函數(shù)模塊)實現(xiàn)驅動函數(shù)接口的配置及函數(shù)的調用。ADC功能模塊實現(xiàn)的主要步驟及內容如表1所示。

    ADC驅動模塊庫中配置模塊通過初始化相關參數(shù)的配置,實現(xiàn)不同處理器下驅動ADC使用時其相關的頭文件包含、配置文件生成、初始化結構體參數(shù)配置及ADC的API開關定義。ADC驅動API模塊由API函數(shù)接口變量的配置實現(xiàn)驅動函數(shù)與控制算法的無縫連接,并配置函數(shù)體參數(shù)實現(xiàn)API函數(shù)的正確調用。
    各驅動模塊設計封裝好后添加到Simulink庫中就完成了驅動工具箱的設計。圖3是驅動代碼生成工具箱各功能模塊的結構圖。

3 驅動工具箱代碼生成模板的設計與實現(xiàn)
    代碼生成模板基于模塊TLC設計,其主要功能是驅動函數(shù)初始化代碼的實現(xiàn)和API函數(shù)調用代碼的實現(xiàn)[5]。
3.1 設計
    基于RTW的代碼生成工具設計驅動工具箱代碼生成模板,主要包含系統(tǒng)目標TLC和驅動模塊TLC。系統(tǒng)目標TLC在Matlab7.1版系統(tǒng)目標osekworks.tlc基礎上修改,修改TLC組件的包含及相關文件名即可[6]。驅動工具箱代碼生成模板結構圖如圖4所示。

 

 

    驅動配置模塊TLC實現(xiàn)驅動初始化部分代碼的生成,驅動API模塊實現(xiàn)驅動函數(shù)調用代碼的生成。下面結合這兩類功能模塊TLC介紹驅動工具箱代碼生成模板的設計。
    (1)驅動配置模塊TLC的設計
    驅動配置模塊TLC結合配置模塊參數(shù)生成關聯(lián)芯片選擇的驅動初始化相關代碼,其主要內容可以分為三大部分,具體內容如下:
    ①頭文件包含代碼。TLC文件中由條件判斷語句判斷文件包含命令,再由TLC中文件內插入代碼語句實現(xiàn)頭文件包含代碼。
    ②配置文件與API開關代碼。TLC中首先判斷芯片選擇內容,再由配置文件生成語句實現(xiàn)對應的配置文件生成,最后在生成的配置文件中添加對應選擇芯片的驅動API開關代碼內容。
    ③用戶自定義函數(shù)與驅動初始化函數(shù)代碼。用戶自定義函數(shù)包含驅動初始化函數(shù)、實現(xiàn)用戶自定義驅動初始化函數(shù)功能。用戶自定義函數(shù)代碼包含main函數(shù)中的函數(shù)調用、頭文件中函數(shù)的聲明、源文件中函數(shù)體的定義等內容。驅動初始化結構體參數(shù)和初始化函數(shù)內嵌到自定義函數(shù)定義里。
    (2)驅動API模塊TLC的設計
    按照API模塊代碼生成模板功能,驅動API模塊TLC要實現(xiàn)的是API函數(shù)的調用代碼和函數(shù)返回值傳遞。API函數(shù)調用代碼包含函數(shù)及參數(shù)配置,在TLC中由獲取模塊參數(shù)值實現(xiàn)。函數(shù)返回值的傳遞由全局變量實現(xiàn),在配置文件中對全局變量進行定義聲明。
3.2 實現(xiàn)
    每個驅動模塊代碼生成模板實現(xiàn)方法都一致。下面以ADC為例分析驅動配置模塊TLC和驅動API模塊TLC介紹代碼生成模板的具體實現(xiàn)。
    (1)ADC驅動配置模塊TLC的實現(xiàn)
    ADC驅動模塊TLC內容分三部分,各部分通過條件選擇和配置文件實現(xiàn)與芯片選擇關聯(lián)。
    ①頭文件包含部分實現(xiàn)主要代碼如下:
    %assign
      c/hFile=LibCreateSourceFile("Source/Header","Custom,
"%<SFcnParamSettings.ObjFName>")
    %<LibSetSourceFileSection(c/hFile,"Functions",buffer)>
    //頭文件或者源文件生成代碼實現(xiàn)
      %openfile buffer
      #include&ldquo;adc_app.h&rdquo;
      %closefile buffer
      ②配置文件與API開關部分:在生成的配置文件中添加相關API開關,實現(xiàn)代碼如下:
      %openfile buffer
      %if SFcnParamSettings.Adc_GetVersionInfo_API==
"on"
    #define ADC_GET_VERSION_INFO_API STD_ON
    &hellip;&hellip;.//各驅動API開關添加
    %closefile buffer
    ③配置文件與驅動初始化配置:在生成的配置文件中添加驅動初始化代碼,實現(xiàn)代碼如下:
    %openfile buffer
    void %<SFcnParamSettings.APPFcnName>()
    {const Adc_ConfigType
    %<SFcnParamSettings.Adc_Config>={
    ADC驅動初始化結構體參數(shù)代碼};
    Adc_Init(&%<SFcnParamSettings.Adc_Config>);}
    %closefilebuffer
    (2)ADC驅動API模塊TLC的實現(xiàn)
    驅動API模塊TLC中主要是函數(shù)參數(shù)配置與返回值傳遞,具體實現(xiàn)代碼如下:
    %openfile buffer
    Extern%<SFcnParamSettings.DataBufferType>
    %closefile buffer
    在生成源文件中插入以下代碼實現(xiàn)全局變量定義:
    %openfile buffer
    %<SFcnParamSettings.DataBufferName>={0};
    %closefile buffer
4 驅動代碼生成工具箱的應用
    驅動工具箱應用于BCM車窗控制系統(tǒng)中,實現(xiàn)車窗控制系統(tǒng)中驅動代碼的自動生成。
    車窗控制系統(tǒng)中需要驅動的有兩部分:車窗控制函數(shù)的輸入信號由ADC采樣獲??;車窗控制函數(shù)輸出信號由DIO或者PORT實現(xiàn)對目標ECU管腳的輸出,完成對車窗的驅動。
    使用Real-Time Workshop將Simulink模型轉化為代碼時,編譯器通過系統(tǒng)目標TLC并調用模塊對應的TLC文件,最終生成滿足目標ECU的C語言代碼。下面是RTW中驅動應用于車窗控制模型代碼自動生成的三個步驟:
    第一步:修改Matlab中系統(tǒng)目標TLC文件osekworks.tlc。
    第二步:配置模型參數(shù)配置對話框中的標簽頁對其中幾個標簽頁進行設置。
    (1)Solver:設置Solver類型為離散(discrete)固定步長(Fixed-step);
    (2)Real-Time Workshop:在該標簽頁中填寫系統(tǒng)目標osekworks.tlc,調用對應的模塊TLC文件來生成代碼。
    第三步:代碼自動生成。 點擊Real-Time Workshop中的GenerateCode可以直接生成代碼。
    從代碼生成報告中可看出,驅動應用部分代碼主要體現(xiàn)在包含驅動初始化代碼的配置文件和調用驅動API函數(shù)的車窗控制算法代碼文件中。下面是兩部分的驅動應用代碼生成的結果。
    (1)Adc_App.c文件中ADC驅動初始化部分:
    #include "Adc_App.h"
    uint16 DataBufferPtr_FR[1]= { 0 };
    void Adc_APP_Init_FR()
        {const Adc_ConfigType Adc_Config= {
        ADC_CHANNEL_3,
        &hellip;&hellip;};//結構體參數(shù)配置
        Adc_Init(&Adc_Config);
    (2)車窗控制scan_MR_window_SW中ADC驅動應用:
    unsigned char scan_MR_window_SW(old_AD)
    {unsigned int AD_value,status;
    Adc_APP_Init_MR();
    Adc_SetupResultBuffer(ADC_GROUP_2,DataBuffer Ptr_MR);    本文采用Matlab/Simulink/RTW工具,結合AutoSAR驅動規(guī)范,提出了一種基于代碼生成技術的汽車電子底層驅動工具箱的設計方法。該方法能屏蔽芯片硬件特性的差異性,滿足不同硬件處理器要求。通過BCM車窗控制模型對驅動的應用,實現(xiàn)了代碼的自動生成??焖偬鎿Q控制模型中的被控對象,極大地方便了汽車電子嵌入式控制系統(tǒng)底層驅動代碼的應用,提高了汽車電子控制系統(tǒng)的開發(fā)效率。
參考文獻
[1] 齊振恒,孫中杰,李濤.RTW嵌入式代碼自動生成機制與代碼結構分析[J].計算機測量與控制,2010,18(3):639-642.
[2] 鄢化彪.構建RTW下的嵌入式系統(tǒng)開發(fā)環(huán)境.單片機與嵌入式系統(tǒng)應用[J].2007(1):72-73.
[3] Real-Time workshop for use with Simulink[M].The Mathworks Inc.1999:5-26.
[4] 王安軍,蔣建春,陳培然.符合AUTOSAR 規(guī)范的底層驅動軟件開發(fā)[J].計算機工程,2011(9):62-64、67.
[5] 陳永春.從Matlab/Simulink模型到代碼實現(xiàn)[M].北京:清華大學出版社,2002:180-200.
[6] Hu Jinhui,Hu Dabin,Xiao Jianbo.Study of real-time simulation system based on RTW and Its application in warship simulator[C].Conference on Electronic Measurement  & Instruments,2009:966-970.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美无乱码久久久免费午夜一区 | 欧美二区乱c少妇| 欧美一区二区三区在线观看 | 老司机免费视频一区二区三区| 久久国产欧美| 性亚洲最疯狂xxxx高清| 亚洲伊人久久综合| 亚洲视频中文| 亚洲一区二区三区高清| 中文无字幕一区二区三区| 99精品国产在热久久下载| 亚洲精品资源美女情侣酒店| 亚洲欧洲一区二区三区久久| 亚洲国内自拍| 亚洲激情网站| 亚洲人成在线观看| 日韩视频一区二区三区| 一本色道久久综合| 亚洲欧美国产日韩中文字幕 | 欧美在线视频不卡| 久久成人综合视频| 久久免费一区| 美女尤物久久精品| 男同欧美伦乱| 欧美日韩亚洲国产精品| 欧美性做爰毛片| 国产欧美不卡| 激情综合亚洲| 亚洲精选视频免费看| 夜夜嗨av一区二区三区四季av| 一区二区三区精品视频| 亚洲欧美另类在线观看| 亚洲第一成人在线| 亚洲精品女av网站| 亚洲午夜三级在线| 欧美在线观看视频| 久久综合久久综合这里只有精品| 欧美二区视频| 国产精品久久久久久久浪潮网站| 国产精品日日摸夜夜摸av| 国产一区999| 亚洲国产精品精华液2区45 | 久久精品国产亚洲一区二区三区| 亚洲国产成人久久综合一区| 亚洲毛片播放| 香蕉久久夜色精品| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩第一区| 国产精品爽爽ⅴa在线观看| 国产综合色产| 亚洲精品中文字幕有码专区| 亚洲欧美精品在线观看| 亚洲国产成人精品久久久国产成人一区| 国产精品女主播一区二区三区| 欧美视频在线一区| 国产午夜精品一区二区三区欧美 | 黄色精品免费| 亚洲精品久久久久久一区二区| 亚洲伊人色欲综合网| 亚洲国产日韩美| 在线亚洲欧美| 久久久综合免费视频| 欧美少妇一区| 精品成人一区二区| 亚洲小说区图片区| 亚洲国产成人av好男人在线观看| 亚洲午夜一区二区三区| 久久综合伊人77777尤物| 欧美日韩一区二区视频在线| 狠狠综合久久av一区二区小说| 99精品国产一区二区青青牛奶| 久久国产精品99久久久久久老狼| 在线视频日韩| 男人插女人欧美| 国产深夜精品| 一区二区三区黄色| 亚洲剧情一区二区| 久久久综合香蕉尹人综合网| 国产精品二区三区四区| 亚洲丰满少妇videoshd| 翔田千里一区二区| 亚洲一区国产精品| 欧美精品久久99久久在免费线| 国产亚洲精品bt天堂精选| 99视频超级精品| 亚洲精品视频在线观看网站| 久久久青草婷婷精品综合日韩| 国产精品成人一区二区网站软件| 久久久久这里只有精品| 欧美第一黄色网| 国产午夜精品一区二区三区视频| 99热这里只有成人精品国产| 亚洲精品少妇30p| 久久久久久久一区二区| 国产精品视频午夜| 这里只有精品视频| 在线午夜精品| 欧美激情乱人伦| 在线国产亚洲欧美| 久久精品国产欧美亚洲人人爽| 欧美一级播放| 国产精品卡一卡二卡三| 99精品热视频| 亚洲美女啪啪| 欧美国产视频日韩| 在线电影一区| 亚洲国产成人久久| 久久综合中文| 精品999日本| 久久精品盗摄| 久久一区激情| 精品va天堂亚洲国产| 久久精品一区二区三区四区| 久久精品亚洲国产奇米99| 国产精品综合| 亚洲欧美国产高清va在线播| 午夜欧美不卡精品aaaaa| 欧美性猛片xxxx免费看久爱| 99成人在线| 亚洲影院高清在线| 国产精品久久国产精品99gif | 欧美一区二区日韩一区二区| 亚洲图片欧美日产| 午夜精品亚洲| 久久精品九九| 国内自拍一区| 亚洲国产精品一区制服丝袜| 乱人伦精品视频在线观看| 黄色成人av网| 91久久精品国产| 欧美久久久久久久久| 亚洲精品影视| 亚洲综合欧美日韩| 国产欧美日韩一区| 欧美有码在线视频| 欧美成人在线免费观看| 91久久精品国产91久久| 亚洲一级在线| 国产麻豆日韩| 亚洲国产精品t66y| 欧美另类在线播放| 亚洲婷婷国产精品电影人久久| 欧美一区二区视频免费观看| 国内精品久久久久久久果冻传媒 | 欧美精品一区二区精品网| 日韩视频在线一区| 亚洲男女自偷自拍图片另类| 国产日韩欧美制服另类| 久久精品亚洲一区二区三区浴池| 欧美大片在线观看一区| 亚洲精品视频啊美女在线直播| 亚洲深爱激情| 国产午夜一区二区三区| 91久久精品久久国产性色也91| 欧美精品123区| 亚洲欧美另类综合偷拍| 久久综合九色综合网站| 亚洲精品国产精品国产自| 亚洲一区免费网站| 国产视频一区在线观看| 亚洲片在线观看| 在线亚洲精品| 亚洲欧美成人一区二区在线电影| 国产婷婷97碰碰久久人人蜜臀| 亚洲国产精品久久久久| 欧美日韩不卡合集视频| 亚洲一区二区在线视频| 久久亚洲高清| 日韩一级在线观看| 久久久久久久久一区二区| 亚洲欧洲日产国产网站| 香蕉成人久久| 亚洲国产精品久久人人爱蜜臀| 亚洲一区国产视频| 精品福利av| 亚洲欧美一区二区视频| 在线观看福利一区| 亚洲一区视频在线| 精品盗摄一区二区三区| 亚洲欧美另类久久久精品2019| 一区在线免费| 亚洲欧美第一页| 91久久在线观看| 久久九九全国免费精品观看| 亚洲国产影院| 久久久久久亚洲精品中文字幕 | 国产欧美日韩一区二区三区| 亚洲狼人综合| 国产性色一区二区| 亚洲视频在线免费观看| 在线日韩一区二区| 亚洲一级特黄| 亚洲国产欧美日韩| 久久久不卡网国产精品一区| 亚洲免费成人| 免费亚洲电影在线| 欧美亚洲一区二区在线| 久久er精品视频| 欧美日一区二区在线观看| 久久国产精品99国产精|