專利名稱:用于autosar的rte代碼自動生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及AUT0SAR智能汽車軟件開發(fā)技術(shù)領(lǐng)域,具體涉及一種用于AUT0SAR的 RTE代碼自動生成方法。
背景技術(shù):
RTE (Run-Time Environment)是 AUT0SAR 系統(tǒng)中 ECU 架構(gòu)的核心。AUT0SAR 系統(tǒng)中組件間所有的通信都通過組件端口(port)進行,而端口是由AUT0SAR接口(AUT0SAR Ihterfaces)定義的,RTE實現(xiàn)了通信接口,提供組件間的通信服務(wù),因此組件間的所有通信在RTE的控制之下。RTE提供的通信方式有兩種類型發(fā)送-接收接口類型和客戶-服務(wù)接口類型。發(fā)送-接收接口類型通信提供一種信息傳送機制,而客戶-服務(wù)接口類型通信觸發(fā)函數(shù)調(diào)用。RTE借助基礎(chǔ)軟件模塊(包括OS和COM)來完成上層組件間的通信服務(wù)。上層軟件組件看不到位于RTE下層的OS和COM。當通信的兩個組件位于不同的E⑶上時,RTE使用COM服務(wù)來完成ECU之間的通信。另外,RTE使用OS的任務(wù)資源來調(diào)度軟件組件的各個運行實體運行,即RTE使用OS和COM的服務(wù)來完成上層軟件組件的通信或者調(diào)度功能。RTE代碼自動生成工具以E⑶配置描述文件為輸入,生成具有以上功能的RTE代碼(C語言描述),同時要求生成的代碼符合AUT0SAR規(guī)范。ECU配置描述文件描述標準的 AUT0SAR對象模型。組件組合可以分為兩部分,若干組件原型和若干連接器。組件類型經(jīng)實例化成為組件原型,而若干個有通信關(guān)系的組件原型可以組成一個特定子系統(tǒng)一組件組合,組件組合也是一種組件類型,可以繼續(xù)被實例化。組件原型通過連接器確定與其他組件原型的通信關(guān)系。連接器類型主要包含集合連接器、代理連接器兩種。其中集合連接器用于連接組件組合內(nèi)部的發(fā)送方組件原型端口和接收方組件原型端口,而代理連接器用于連接組件組合自身端口和組件組合內(nèi)部組件原型端口,相當于組件組合代理內(nèi)部的組件原型對外通信,以此避免暴露組件組合內(nèi)部的組件原型。根據(jù)AUT0SAR方法論,一個完整開發(fā)過程依次經(jīng)過軟件組件建模、系統(tǒng)配置、E⑶ 配置最后到代碼生成。在系統(tǒng)配置階段,用戶將完成數(shù)據(jù)映射。數(shù)據(jù)映射是把某一個數(shù)據(jù)元素綁定到特定的信號上發(fā)送或接收,其中簡單類型數(shù)據(jù)元素綁定到系統(tǒng)信號,而復雜類型數(shù)據(jù)元素綁定到系統(tǒng)信號組。當組件被分配到不同的ECU上運行時,依據(jù)解析的信號或者信號組,RTE調(diào)用COM服務(wù)來完成組件間通信。組件間的通信方式可以分為發(fā)送-接收類型和客戶-服務(wù)類型,其中前者有顯式/隱式之分,后者有同步/異步之別。而對于某一個發(fā)送-接收類型端口,還有其專屬的通信屬性配置本端口是否以隊列方式接收通信的數(shù)據(jù)元素、本端口發(fā)送/接收數(shù)據(jù)的初始值、本端口發(fā)送/接收數(shù)據(jù)的類型?;蛘呤菍τ谀骋粋€客戶-服務(wù)類型端口,通信屬性為本服務(wù)端口的服務(wù)請求隊列的長度、本操作的參數(shù)列表。RTE代碼自動生成工具擁有一套解析器用于分析邏輯上相對獨立的AUT0SAR對象模型,如連接器原型分析器就是用于分析組件組合內(nèi)的各條連接器,以建立系統(tǒng)中組件間的通信關(guān)系。為滿足通信要求,RTE還需要申請額外資源,如客戶-服務(wù)類型通信時,需要OS告警或者事件資源的協(xié)助。因此,RTE代碼自動生成工具定義RTE緩存計算器和OsNeeds 計算器,前者用于計算并申請RTE需要的緩存資源,而后者專用來計算并申請當前系統(tǒng)需要的OS資源。然而,ECU配置描述文件中的描述模型專注于構(gòu)成整個系統(tǒng)的各個模塊的描述,用這些描述信息直接生成RTE代碼是不現(xiàn)實的,例如組件類型和組件實例分開描述,切斷了組件原型模型與其通信依賴的端口原型模型的實質(zhì)包含關(guān)系,導致傳統(tǒng)的基于模板的RTE 代碼自動生成方法存在邏輯性差、可讀性低、開發(fā)繁瑣復雜、開發(fā)效率低下的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種邏輯性強、可讀性好、開發(fā)簡單快捷、開發(fā)效率高的基于模板的RTE代碼自動生成方法。為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為一種用于AUT0SAR的RTE代碼自動生成方法,其實施步驟如下1)依次分析AUT0SAR中各組件實例,獲取當前組件實例對應的組件類型,獲取當前組件實例的端口以及端口所屬接口類型,根據(jù)所述端口接口類型創(chuàng)建數(shù)據(jù)元素實例或者操作實例、在數(shù)據(jù)元素實例或者操作實例中保存所屬端口信息以及元素通信屬性,然后分析組件實例中各原子組件的內(nèi)部行為,在數(shù)據(jù)元素實例或者操作實例記錄對應的通信方式,直至分析完所有的組件實例;2)依次分析具有連接關(guān)系的組件實例的組件組合,如果連接關(guān)系的通信方式為客戶-服務(wù)接口類型,則將該端口下的各操作實例保存通信對端的端口內(nèi)的操作實例;如果連接關(guān)系的通信方式為發(fā)送-接收接口類型,則將該端口下的各數(shù)據(jù)元素實例保存通信對端的端口內(nèi)的數(shù)據(jù)元素實例,直至分析完所有的連接關(guān)系;3)獲取RTE對應各個數(shù)據(jù)元素實例或者操作實例所需要的緩存資源,并將獲取的緩存對應保存在對應的數(shù)據(jù)元素實例或者操作實例中。作為本發(fā)明技術(shù)方案的進一步改進所述步驟2、中分析具有連接關(guān)系的組件實例的組件組合時,首先處理相同ECU內(nèi)部具有連接關(guān)系的組件實例,然后處理不同E⑶之間具有連接關(guān)系的組件實例。所述處理相同E⑶內(nèi)部具有連接關(guān)系的組件實例時的詳細步驟包括A)通過若干個代理連接或者集合連接查找到連接的發(fā)送端原子軟件組件的端 Π ;B)通過若干個代理連接或者集合連接查找到連接的接收端原子軟件組件的端 Π ;C)如果是發(fā)送-接收類型端口,在通過此端口通信的數(shù)據(jù)元素實例模型中保存對其通信對端的數(shù)據(jù)元素實例的引用;如果是客戶-服務(wù)類型端口,在通過端口通信的操作實例模型中保存對其通信的對端操作實例的引用。所述步驟2~)中分析具有連接關(guān)系的組件實例的組件組合時,將執(zhí)行數(shù)據(jù)或者操作通信的系統(tǒng)信號或系統(tǒng)信號組的信息保存在對應的數(shù)據(jù)元素實例或者操作實例中。所述步驟3)中獲取緩存資源時,首先分析組件實例中的每個運行實體的通信行為,根據(jù)所述通信行為定義接收緩存或者接收隊列、緩存拷貝、請求隊列和響應隊列,并在數(shù)據(jù)元素實例模型或者操作實例模型中保存對所述接收緩存或者接收隊列、緩存拷貝、請求隊列和響應隊列的引用;然后根據(jù)客戶-服務(wù)通信類型、運行實體的通信行為以及ECU配置信息,在OS緩存資源中獲取需要向OS申請的事件或者告警資源,并在操作實例模型中保存對其使用的OS事件或者告警的引用。本發(fā)明具有下述優(yōu)點。1、本發(fā)明分析了 RTE代碼自動生成工具的總體特點,從其輸入文件E⑶配置描述文件出發(fā),分析其元素模型的信息,轉(zhuǎn)化成RTE代碼自動生成工具自定義的模型。這種分析過程不修改原模型,只是創(chuàng)建自定義模型及模型間邏輯。2、本發(fā)明中的所述的RTE代碼自動生成工具的自定義模型的邏輯關(guān)系接近目標代碼,數(shù)據(jù)元素實例模型或是操作實例模型不僅增加了與其通信端口的關(guān)聯(lián)信息,而且保存了其通信方式,如是否以隊列方式接收等,從而簡化了模板語言的開發(fā)。以數(shù)據(jù)元素實例模型為例,如果某數(shù)據(jù)元素以隊列方式接收,那么生成的RTE API類型就是Rte_ReCeive, 否則生成API類型是Rte_Read。因此模板開發(fā)可以以是否以隊列方式接收來判斷數(shù)據(jù)接收 API類型,既增強了模板語言的可讀性,又極大地方便RTE API的生成。3、本方法所述的自定義數(shù)據(jù)元素實例模型或是操作實例模型保存了對RTE代碼自動生成工具申請的緩存資源或者OS資源的引用,而通過運行實體對數(shù)據(jù)元素實例模型或者操作實例模型的包含關(guān)系,很容易從任務(wù)中找到對映射到該任務(wù)的運行實體使用的緩存或者OS資源,因而方便了 Task的生成。
圖1為本發(fā)明實施例的方法流程示意圖。圖2為本發(fā)明實施例的組件實例模型示意圖。圖3為本發(fā)明實施例中示例系統(tǒng)經(jīng)步驟1)分析后創(chuàng)建的數(shù)據(jù)元素實例4為本發(fā)明實施例中示例系統(tǒng)經(jīng)步驟1)分析后創(chuàng)建操作實例5為本發(fā)明實施例中示例系統(tǒng)經(jīng)步驟2)分析后的數(shù)據(jù)元素實例6為本發(fā)明實施例中示例系統(tǒng)經(jīng)步驟2)分析后的操作實例7為本發(fā)明實施例中示例系統(tǒng)經(jīng)步驟3)分析后的數(shù)據(jù)元素實例8為本發(fā)明實施例中示例系統(tǒng)經(jīng)步驟3)分析后的操作實例9為本發(fā)明實施例數(shù)據(jù)元素實例創(chuàng)建流程圖。圖10為本發(fā)明實施例操作實例創(chuàng)建流程圖。
具體實施例方式如圖1所示,本發(fā)明實施例用于AUT0SAR的RTE代碼自動生成方法的實施步驟如下1)依次分析AUT0SAR中各組件實例,獲取當前組件實例對應的組件類型,獲取當前組件實例的端口以及端口所屬接口類型,根據(jù)端口接口類型創(chuàng)建數(shù)據(jù)元素實例或者操作實例、在數(shù)據(jù)元素實例或者操作實例中保存所屬端口信息以及元素通信屬性,然后分析組件實例中各原子組件的內(nèi)部行為,在數(shù)據(jù)元素實例或者操作實例記錄對應的通信方式,直至分析完所有的組件實例;針對發(fā)送-接收類型端口,創(chuàng)建數(shù)據(jù)元素實例,其元素通信屬性為是否以隊列的方式發(fā)送或者接收;針對客戶-服務(wù)類型端口,創(chuàng)建操作實例,其元素通信屬性為服務(wù)請求的隊列長度信息。在數(shù)據(jù)元素實例對應的通信方式為顯式或者隱式,操作實例記錄對應的通信方式為同步或者異步。2)依次分析具有連接關(guān)系的組件實例的組件組合,如果連接關(guān)系的通信方式為客戶-服務(wù)接口類型,則將該端口下的各操作實例保存通信對端的端口內(nèi)的操作實例;如果連接關(guān)系的通信方式為發(fā)送-接收接口類型,則將該端口下的各數(shù)據(jù)元素實例保存通信對端的端口內(nèi)的數(shù)據(jù)元素實例,直至分析完所有的連接關(guān)系;3)獲取RTE對應各個數(shù)據(jù)元素實例或者操作實例所需要的緩存資源,并將獲取的緩存對應保存在對應的數(shù)據(jù)元素實例或者操作實例中。步驟2)中分析具有連接關(guān)系的組件實例的組件組合時,首先處理相同ECU內(nèi)部具有連接關(guān)系的組件實例,然后處理不同ECU之間具有連接關(guān)系的組件實例。處理相同E⑶內(nèi)部具有連接關(guān)系的組件實例時的詳細步驟包括A)通過若干個代理連接或者集合連接查找到連接的發(fā)送端原子軟件組件的端 Π ;B)通過若干個代理連接或者集合連接查找到連接的接收端原子軟件組件的端 Π ;C)如果是發(fā)送-接收類型端口,在通過此端口通信的數(shù)據(jù)元素實例模型中保存對其通信對端的數(shù)據(jù)元素實例的引用;如果是客戶-服務(wù)類型端口,在通過端口通信的操作實例模型中保存對其通信的對端操作實例的引用。步驟2~)中分析具有連接關(guān)系的組件實例的組件組合時,將執(zhí)行數(shù)據(jù)或者操作通信的系統(tǒng)信號或系統(tǒng)信號組的信息保存在對應的數(shù)據(jù)元素實例或者操作實例中。步驟3)中獲取緩存資源時,首先分析組件實例中的每個運行實體的通信行為,根據(jù)通信行為定義接收緩存/隊列、緩存拷貝、請求隊列和響應隊列,并在數(shù)據(jù)元素實例模型或者操作實例模型中保存對接收緩存/隊列、緩存拷貝、請求隊列和響應隊列的引用;然后根據(jù)客戶-服務(wù)通信類型、運行實體的通信行為以及E⑶配置信息,在OS緩存資源中獲取需要向OS申請的事件或者告警緩存資源,并在操作實例模型中保存對其使用的OS事件或者告警的引用。如圖2所示,本發(fā)明實施例共有兩個組件實例,各自包含兩個端口。其中組件 Compl 包含 Port_Client 禾口 Port_Send, Comp2 包含 Port_Server 禾口 Port_Receive。 Port_ Client和PortJerver是客戶-服務(wù)通信類型端口,以同步有超時方式通信;而Port_Send 和P0rt_Receive是發(fā)送-接收類型端口,以隊列方式發(fā)送/接收數(shù)據(jù)。如圖3和圖4所示,經(jīng)過步驟1)以后,上述兩個組件實例分別被分析后創(chuàng)建數(shù)據(jù)元素實例模型 Rte_S_DataElement 和 Rte_R_DataElement、操作實例模型 Rte_C_0peration 和Rte_S_0peration。其中橢圓形元素表示是引用成員,如發(fā)送端口 Port_Send,菱形元素表示是屬性成員,如通信方式顯式。如圖5和圖6所示,經(jīng)過步驟2~)分析組件組合后,獲得組件間通信的通信雙方的連接關(guān)系,并把這種連接關(guān)系保存到數(shù)據(jù)元素實例模型或是操作實例模型中。數(shù)據(jù)元素實例保存下通信對端數(shù)據(jù)元素實例的引用,而操作實例也保存下通信對端操作實例的引用。本實施例中通過分析原子軟件組件內(nèi)部行為計算RTE為實現(xiàn)用戶要求的發(fā)送-接收類型通信方式需要申請的緩存資源(如接收隊列/接收緩存);或者分析ECU配置信息, 計算RTE為實現(xiàn)客戶-服務(wù)類型通信方式需要向OS申請的資源(事件/告警、請求隊列
寸乂 Oa)在分析完組件通信的連接關(guān)系后,由RTE緩存計算器負責計算合適的緩存。RTE 緩存計算器將針對組件中的每個運行實體,分析其通信行為,以AUT0SAR標準為依據(jù),計算接收緩存/隊列,緩存拷貝、請求隊列、響應隊列。b)在數(shù)據(jù)元素實例模型中保存對其使用的RTE緩存的引用。如圖7所示,本發(fā)明實施例中,PortJend和Port_ReCeiVe是發(fā)送-接收類型端口,且以隊列方式發(fā)送/接收數(shù)據(jù)。因此RTE緩存計算器計算得出,這對通信需要一個接收隊列,并申請隊列 Rte_ReceiveQueue_l。并在 Rte_S_DataElement 禾口 Rte_R_DataElement 中保存對Rte_ReceiveQueue_l的引用。c)保存對OS資源的引用。OsNeeds計算器將根據(jù)客戶-服務(wù)通信類型、運行實體的通信行為以及ECU配置等信息,計算需要向OS申請的事件或者告警資源,并在操作實例模型中保存對其使用的OS事件或者告警的引用。進一步,步驟包括1.申請事件資源。依次分析映射在OS任務(wù)中的運行實體,如果是服務(wù)器端運行實體,并且被以同步有超時方式請求服務(wù),則由RTE代碼自動生成工具向OS 申請一個事件用于服務(wù)器端和客戶端的同步通信;如果是客戶端運行實體,當其以同步方式請求服務(wù)時,申請一個同步事件用于與服務(wù)器端運行實體的通信。2.申請告警資源。依次分析映射在OS任務(wù)中的運行實體,當該運行實體是從客戶端請求服務(wù)且通信請求方式是同步有超時或者是異步時,由RTE代碼自動生成工具向OS 申請告警資源,用于RTE監(jiān)控超時通信。此外,要把申請的告警關(guān)聯(lián)到其等待的OS事件上。 如圖8所示,在本發(fā)明實施例中,Port_Client和Port_SerVer是客戶-服務(wù)通信類型端口, 以同步有超時方式通信。OsNeeds計算器根據(jù)同步通信方式計算并申請同步事件OsEvent, 又因為通信是有超時的,因此在Client端還需要申請一個告警來監(jiān)控超時情況,這里告警命名為 OsAlarm。最后在 Rte_C_0peration 禾口 Rte_S_0peration 中保存對事件 OsEvent 的引用;在Rte_C_0peration中保存對告警OsAlarm的引用;把告警OsAlarm關(guān)聯(lián)到其等待的同步事件OsEvent上。如圖9所示,數(shù)據(jù)元素實例創(chuàng)建流程可以概括如下組件原型分析器分析各組件實例,分析組件實例的端口類型獲得對應的接口類型,如果是發(fā)送-接收類型接口,創(chuàng)建數(shù)據(jù)元素實例模型,保存對通信端口的引用以及通信方式,同時通過連接器原型分析器獲取對端的數(shù)據(jù)元素,保存對端數(shù)據(jù)元素的引用;RTE緩存計算器針對每一個數(shù)據(jù)元素實例計算通信的緩存需求,如果需要則創(chuàng)建緩存,并創(chuàng)建數(shù)據(jù)元素實例模型到RTE緩存的引用。如圖10所示,操作實例的創(chuàng)建流程可以概括如下組件原型分析器分析各組件實例,分析組件實例的端口類型獲得對應的接口類型,如果是為客戶-服務(wù)類型接口,創(chuàng)建操作實例模型,保存對通信端口的引用以及通信參數(shù)列表,同時通過連接器原型分析器獲取對端的操作實例,保存對端操作實例的引用;OsNeeds計算器分析組件的內(nèi)部行為,針對每個運行實體計算需要的OS緩存資源,如果需要事件則向?qū)腛S申請事件緩存資源、如果需要告警則向?qū)腛S申請告警資源,并最終將引用的緩存資源保存操作實例模型中。以上所述僅為本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護范圍并不僅限于上述實施方式,凡是屬于本發(fā)明原理的技術(shù)方案均屬于本發(fā)明的保護范圍。對于本領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明的原理的前提下進行的若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種用于AUT0SAR的RTE代碼自動生成方法,其特征在于其實施步驟如下1)依次分析AUT0SAR中各組件實例,獲取當前組件實例對應的組件類型,獲取當前組件實例的端口以及端口所屬接口類型,根據(jù)所述端口接口類型創(chuàng)建數(shù)據(jù)元素實例或者操作實例,在數(shù)據(jù)元素實例或者操作實例中保存所屬端口信息以及元素通信屬性,然后分析組件實例中各原子組件的內(nèi)部行為,在數(shù)據(jù)元素實例或者操作實例記錄對應的通信方式,直至分析完所有的組件實例;2)依次分析具有連接關(guān)系的組件實例的組件組合,如果連接關(guān)系的通信方式為客戶-服務(wù)接口類型,則將該端口下的各操作實例保存通信對端的端口內(nèi)的操作實例;如果連接關(guān)系的通信方式為發(fā)送-接收接口類型,則將該端口下的各數(shù)據(jù)元素實例保存通信對端的端口內(nèi)的數(shù)據(jù)元素實例,直至分析完所有的連接關(guān)系;3)獲取RTE對應各個數(shù)據(jù)元素實例或者操作實例所需要的緩存資源,并將獲取的緩存對應保存在對應的數(shù)據(jù)元素實例或者操作實例中。
2.根據(jù)權(quán)利要求1所述的用于AUT0SAR的RTE代碼自動生成方法,其特征在于所述步驟2、中分析具有連接關(guān)系的組件實例的組件組合時,首先處理相同ECU內(nèi)部具有連接關(guān)系的組件實例,然后處理不同ECU之間具有連接關(guān)系的組件實例。
3.根據(jù)權(quán)利要求2所述的用于AUT0SAR的RTE代碼自動生成方法,其特征在于所述處理相同ECU內(nèi)部具有連接關(guān)系的組件實例時的詳細步驟包括A)通過若干個代理連接或者集合連接查找到連接的發(fā)送端原子軟件組件的端口;B)通過若干個代理連接或者集合連接查找到連接的接收端原子軟件組件的端口;C)如果是發(fā)送-接收類型端口,在通過此端口通信的數(shù)據(jù)元素實例模型中保存對其通信對端的數(shù)據(jù)元素實例的引用;如果是客戶-服務(wù)類型端口,在通過端口通信的操作實例模型中保存對其通信的對端操作實例的引用。
4.根據(jù)權(quán)利要求3所述的用于AUT0SAR的RTE代碼自動生成方法,其特征在于所述步驟2)中分析具有連接關(guān)系的組件實例的組件組合時,將執(zhí)行數(shù)據(jù)或者操作通信的系統(tǒng)信號或系統(tǒng)信號組的信息保存在對應的數(shù)據(jù)元素實例或者操作實例中。
5.根據(jù)權(quán)利要求1或2或3或4所述的用于AUT0SAR的RTE代碼自動生成方法,其特征在于所述步驟3)中獲取緩存資源時,首先分析組件實例中的每個運行實體的通信行為, 根據(jù)所述通信行為定義接收緩存或者接收隊列、緩存拷貝、請求隊列和響應隊列,并在數(shù)據(jù)元素實例模型或者操作實例模型中保存對所述接收緩存或者接收隊列、緩存拷貝、請求隊列和響應隊列的引用;然后根據(jù)客戶-服務(wù)通信類型、運行實體的通信行為以及E⑶配置信息,在OS資源中獲取需要向OS申請的事件或者告警資源,并在操作實例模型中保存對其使用的OS事件或者告警的引用。
全文摘要
本發(fā)明公開了一種用于AUTOSAR的RTE代碼自動生成方法,其實施步驟如下1)依次分析AUTOSAR中各組件實例,創(chuàng)建數(shù)據(jù)元素實例或者操作實例、保存所屬端口信息以及元素通信屬性,然后分析組件實例中各原子組件的內(nèi)部行為,在數(shù)據(jù)元素實例或者操作實例記錄對應的通信方式;2)依次分析具有連接關(guān)系的組件實例的組件組合,保存通信對端的端口內(nèi)的操作實例或者數(shù)據(jù)元素實例;3)獲取RTE對應各個數(shù)據(jù)元素實例或者操作實例所需要的緩存資源,并將獲取的緩存對應保存在對應的數(shù)據(jù)元素實例或者操作實例中。本發(fā)明具有邏輯性強、可讀性好、開發(fā)簡單快捷、開發(fā)效率高的優(yōu)點。
文檔編號G06F9/44GK102214099SQ20111016260
公開日2011年10月12日 申請日期2011年6月16日 優(yōu)先權(quán)日2011年6月16日
發(fā)明者劉敏, 李紅, 汪金波, 耿莉莉, 顧宗華 申請人:浙江大學