《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于AutoSAR規范的驅動代碼生成工具箱設計與實現
基于AutoSAR規范的驅動代碼生成工具箱設計與實現
來源:電子技術應用2012年第7期
馮輝宗,劉先東,蔣建春,邱寶梅
重慶郵電大學 重慶高校汽車電子與嵌入式系統工程研究中心,重慶400065
摘要: 針對汽車控制器中驅動代碼生成存在對硬件依賴性強、代碼格式不規范、可重用性不強等問題,提出利用仿真建模工具Simulink/RTW、結合AutoSAR規范、基于代碼生成技術的汽車控制器驅動工具箱的設計方法。通過對驅動配置模塊的不同芯片配置及對相關參數的設置滿足多處理器需求,依據AutoSAR規范對驅動函數接口的封裝實現代碼的可重用性。最后將設計的驅動工具箱結合代碼生成模板應用于BCM車窗控制系統,實驗證明了該方法的高效性和可行性。
中圖分類號: 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

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

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

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

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

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

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

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

 

 

    驅動配置模塊TLC實現驅動初始化部分代碼的生成,驅動API模塊實現驅動函數調用代碼的生成。下面結合這兩類功能模塊TLC介紹驅動工具箱代碼生成模板的設計。
    (1)驅動配置模塊TLC的設計
    驅動配置模塊TLC結合配置模塊參數生成關聯芯片選擇的驅動初始化相關代碼,其主要內容可以分為三大部分,具體內容如下:
    ①頭文件包含代碼。TLC文件中由條件判斷語句判斷文件包含命令,再由TLC中文件內插入代碼語句實現頭文件包含代碼。
    ②配置文件與API開關代碼。TLC中首先判斷芯片選擇內容,再由配置文件生成語句實現對應的配置文件生成,最后在生成的配置文件中添加對應選擇芯片的驅動API開關代碼內容。
    ③用戶自定義函數與驅動初始化函數代碼。用戶自定義函數包含驅動初始化函數、實現用戶自定義驅動初始化函數功能。用戶自定義函數代碼包含main函數中的函數調用、頭文件中函數的聲明、源文件中函數體的定義等內容。驅動初始化結構體參數和初始化函數內嵌到自定義函數定義里。
    (2)驅動API模塊TLC的設計
    按照API模塊代碼生成模板功能,驅動API模塊TLC要實現的是API函數的調用代碼和函數返回值傳遞。API函數調用代碼包含函數及參數配置,在TLC中由獲取模塊參數值實現。函數返回值的傳遞由全局變量實現,在配置文件中對全局變量進行定義聲明。
3.2 實現
    每個驅動模塊代碼生成模板實現方法都一致。下面以ADC為例分析驅動配置模塊TLC和驅動API模塊TLC介紹代碼生成模板的具體實現。
    (1)ADC驅動配置模塊TLC的實現
    ADC驅動模塊TLC內容分三部分,各部分通過條件選擇和配置文件實現與芯片選擇關聯。
    ①頭文件包含部分實現主要代碼如下:
    %assign
      c/hFile=LibCreateSourceFile("Source/Header","Custom,
"%<SFcnParamSettings.ObjFName>")
    %<LibSetSourceFileSection(c/hFile,"Functions",buffer)>
    //頭文件或者源文件生成代碼實現
      %openfile buffer
      #include&ldquo;adc_app.h&rdquo;
      %closefile buffer
      ②配置文件與API開關部分:在生成的配置文件中添加相關API開關,實現代碼如下:
      %openfile buffer
      %if SFcnParamSettings.Adc_GetVersionInfo_API==
"on"
    #define ADC_GET_VERSION_INFO_API STD_ON
    &hellip;&hellip;.//各驅動API開關添加
    %closefile buffer
    ③配置文件與驅動初始化配置:在生成的配置文件中添加驅動初始化代碼,實現代碼如下:
    %openfile buffer
    void %<SFcnParamSettings.APPFcnName>()
    {const Adc_ConfigType
    %<SFcnParamSettings.Adc_Config>={
    ADC驅動初始化結構體參數代碼};
    Adc_Init(&%<SFcnParamSettings.Adc_Config>);}
    %closefilebuffer
    (2)ADC驅動API模塊TLC的實現
    驅動API模塊TLC中主要是函數參數配置與返回值傳遞,具體實現代碼如下:
    %openfile buffer
    Extern%<SFcnParamSettings.DataBufferType>
    %closefile buffer
    在生成源文件中插入以下代碼實現全局變量定義:
    %openfile buffer
    %<SFcnParamSettings.DataBufferName>={0};
    %closefile buffer
4 驅動代碼生成工具箱的應用
    驅動工具箱應用于BCM車窗控制系統中,實現車窗控制系統中驅動代碼的自動生成。
    車窗控制系統中需要驅動的有兩部分:車窗控制函數的輸入信號由ADC采樣獲取;車窗控制函數輸出信號由DIO或者PORT實現對目標ECU管腳的輸出,完成對車窗的驅動。
    使用Real-Time Workshop將Simulink模型轉化為代碼時,編譯器通過系統目標TLC并調用模塊對應的TLC文件,最終生成滿足目標ECU的C語言代碼。下面是RTW中驅動應用于車窗控制模型代碼自動生成的三個步驟:
    第一步:修改Matlab中系統目標TLC文件osekworks.tlc。
    第二步:配置模型參數配置對話框中的標簽頁對其中幾個標簽頁進行設置。
    (1)Solver:設置Solver類型為離散(discrete)固定步長(Fixed-step);
    (2)Real-Time Workshop:在該標簽頁中填寫系統目標osekworks.tlc,調用對應的模塊TLC文件來生成代碼。
    第三步:代碼自動生成。 點擊Real-Time Workshop中的GenerateCode可以直接生成代碼。
    從代碼生成報告中可看出,驅動應用部分代碼主要體現在包含驅動初始化代碼的配置文件和調用驅動API函數的車窗控制算法代碼文件中。下面是兩部分的驅動應用代碼生成的結果。
    (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;};//結構體參數配置
        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驅動規范,提出了一種基于代碼生成技術的汽車電子底層驅動工具箱的設計方法。該方法能屏蔽芯片硬件特性的差異性,滿足不同硬件處理器要求。通過BCM車窗控制模型對驅動的應用,實現了代碼的自動生成??焖偬鎿Q控制模型中的被控對象,極大地方便了汽車電子嵌入式控制系統底層驅動代碼的應用,提高了汽車電子控制系統的開發效率。
參考文獻
[1] 齊振恒,孫中杰,李濤.RTW嵌入式代碼自動生成機制與代碼結構分析[J].計算機測量與控制,2010,18(3):639-642.
[2] 鄢化彪.構建RTW下的嵌入式系統開發環境.單片機與嵌入式系統應用[J].2007(1):72-73.
[3] Real-Time workshop for use with Simulink[M].The Mathworks Inc.1999:5-26.
[4] 王安軍,蔣建春,陳培然.符合AUTOSAR 規范的底層驅動軟件開發[J].計算機工程,2011(9):62-64、67.
[5] 陳永春.從Matlab/Simulink模型到代碼實現[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網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线亚洲免费| 亚洲国内精品在线| 伊人久久成人| 国产欧美另类| 国产美女扒开尿口久久久| 欧美三级乱码| 欧美日本国产一区| 欧美激情一区二区三区| 另类尿喷潮videofree| 久久久久**毛片大全| 欧美亚洲在线观看| 午夜影院日韩| 亚洲欧美日韩直播| 亚洲在线视频观看| 亚洲免费影视| 午夜视频在线观看一区二区| 亚洲一区激情| 亚洲欧美综合网| 午夜老司机精品| 性欧美激情精品| 久久精品一区蜜桃臀影院 | 欧美精品一区三区| 欧美韩日视频| 欧美日韩大片| 欧美性一二三区| 国产伦理一区| 国产在线精品成人一区二区三区 | 亚洲欧美999| 午夜在线精品偷拍| 久久国产精品久久久| 久久久久久久久久看片| 美女日韩欧美| 欧美激情一区二区三级高清视频| 欧美理论在线播放| 欧美午夜在线视频| 国产欧美一区二区三区国产幕精品 | 国产精品久久精品日日| 国产精品视频一二三| 国产视频在线观看一区| 伊人夜夜躁av伊人久久| 亚洲国产综合在线| 妖精成人www高清在线观看| 99国产精品自拍| 性欧美办公室18xxxxhd| 亚洲成人在线网| 99re66热这里只有精品4| 国产精品99久久久久久久女警 | 国产午夜精品一区理论片飘花| 伊人成综合网伊人222| 亚洲日韩成人| 亚洲欧美日韩爽爽影院| 久久精品国产精品亚洲综合| 日韩亚洲视频| 久久精品国产精品亚洲精品| 美日韩精品免费| 欧美三级第一页| 国产综合视频在线观看| 亚洲三级电影全部在线观看高清| 亚洲永久免费观看| 91久久精品国产91性色| 亚洲欧美日韩视频二区| 久久综合给合久久狠狠色| 欧美日韩免费看| 国内揄拍国内精品久久| 亚洲精品一区二区三区av| 亚洲男同1069视频| 亚洲精选在线观看| 性欧美video另类hd性玩具| 欧美大学生性色视频| 国产精品午夜av在线| 激情欧美一区二区| 99精品99| 最新国产拍偷乱拍精品 | 欧美日韩精品二区第二页| 国产乱码精品一区二区三区av| 影音欧美亚洲| 午夜激情一区| 一本色道精品久久一区二区三区 | 亚洲欧美国产精品桃花| 暖暖成人免费视频| 国产精品尤物福利片在线观看| 亚洲黄色尤物视频| 欧美中文在线观看国产| 亚洲视频在线一区| 免费高清在线一区| 国产精品伊人日日| 99re8这里有精品热视频免费 | 欧美激情一区在线| 国产视频精品免费播放| 9色porny自拍视频一区二区| 亚洲黄色精品| 久久精品国产精品亚洲| 欧美午夜免费| 亚洲乱码久久| 91久久国产自产拍夜夜嗨| 久久国产一区二区三区| 国产精品久久久| 日韩一级片网址| 亚洲精品中文字幕有码专区| 久久精品国产99国产精品澳门 | 亚洲精品欧美精品| 亚洲第一网站免费视频| 欧美一区二区在线观看| 国产精品久久九九| 一区二区三区欧美亚洲| 99re8这里有精品热视频免费 | 欧美日韩你懂的| 亚洲国产欧美日韩另类综合| 欧美在线综合| 久久精品五月| 国产日韩欧美电影在线观看| 亚洲淫性视频| 午夜久久资源| 国产精品欧美一区二区三区奶水| aa日韩免费精品视频一| 亚洲六月丁香色婷婷综合久久| 久久综合伊人77777尤物| 国产一区二区日韩精品欧美精品| 午夜精品久久久| 欧美中文字幕视频在线观看| 国产伦精品一区二区三| 午夜欧美不卡精品aaaaa| 欧美一区亚洲| 国产一区二区福利| 欧美在线一区二区三区| 玖玖在线精品| 在线欧美不卡| 亚洲免费精品| 欧美日韩国产一级片| 亚洲精品一区二区三区99| 在线一区二区三区做爰视频网站| 欧美激情影院| 亚洲美女电影在线| 亚洲尤物在线视频观看| 欧美午夜激情在线| 亚洲一区高清| 久久成人精品视频| 国产在线精品自拍| 亚洲国产综合视频在线观看| 欧美激情在线免费观看| 亚洲免费av片| 午夜国产精品影院在线观看| 国产麻豆视频精品| 久久爱www久久做| 免费一区二区三区| 亚洲精品视频二区| 亚洲视频第一页| 国产精品视频xxxx| 欧美一区二区精美| 免费av成人在线| 亚洲免费成人av| 亚洲欧美日韩爽爽影院| 国产日韩欧美| 亚洲人成网站777色婷婷| 欧美伦理视频网站| 亚洲午夜精品久久久久久浪潮| 欧美中文日韩| 亚洲国产高清一区二区三区| 99天天综合性| 国产精品视频99| 亚洲第一在线视频| 欧美日本三区| 亚洲影视中文字幕| 美女精品在线| 亚洲午夜国产成人av电影男同| 久久精品国产精品亚洲| 亚洲国产精品www| 亚洲欧美日韩国产精品| 韩日精品视频一区| 一区二区三区不卡视频在线观看 | 亚洲精品日产精品乱码不卡| 国产精品久久999| 亚洲国产欧美在线| 欧美午夜不卡影院在线观看完整版免费| 午夜精品亚洲| 欧美乱妇高清无乱码| 午夜激情综合网| 欧美日本在线一区| 性做久久久久久久久| 欧美精品一区在线| 欧美在线视频全部完| 欧美日韩国产二区| 久久国产一区二区| 欧美视频中文在线看| 久久精品国产一区二区三区| 欧美日韩国产一中文字不卡 | 久久一区二区三区av| 99精品视频免费| 免费成人网www| 午夜精品久久久久久久久| 欧美精品国产精品| 性欧美大战久久久久久久免费观看 | 亚洲图片欧洲图片日韩av| 毛片基地黄久久久久久天堂| 中文有码久久| 欧美高清在线| 久久er99精品| 国产精品女主播一区二区三区| 99热这里只有成人精品国产| 国模大胆一区二区三区|