色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

AUTOSAR Composition 級別的代碼生成問題

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

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

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

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

以下是詳細介紹。

第一步

構建用例場景

我們首先快速構建一個典型場景,新建了一個數據包 mySDCPackage:

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

并使用 CSCDesigner 創建了如下所示的 Memory Section - MathWorks_CalPrm:

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

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

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

接著我們將名為ThrottlePositionControlComposition.arxml 的 AUTOSAR CP Composition arxml 導入到System Composer,重現架構,如下圖所示:

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

第二步

適用多層數據管理方案

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

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

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

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

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

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

各參數的設置如下:

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

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

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

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

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

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

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

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

最終,Controller_Unique.sldd 中的數據如下圖所示:

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

Monitor_Unique.sldd 中的數據如下圖所示:

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

第三步

為數據對象明確 Owner

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

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

要實現這一點,需要為 Monitor_Shared 和 Controller_Shared 參數設置 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 都設置為 Shared Location:

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

第四步

在模型中交叉使用數據對象

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

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

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

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

第五步

代碼生成

對 Controller 模型生成代碼,雖然 Controller 模型中使用到了 Monitor_Shared 參數,但是該模型因為不是參數的 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

第六步

總結

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

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

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

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

原審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2980

    瀏覽量

    230798
  • 數據管理
    +關注

    關注

    1

    文章

    300

    瀏覽量

    19646
  • AUTOSAR
    +關注

    關注

    10

    文章

    363

    瀏覽量

    21720
  • 模型
    +關注

    關注

    1

    文章

    3296

    瀏覽量

    49042
  • 代碼
    +關注

    關注

    30

    文章

    4821

    瀏覽量

    68890

原文標題:多層數據管理方案解決 AUTOSAR CP Composition 級別共享代碼生成問題

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    提升研發效率 保障數據安全——阿里云宣布數據管理DMS企業版正式商業化

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

    數據管理功能詳解

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

    CP AUTOSAR EcuM的相關資料下載

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

    【學習打卡】OpenHarmony的分布式數據管理介紹

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

    Bootloader 系統使用新應用代碼和/或數據管理組件閃存的更新流程

    Bootloader 系統使用新應用代碼和/或數據管理組件閃存的更新流程
    發表于 10-09 16:17 ?4次下載
    Bootloader 系統使用新應用<b class='flag-5'>代碼</b>和/或<b class='flag-5'>數據管理</b>組件閃存的更新流程

    Bootloader系統使用新應用代碼和/或數據管理組件閃存的更新流程

    Bootloader系統使用新應用代碼和/或數據管理組件閃存的更新流程
    發表于 10-10 08:24 ?12次下載
    Bootloader系統使用新應用<b class='flag-5'>代碼</b>和/或<b class='flag-5'>數據管理</b>組件閃存的更新流程

    關于云時代下的數據管理難題的分析和解決

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

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

    前言本系列請點擊:《搞一下CP AUTOSAR入門》所有系列請點擊:《汽車電子系列分享》在CP AUTOSAR架構中定義了許多和模式管理相關
    發表于 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網絡管理規范 AUTOSAR CP中文版

    CAN網絡管理規范 AUTOSAR CP中文版免費下載。
    發表于 04-06 16:21 ?0次下載

    國芯科技與經緯恒潤攜手推出AUTOSAR CP解決方案

    的 Classic Platform (CP)AUTOSAR 解決方案。 作為 AUTOSAR 開發者會員,國芯科技結合 CCFC2012BC 系列車規級 MCU 產品,推出了自主可控
    的頭像 發表于 06-15 14:10 ?993次閱讀

    AUTOSAR 解決方案 — INTEWORK-EAS-CP

    服務和培訓等各個方面的內容,旨在為國內及國際的OEM和供應商提供穩定可靠、便捷易用的AUTOSAR平臺。EAS共分為CP和AP兩個平臺。方案特點基于AUTOSAR標準
    的頭像 發表于 05-21 09:26 ?1291次閱讀
    <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發生著聯
    的頭像 發表于 10-26 16:55 ?2679次閱讀
    解讀<b class='flag-5'>AUTOSAR</b>模式<b class='flag-5'>管理</b>BswM配置

    AUTOSAR CP的復雜驅動是什么

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

    AUTOSAR CP運行時環境與應用軟件

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

    食品檢測LIMS如何實現數據管理

    LIMS系統通過數據采集、處理與分析、存儲與管理、安全與保密、共享與協作、質量控制以及報告生成等多個方面的功能實現數據管理,為食品檢測實驗室
    的頭像 發表于 05-29 13:47 ?603次閱讀
    主站蜘蛛池模板: 国产午夜免费视频片夜色| 狼人射综合| 欧美含羞草免费观看全部完| 亚洲一区二区三区免费看| 国产人妻人伦精品无码.麻豆| 特级淫片大乳女子高清视频| 福利视频久久| 特大黑人娇小亚洲女mp4| 国产AV精品白浆一区二| 色多多涩涩屋下载软件| 动漫美女被到爽了流| 色欲午夜无码久久久久久| 岛国片在线免费观看| 日本无码色哟哟婷婷最新网站| 成人国产亚洲欧美成人综合网 | 国产九色在线| 亚洲国产在线视频精品| 精子射到丝袜上图| 2021国产精品视频| 农村脱精光一级| 第一次处破女高清电影| 手机看片国产免费| 果冻传媒在线观看完整版免费| 亚洲欧美综合乱码精品成人网| 久久久久国产精品美女毛片| 99精品网站| 少女10声大哥喊退色狼| 吉吉av电影| 97SE亚洲国产综合在线| 日本19xxxx撤尿| 国语精彩对白2021| 97久久久久| 忘忧草高清| 巨胸美乳中文在线观看| 成人a毛片久久免费播放| 亚洲欧美日韩精品自拍| 欧美黑人巨大xxxxx| 国产日韩在线欧美视频| 伊人久久丁香色婷婷啪啪| 殴美黄色网| 极品网红液液酱粉嫩福利照子凌酱 |