0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

多層數(shù)據(jù)管理方案解決AUTOSAR CP Composition級別共享代碼生成問題

MATLAB ? 來源:MATLAB ? 2023-05-11 09:47 ? 次閱讀

重要的事情放到前頭說,本文提出的方法可解決:

AUTOSAR Composition 級別的代碼生成問題

多模型代碼生成共享代碼問題

單元模型單獨生成代碼時和共享數(shù)據(jù)的耦合問題

在實際的項目中,我們經(jīng)常會遇到大規(guī)模模型代碼生成的共享代碼問題,而且常常還會涉及到自定制存儲類,AUTOSAR Composition,多層數(shù)據(jù)管理方案等內(nèi)容。該問題是一類經(jīng)典問題,基本上每個月都會有不同的用戶以各種不同的場景和方式前來詢問解決方案或建議,為了幫助大家更好的處理此類問題,本文提供了一種以多層數(shù)據(jù)管理方案為核心的解耦方式,類似的場景大家也可以嘗試借用此方法。

本文基于 MATLAB R2022b 版本,用到的模型和代碼鏈接可以在文末點擊“閱讀原文”獲取。

以下是詳細(xì)介紹。

第一步

構(gòu)建用例場景

我們首先快速構(gòu)建一個典型場景,新建了一個數(shù)據(jù)包 mySDCPackage:

6eca4a24-ef56-11ed-90ce-dac502259ad0.png

并使用 CSCDesigner 創(chuàng)建了如下所示的 Memory Section - MathWorks_CalPrm:

6edd1e56-ef56-11ed-90ce-dac502259ad0.png

以及 Storage Class - MathWorks_CalPrm_SC,該存儲類使用上述創(chuàng)建的 Memory Section - MathWorks_CalPrm。通過該存儲類約束的 Simulink Parameter 會生成到指定的 HCU_Prm.h 和指定名稱的 .c 文件中(注意:Definition file 選 Instance Specific 以便后續(xù)可以單獨配置 Parameter 要生成到哪個頭文件):

6f0c9adc-ef56-11ed-90ce-dac502259ad0.png

接著我們將名為ThrottlePositionControlComposition.arxml 的 AUTOSAR CP Composition arxml 導(dǎo)入到System Composer,重現(xiàn)架構(gòu),如下圖所示:

6f592136-ef56-11ed-90ce-dac502259ad0.png

第二步

適用多層數(shù)據(jù)管理方案

這里為了方便解釋,我們只選 Monitor(模型全名實為 ThrottlePositionMonitor),Controller 兩個子模型為例,其中 Monitor 模型的數(shù)據(jù)存放在 Monitor_Unique.sldd 和 Monitor_Shared.sldd 中,Monitor_Unique.sldd 直接關(guān)聯(lián) Monitor 模型,Monitor_Shared.sldd 不直接關(guān)聯(lián)模型而是被 Monitor_Unique.sldd 通過數(shù)據(jù)字典引用的方式進行引用。

Monitor_Unique.sldd 中存放的是 Monitor 模型所獨有的數(shù)據(jù),Monitor_Shared.sldd 中存放的是 Monitor 模型會用到,同時也會被其他模型所使用的共享數(shù)據(jù),可認(rèn)為是單元級別共享數(shù)據(jù)。SharedDD.sldd 中存放的則是共享程度更高的共享數(shù)據(jù),可認(rèn)為是系統(tǒng)級別共享數(shù)據(jù)。Controller 模型同理,不做贅述。

這樣每個單元模型就形成了三層數(shù)據(jù)字典引用:Monitor.slx->Monitor_Unique.sldd->Monitor_Shared.sldd->SharedDD.sldd,后面我們會看到多一層“間接”就能起到解耦的作用,“間接”是軟件工程中非常強大的解耦和抽象方式。上述描述有點拗口,大家可搭配下圖幫助理解:

6f6be866-ef56-11ed-90ce-dac502259ad0.png

接著,我們在 Monitor_Shared.sldd 中添加Monitor_Shared 參數(shù)定義,使用我們剛剛定義的數(shù)據(jù)包,接著設(shè)置存儲類為MathWorks_CalPrm_SC,DefinitionFile 設(shè)置為 HCU_Prm_Monitor.c,Owner 設(shè)置為ThrottlePositionMonitor(模型名):

6f8efe32-ef56-11ed-90ce-dac502259ad0.png

各參數(shù)的設(shè)置如下:

在 Monitor_Unique.sldd 中添加名為Monitor_Unique 參數(shù)定義,存儲類選MathWorks_CalPrm_SC,DefinitionFile設(shè)置為 HCU_Prm_Monitor.c,Owner 留空

在 Monitor_Shared.sldd 中添加名為Monitor_Shared 參數(shù)定義,存儲類選MathWorks_CalPrm_SC,DefinitionFile設(shè)置為 HCU_Prm_Monitor.c,Owner 設(shè)置為 ThrottlePositionMonitor (即 Monitor 的模型名)

在 Controller_Unique.sldd 中添加名為Controller_Unique 參數(shù)定義,存儲類選MathWorks_CalPrm_SC,DefinitionFile設(shè)置為 HCU_Prm_Controller.c,Owner 留空

在 Controller_Shared.sldd 中添加名為Controller_Shared 參數(shù)定義,存儲類選MathWorks_CalPrm_SC,DefinitionFile設(shè)置為 HCU_Prm_Controller.c,Owner 設(shè)置為 Controller (即 Controller 的模型名)

在 SharedDD.sldd 中添加名為 GlobalSharedP 參數(shù)定義,存儲類選 MathWorks_CalPrm_SC,DefinitionFile設(shè)置為 HCU_Prm_GlobalShared.c,Owner 的選擇要特別注意:當(dāng)前的 MATLAB R2022b 版本不支持 Owner 選為System Composer 的模型名,如果我們直接留空,那么每個用到 GlobalSharedP 參數(shù)的子模型都會生成一份 HCU_Prm_GlobalShared.c,顯然也不合適,因此我們可以指定 Owner 為某個子模型,這樣就可以臨時繞過此限制,只生成一份 HCU_Prm_GlobalShared.c,這里我們選擇Owner 為 Controller 模型

這里稍微解釋下 Owner 的作用:此處指定的 Owner 后續(xù)會配合選項 “Use owner from data object for data definition placement”,在代碼生成時,只有 Owner 模型生成代碼時,此數(shù)據(jù)才會在代碼里生成定義,其他模型即使用到此數(shù)據(jù)也不會生成此數(shù)據(jù)的定義。

6fa82ed4-ef56-11ed-90ce-dac502259ad0.png

最后,讓 Controller_Unique.sldd 引用Monitor_Shared.sldd,讓 Monitor_Unique.sldd引用 Controller_Shared.sldd,形成如前圖所示數(shù)據(jù)字典交叉引用。

最終,Controller_Unique.sldd 中的數(shù)據(jù)如下圖所示:

6fcb13c2-ef56-11ed-90ce-dac502259ad0.png

Monitor_Unique.sldd 中的數(shù)據(jù)如下圖所示:

6fdff990-ef56-11ed-90ce-dac502259ad0.png

第三步

為數(shù)據(jù)對象明確 Owner

僅僅做到這一步的話,當(dāng)我們對 Monitor 或者 Controller 單元模型單獨生成代碼時,這種交叉引用可能會導(dǎo)致 Monitor_Shared 和Controller_Shared 參數(shù)重復(fù)被生成,或者換句話說即參數(shù)的 “Owner” 是不確定的。

我們期望的是:當(dāng)對 Controller 模型生成代碼時,Controller_Shared 參數(shù)定義要生成到HCU_Prm_Controller.c 中,即其在代碼中被當(dāng)成 Exported,而 Monitor_Shared 參數(shù)即使在 Controller 模型中被使用,其在代碼中卻不生成定義,即其在代碼中被當(dāng)成 Imported。

要實現(xiàn)這一點,需要為 Monitor_Shared 和 Controller_Shared 參數(shù)設(shè)置 Owner(其所歸屬的模型名):

7001ee2e-ef56-11ed-90ce-dac502259ad0.png

7021a070-ef56-11ed-90ce-dac502259ad0.png

同時對 Monitor/Controller 模型生成代碼的時候,記得勾選 Use owner from data object for data definition placement,這樣Monitor_Shared 對象僅在 Monitor 模型生成代碼的時候生成定義。

7045806c-ef56-11ed-90ce-dac502259ad0.png

兩個模型的 Shared code placement 都設(shè)置為 Shared Location:

7055eac4-ef56-11ed-90ce-dac502259ad0.png

第四步

在模型中交叉使用數(shù)據(jù)對象

如圖所示,在 Monitor 模型中使用定義的參數(shù),包括 Monitor_Unique, Monitor_Shared以及 GlobalSharedP:

706a04b4-ef56-11ed-90ce-dac502259ad0.png

在 Controller 模型中使用定義的參數(shù),包括 Controller_Unique, Monitor_Shared 以及 GlobalSharedP:

70869f84-ef56-11ed-90ce-dac502259ad0.png

第五步

代碼生成

對 Controller 模型生成代碼,雖然 Controller 模型中使用到了 Monitor_Shared 參數(shù),但是該模型因為不是參數(shù)的 Owner,不會生成 Monitor_Shared 的定義,僅僅是引用:

70a141cc-ef56-11ed-90ce-dac502259ad0.png

70b77f0a-ef56-11ed-90ce-dac502259ad0.png

最后借助 System Composer 提供的 AUTOSAR Composition 級別的代碼生成功能:

70e6e5e2-ef56-11ed-90ce-dac502259ad0.png

我們直接看生成的 zip 壓縮包:

7104ca76-ef56-11ed-90ce-dac502259ad0.png

其中 HCU_Prm.h:

7134421a-ef56-11ed-90ce-dac502259ad0.png

HCU_Prm_Controller.c:

714d3eb4-ef56-11ed-90ce-dac502259ad0.png

HCU_Prm_GlobalShared.c:

7193b790-ef56-11ed-90ce-dac502259ad0.png

HCU_Prm_Monitor.c:

71d4915c-ef56-11ed-90ce-dac502259ad0.png

第六步

總結(jié)

至此,我們就實現(xiàn)了 Controller 模型和 Monitor 模型的數(shù)據(jù)解耦,且數(shù)據(jù)的定義各自生成到各自的子目錄中,此方式的另一個好處就是無論Monitor_Shared.sldd 中的數(shù)據(jù)如何變化,無需再對Controller 模型生成代碼,僅需要對 Monitor 模型重新生成代碼,即可更新所需的定義文件(.c)和slprj/autosar/_sharedutils 中的聲明文件(.h),大大節(jié)省了重復(fù)生成代碼的時間。

當(dāng)然,如果大家希望上述所有的參數(shù)定義都放到名為HCU_Prm.c(即與聲明文件 HCU_Prm.h 同名)的文件中,則需要寫個后處理腳本對代碼進行綜合處理。

最后, 歡迎大家在借助本文方法解決問題后在下面留言反饋,如果有更多實際項目中的困擾,也歡迎留言,我們會酌情推出更多類似的技術(shù)文章,與大家一起共同進步。

本文基于 MATLAB R2022b 版本,用到的模型和代碼鏈接可以在文末點擊“閱讀原文”獲取。

原審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關(guān)注

    關(guān)注

    181

    文章

    2960

    瀏覽量

    230024
  • 數(shù)據(jù)管理
    +關(guān)注

    關(guān)注

    1

    文章

    285

    瀏覽量

    19592
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    349

    瀏覽量

    21444
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3112

    瀏覽量

    48658
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68231

原文標(biāo)題:多層數(shù)據(jù)管理方案解決 AUTOSAR CP Composition 級別共享代碼生成問題

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一張圖解讀阿里云數(shù)據(jù)管理DMS企業(yè)版

    摘要: 阿里云數(shù)據(jù)管理DMS企業(yè)版,作為數(shù)據(jù)管理產(chǎn)品大家族里的新成員,于2017年11月開啟公測,今年1月底正式發(fā)布商業(yè)化版本。 作為業(yè)界領(lǐng)先的面向企業(yè)的數(shù)據(jù)庫DevOps解決方案,D
    發(fā)表于 01-30 09:35

    提升研發(fā)效率 保障數(shù)據(jù)安全——阿里云宣布數(shù)據(jù)管理DMS企業(yè)版正式商業(yè)化

    摘要: 阿里云數(shù)據(jù)管理DMS企業(yè)版,作為數(shù)據(jù)管理產(chǎn)品大家族里的新成員,于2017年11月開啟公測,今年1月底正式發(fā)布商業(yè)化版本。 作為業(yè)界領(lǐng)先的面向企業(yè)的數(shù)據(jù)庫DevOps解決方案,D
    發(fā)表于 01-30 14:07

    數(shù)據(jù)管理功能詳解

    訪問控制管理。通過這一工具,單個用戶可以在本地工作站上管理多個文件,或多名用戶可以在共享區(qū)域來管理多個文件。下面小編就給大家介紹一下,如何快速使用浩辰3D軟件的
    發(fā)表于 11-03 15:32

    CP AUTOSAR EcuM的相關(guān)資料下載

    前言本系列請點擊:《搞一下CP AUTOSAR入門》所有系列請點擊:《汽車電子系列分享》在CP AUTOSAR架構(gòu)中定義了許多和模式管理相關(guān)
    發(fā)表于 02-11 07:05

    【學(xué)習(xí)打卡】OpenHarmony的分布式數(shù)據(jù)管理介紹

    分布式數(shù)據(jù)管理,英文縮寫是DDM,是對一個系統(tǒng)中創(chuàng)建和收集的數(shù)據(jù)的提取、存儲、組織和維護的過程進行的有效控制和管理。有效的數(shù)據(jù)管理對于運行應(yīng)用程序,以及提供分析信息來幫助整個系統(tǒng)進行規(guī)
    發(fā)表于 07-15 15:49

    Bootloader 系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程

    Bootloader 系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程
    發(fā)表于 10-09 16:17 ?4次下載
    Bootloader 系統(tǒng)使用新應(yīng)用<b class='flag-5'>代碼</b>和/或<b class='flag-5'>數(shù)據(jù)管理</b>組件閃存的更新流程

    Bootloader系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程

    Bootloader系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程
    發(fā)表于 10-10 08:24 ?12次下載
    Bootloader系統(tǒng)使用新應(yīng)用<b class='flag-5'>代碼</b>和/或<b class='flag-5'>數(shù)據(jù)管理</b>組件閃存的更新流程

    關(guān)于云時代下的數(shù)據(jù)管理難題的分析和解決

    再者就是數(shù)據(jù)類型正變得豐富多樣,數(shù)據(jù)管理場景也從原先的單純的存儲,增加了災(zāi)備、歸檔、遷移、檢索、共享等眾多場景,不管是數(shù)據(jù)監(jiān)管還是業(yè)務(wù)要求,都對數(shù)據(jù)
    的頭像 發(fā)表于 10-28 08:57 ?2074次閱讀

    搞一下CP AUTOSAR 入門 | 04 CP AUTOSAR EcuM 詳解

    前言本系列請點擊:《搞一下CP AUTOSAR入門》所有系列請點擊:《汽車電子系列分享》在CP AUTOSAR架構(gòu)中定義了許多和模式管理相關(guān)
    發(fā)表于 12-07 18:21 ?30次下載
    搞一下<b class='flag-5'>CP</b> <b class='flag-5'>AUTOSAR</b> 入門 | 04 <b class='flag-5'>CP</b> <b class='flag-5'>AUTOSAR</b> EcuM 詳解

    CAN網(wǎng)絡(luò)管理規(guī)范 AUTOSAR CP中文版

    CAN網(wǎng)絡(luò)管理規(guī)范 AUTOSAR CP中文版免費下載。
    發(fā)表于 04-06 16:21 ?0次下載

    AUTOSAR 解決方案 — INTEWORK-EAS-CP

    服務(wù)和培訓(xùn)等各個方面的內(nèi)容,旨在為國內(nèi)及國際的OEM和供應(yīng)商提供穩(wěn)定可靠、便捷易用的AUTOSAR平臺。EAS共分為CP和AP兩個平臺。方案特點基于AUTOSAR標(biāo)準(zhǔn)
    的頭像 發(fā)表于 05-21 09:26 ?1204次閱讀
    <b class='flag-5'>AUTOSAR</b> 解決<b class='flag-5'>方案</b> — INTEWORK-EAS-<b class='flag-5'>CP</b>

    解讀AUTOSAR模式管理BswM配置

    模式管理AUTOSAR中的一個難點,也可以說是最龐雜的一塊。因為模式管理貫穿整個CP Autosar流程,幾乎所有模塊都跟BSWM發(fā)生著聯(lián)
    的頭像 發(fā)表于 10-26 16:55 ?2184次閱讀
    解讀<b class='flag-5'>AUTOSAR</b>模式<b class='flag-5'>管理</b>BswM配置

    AUTOSAR CP的復(fù)雜驅(qū)動是什么

    復(fù)雜驅(qū)動(CDD) AUTOSAR CP的復(fù)雜驅(qū)動(CDD)是為了實現(xiàn)復(fù)雜的傳感器評估和執(zhí)行器控制而設(shè)計的。它通過直接訪問微控制器來實現(xiàn),使用特定的中斷和/或復(fù)雜的微控制器外設(shè)、外部設(shè)備通信收發(fā)器
    的頭像 發(fā)表于 10-27 15:39 ?2064次閱讀
    <b class='flag-5'>AUTOSAR</b> <b class='flag-5'>CP</b>的復(fù)雜驅(qū)動是什么

    AUTOSAR CP運行時環(huán)境與應(yīng)用軟件

    )的服務(wù)。RTE的功能和意義如下: 通信基礎(chǔ)設(shè)施:RTE負(fù)責(zé)管理應(yīng)用軟件組件之間的通信。它提供了消息傳遞機制和事件觸發(fā)機制,使得應(yīng)用軟件組件可以相互發(fā)送和接收消息,實現(xiàn)數(shù)據(jù)的交換和共享。 訪問基礎(chǔ)軟件組件:RTE提供了訪問基礎(chǔ)軟
    的頭像 發(fā)表于 10-27 15:44 ?1267次閱讀
    <b class='flag-5'>AUTOSAR</b> <b class='flag-5'>CP</b>運行時環(huán)境與應(yīng)用軟件

    食品檢測LIMS如何實現(xiàn)數(shù)據(jù)管理

    LIMS系統(tǒng)通過數(shù)據(jù)采集、處理與分析、存儲與管理、安全與保密、共享與協(xié)作、質(zhì)量控制以及報告生成等多個方面的功能實現(xiàn)數(shù)據(jù)管理,為食品檢測實驗室
    的頭像 發(fā)表于 05-29 13:47 ?504次閱讀