CINXE.COM
使用手册: 首页
<!-- HTML header for doxygen 1.8.17--><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=9"> <meta name="generator" content="Doxygen 1.8.17"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>使用手册: 首页</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="customdoxygen.css" rel="stylesheet" type="text/css"> <link href="custom.css" rel="stylesheet" type="text/css"> <link href="bootstrap.min.css" rel="stylesheet" type="text/css"> <link href="pure-css-navigation.css" rel="stylesheet" type="text/css"></head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"><div style="width: 193px; display: flex; align-items: center;"> <a><img alt="Logo" src="logo.svg" style="height: 39px; width: 143px; max-width: unset; margin-bottom: 0;"></a> </div> <div class="pure-css-nav mb-5" style="flex: 1; height: 80px;"> <nav> <ul><li><a href="">NeuSAR工具链<span></span></a><ul><li><a href="">配置工具<span></span></a><ul><li><a href="/tech/toolchain/creator/html/index.html">Creator使用手册</a></li></ul></li><li><a href="">调试工具<span></span></a><ul><li><a href="/tech/toolchain/vmb/html/index.html">VMB调试工具</a></li></ul></li></ul></li><li><a href="">AP产品<span></span></a><ul><li><a href="">Communication Manage<span></span></a><ul><li><a href="/tech/ap/documentation/com/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Core<span></span></a><ul><li><a href="/tech/ap/documentation/core/html/index.html">模块API</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Cryptography<span></span></a><ul><li><a href="/tech/ap/documentation/crypto/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Diagnostics<span></span></a><ul><li><a href="/tech/ap/documentation/diag/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Execution Management<span></span></a><ul><li><a href="/tech/ap/documentation/em/html/index.html">模块API</a></li><li><a href="/tech/ap/user_manual/EM/html/index.html">模块使用手册</a></li><li><a href="/tech/ap/sample_manual/EM/html/index.html">模块用户实例文档</a></li></ul></li><li><a href="">Identity and Access Management<span></span></a><ul><li><a href="/tech/ap/documentation/idsm/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Log and Trace<span></span></a><ul><li><a href="/tech/ap/documentation/log/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Network Management<span></span></a><ul><li><a href="/tech/ap/documentation/nm/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Persistency<span></span></a><ul><li><a href="/tech/ap/documentation/per/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Platform Health Management<span></span></a><ul><li><a href="/tech/ap/documentation/phm/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">State Management<span></span></a><ul><li><a href="/tech/ap/documentation/sm/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Time Synchronization<span></span></a><ul><li><a href="/tech/ap/documentation/tsync/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Update and Config Management_master<span></span></a><ul><li><a href="/tech/ap/documentation/ucm_master/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li><li><a href="">Update and Config Management_server<span></span></a><ul><li><a href="/tech/ap/documentation/ucm_server/html/index.html">模块API</a></li><li class="disabled"><a href="">模块使用手册</a></li><li class="disabled"><a href="">模块用户实例文档</a></li></ul></li></ul></li><li class="active"><a href="">中间件产品<span></span></a><ul><li><a href="">域控制器中间件<span></span></a><ul><li><a href="">SOA<span></span></a><ul><li><a href="">A核<span></span></a><ul><li><a href="/tech/middleware/domain_control_middleware/SOA/A核/使用手册/html/index.html">使用手册</a></li><li><a href="/tech/middleware/domain_control_middleware/SOA/A核/用户实例文档/html/index.html">用户实例文档</a></li></ul></li><li><a href="">M核<span></span></a><ul><li class="disabled"><a href="">用户实例文档</a></li></ul></li></ul></li><li><a href="">OTA<span></span></a><ul><li><a href="">A核<span></span></a><ul><li><a href="">使用手册<span></span></a><ul><li class="disabled"><a href="">整车OTA升级</a></li><li class="disabled"><a href="">CCU自升级</a></li></ul></li></ul></li></ul></li><li><a href="">诊断管理<span></span></a><ul><li><a href="">A核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li class="disabled"><a href="">用户实例文档</a></li><li><a href="/tech/middleware/domain_control_middleware/诊断管理/A核/API/html/index.html">API</a></li></ul></li><li><a href="">M核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li class="disabled"><a href="">用户实例文档</a></li></ul></li></ul></li><li><a href="">日志管理<span></span></a><ul><li><a href="">A核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li><a href="/tech/middleware/domain_control_middleware/日志管理/A核/API/html/index.html">API</a></li></ul></li><li><a href="">M核<span></span></a><ul><li><a href="/tech/middleware/domain_control_middleware/日志管理/M核/API/html/index.html">API</a></li></ul></li></ul></li><li><a href="">健康管理<span></span></a><ul><li><a href="">A核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li></ul></li><li><a href="">M核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li class="disabled"><a href="">用户实例文档</a></li></ul></li></ul></li><li><a href="">加密<span></span></a><ul><li><a href="">A核<span></span></a><ul><li><a href="/tech/middleware/domain_control_middleware/加密/A核/API/html/index.html">API</a></li></ul></li></ul></li><li><a href="">核间通信<span></span></a><ul><li><a href="">A核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li class="disabled"><a href="">用户实例文档</a></li><li><a href="/tech/middleware/domain_control_middleware/核间通信/A核/API/html/index.html">API</a></li></ul></li><li><a href="">M核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li class="disabled"><a href="">用户实例文档</a></li><li><a href="/tech/middleware/domain_control_middleware/核间通信/M核/API/html/index.html">API</a></li></ul></li></ul></li><li><a href="">存储管理<span></span></a><ul><li><a href="">A核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li><li class="disabled"><a href="">用户实例文档</a></li><li><a href="/tech/middleware/domain_control_middleware/存储管理/A核/API/html/index.html">API</a></li></ul></li><li><a href="">M核<span></span></a><ul><li class="disabled"><a href="">使用手册</a></li></ul></li></ul></li></ul></li><li><a href="">通信框架<span></span></a><ul><li><a href="/tech/middleware/comm_frame/API/vmb_api_doc_html/index.html">API</a></li><li class="disabled"><a href="">使用手册</a></li></ul></li><li><a href="/tech/middleware/vdm/html/index.html">预定义消息</a></li><li class="disabled"><a href="">Python框架</a></li></ul></li></ul> </nav> </div> <div style="width: 260px; color: #222222;font-weight: 400;font-family: PingFangSC, PingFang SC;font-size: 14px;display: flex; align-items: center;">中文版 <span style="border: 5px solid transparent;border-top-width: 6px;border-top-color: #666666;border-bottom: 0;display: inline-block;margin-left: 2px;"></span> <div style="margin-left:20px;color: #222222;font-weight: 400;font-family: PingFangSC, PingFang SC;font-size: 12px;"> <span style="display: flex;align-items: center;height: 14px;line-height: 14px;">详情联系:</span> <span style="display: flex;align-items: center;height: 14px;line-height: 14px;">neusar-support@reachauto.com</span> </div> </div></div> <!-- end header part --> <!-- 制作者 Doxygen 1.8.17 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'搜索'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','搜索'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('index.html',''); initResizable(); }); /* @license-end */ </script> <div id="doc-content"><div id="bread-crumbs-nav-path"> <span>中间件产品</span>/<span>域控制器中间件</span>/<span>SOA</span>/<span>A核</span>/<span>使用手册</span> </div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="PageDoc"><div class="header"> <div class="headertitle"> <div class="title">使用手册 文档</div> </div> </div><!--header--> <div class="contents"><div class="watermark-doc"></div> <div class="textblock"><div></div><h1><a class="anchor" id="autotoc_md0"></a> 1 文档概述</h1> <h2><a class="anchor" id="autotoc_md1"></a> 1.1 文档目的和范围</h2> <p>本文档为NeuSAR DS产品的SOA的用户使用说明书,为用户开发SOA Adapter程序时,使用SOA Adapter模块提供开发指导。 </p> <h3><a class="anchor" id="autotoc_md2"></a> 1.1.1 术语/缩略语</h3> <table class="doxtable"> <tbody><tr> <td>序号</td><td>术语/缩略语</td><td>说明 </td></tr> <tr> <td>1</td><td>SOA</td><td>面向服务架构 </td></tr> </tbody></table> <h2><a class="anchor" id="autotoc_md3"></a> 1.2 参考文档</h2> <table class="doxtable"> <tbody><tr> <td>序号</td><td>文档名</td><td>版本 </td></tr> <tr> <td>1</td><td>《NeuSAR工具链-配置工具-Creator使用手册》</td><td>10.0 </td></tr> <tr> <td>2</td><td>《AP产品-Execution Management-模块使用手册》</td><td><p class="starttd">9.5 </p> <p class="endtd"></p> </td></tr> </tbody></table> <h1><a class="anchor" id="autotoc_md4"></a> 2 概述</h1> <h2><a class="anchor" id="autotoc_md5"></a> 2.1 功能特性</h2> <p>SOA Adapter模块提供M核功能在A核进行服务化的能力,SOA Adapter可以对外提供基于SOME/IP协议的Event,Field,Method服务。 </p><table class="doxtable"> <tbody><tr> <td>序号</td><td>功能特性(英文)</td><td>功能特性(中文)</td><td>特性说明 </td></tr> <tr> <td>1</td><td>Provide Method</td><td>提供Method服务</td><td>SOA Adapter可以对外提供Method服务,当消费者应用请求Method时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Method请求,进行处理,返回Method Response信息,A核SOA Adapter将Response返回给对应的消费者应用 </td></tr> <tr> <td>2</td><td>Provide Field Notifier</td><td>提供Field Notifier服务</td><td>SOA Adapter可以对外提供Field Notifier服务,当消费者应用订阅Field时,SOA Adapter将M核MID_SOA组件周期性或触发性的notifier数据作为Field Notifier数据,发送给对应的消费者应用 </td></tr> <tr> <td>3</td><td>Provide Field Setter</td><td>提供Field Setter服务</td><td>SOA Adapter可以对外提供Field Setter服务,当消费者应用调用Field Setter时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Field Setter调用,进行处理,返回Response信息,A核SOA Adapter将调用结果返回给对应的消费者应用 </td></tr> <tr> <td>4</td><td>Provide Field Getter</td><td>提供Field Getter服务</td><td>SOA Adapter可以对外提供Field Getter服务,当消费者应用调用Field Getter时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Field Getter调用,将对应的Field数据返回给A核,A核SOA Adapter将调用结果返回给对应的消费者应用 </td></tr> <tr> <td>5</td><td>Provide Event</td><td>提供Event服务</td><td>SOA Adapter可以对外提供Event服务,当消费者应用订阅Event时,SOA Adapter将M核MID_SOA组件周期性或触发性的Event数据作为Event发送给对应的消费者应用 </td></tr> </tbody></table> <h2><a class="anchor" id="autotoc_md6"></a> 2.2 核心功能示例图</h2> <p><img src="./image/1.png" alt="1" class="inline"></p> <h2><a class="anchor" id="autotoc_md7"></a> 2.3 通信结构概述</h2> <p>A核SOA Adapter程序使用核间通信与M核MID_SOA进行通信,交互数据。SOA_Adapter使用CM模块提供服务,使用的协议为SOME/IP协议。MID_SOA与业务SWC间使用AutoSAR CP的RTE接口进行通信。 </p> <h2><a class="anchor" id="autotoc_md8"></a> 2.4 与其他模块的关联关系</h2> <p>A核SOA代理程序使用AP CM程序对外提供服务;</p> <p>A核SOA代理程序可以使用EM模块进行启动;</p> <p>A核SOA代理程序依赖核间通信模块和CM模块。 </p> <h1><a class="anchor" id="autotoc_md9"></a> 3 开发流程及上位机配置</h1> <h2><a class="anchor" id="autotoc_md10"></a> 3.1 开发流程示意图</h2> <p>下图为配置流程方法论: <img src="./image/2.png" alt="2" class="inline"></p> <h2><a class="anchor" id="autotoc_md11"></a> 3.2 SWC Design</h2> <p>根据业务,定义M核业务SWC功能。</p> <p>如提供的demo中定义的SOA_SWC:</p> <p>该SWC主要用于灯光控制,它可以提供控制灯光的相关功能。 </p> <h2><a class="anchor" id="autotoc_md12"></a> 3.3 Request SOA Service Design</h2> <p>根据业务功能,设计应用需要请求哪些SOA服务。</p> <p>如提供的demo中定义的SOA_SWC,对外提供Method,Field Getter,Field Setter,Field Notifier服务:</p> <ul> <li>Method方法供其他APP调用;</li> <li>Field Getter方法用于获取当前指示灯的状态;</li> <li>Field Setter方法用于设置当前指示灯的状态;</li> <li>Field Notifier方法用于定期通知订阅该服务的APP当前指示灯的状态;</li> <li>Event方法用于定周期或数据变化时通知订阅该服务的APP当前指示灯的状态;</li> </ul> <h2><a class="anchor" id="autotoc_md13"></a> 3.4 SOA配置与生成</h2> <p>SOA的配置与生成分为两部分进行,A核配置AP内容,M核配置CP内容,以下分为两个章节介绍。 </p> <h3><a class="anchor" id="autotoc_md14"></a> 3.4.1 SOA AutoSAR AP服务配置</h3> <p>根据服务定义和设计,在AutoSAR AP页面配置在SOC侧需要请求的服务配置(比如灯光控制进程需要请求灯光控制服务),主要配置如下几个节点:</p> <p>/CommunicationManagement/ServiceInterface/ /CommunicationManagement/SomeipServiceInterfaceDeployment /CommunicationManagement/RequiredSomeipServiceInstance /CommunicationManagement/SomeipServiceInstanceToMachineMapping 这些节点属于NeuSAR AP标准配置,此文档不详细展开配置过程。</p> <p>以下为灯光请求服务的节点配置:</p> <ul> <li>/CommunicationManagement/ServiceInterface/</li> </ul> <p><img src="./image/3.png" alt="3" class="inline"></p> <p><img src="./image/4.png" alt="4" class="inline"></p> <p><img src="./image/5.png" alt="5" class="inline"></p> <p><img src="./image/6.png" alt="6" class="inline"></p> <ul> <li>/CommunicationManagement/SomeipServiceInterfaceDeployment</li> </ul> <p><img src="./image/7.png" alt="7" class="inline"></p> <p><img src="./image/8.png" alt="8" class="inline"></p> <p><img src="./image/9.png" alt="9" class="inline"></p> <p><img src="./image/10.png" alt="10" class="inline"></p> <p><img src="./image/11.png" alt="11" class="inline"></p> <p><img src="./image/12.png" alt="12" class="inline"></p> <p><img src="./image/13.png" alt="13" class="inline"></p> <ul> <li>/CommunicationManagement/RequiredSomeipServiceInstance</li> </ul> <p><img src="./image/14.png" alt="14" class="inline"></p> <p><img src="./image/15.png" alt="15" class="inline"></p> <ul> <li>/CommunicationManagement/SomeipServiceInstanceToMachineMapping</li> </ul> <p><img src="./image/16.png" alt="16" class="inline"></p> <h3><a class="anchor" id="autotoc_md15"></a> 3.4.2 SOA AutoSAR CP配置</h3> <p>针对SOA Adapter功能,服务的实际提供方由MCU承担,因此在MCU有具体的业务SWC提供服务功能,本章节主要描述配置该业务SWC提供的服务,此部分内容属于标准AutoSAR CP内容,本文档不详细展开。</p> <p>配置/SWC/ApplicationSwComponentType/节点:</p> <p>这里主要配置SWC主体,该SWC提供的Port <img src="./image/17.png" alt="17" class="inline"></p> <p><img src="./image/18.png" alt="18" class="inline"></p> <p><img src="./image/19.png" alt="19" class="inline"></p> <p><img src="./image/20.png" alt="20" class="inline"></p> <p><img src="./image/21.png" alt="21" class="inline"></p> <p><img src="./image/22.png" alt="22" class="inline"></p> <p><img src="./image/23.png" alt="23" class="inline"></p> <p><img src="./image/24.png" alt="24" class="inline"></p> <p><img src="./image/25.png" alt="25" class="inline"></p> <p><img src="./image/26.png" alt="26" class="inline"></p> <p><img src="./image/27.png" alt="27" class="inline"></p> <p><img src="./image/28.png" alt="28" class="inline"></p> <ul> <li>配置/Port Interface/SenderReceiverInterface节点:</li> </ul> <p><img src="./image/29.png" alt="29" class="inline"></p> <p><img src="./image/30.png" alt="30" class="inline"></p> <p><img src="./image/31.png" alt="31" class="inline"></p> <p><img src="./image/32.png" alt="32" class="inline"></p> <p><img src="./image/33.png" alt="33" class="inline"></p> <p><img src="./image/34.png" alt="34" class="inline"></p> <p><img src="./image/35.png" alt="35" class="inline"></p> <p><img src="./image/36.png" alt="36" class="inline"></p> <p><img src="./image/37.png" alt="37" class="inline"></p> <ul> <li>配置/SWC/SwcImplementation</li> </ul> <p><img src="./image/38.png" alt="38" class="inline"></p> <p>以上为CP业务SWC的配置,该业务SWC的配置也可以通过标准Arxml导入: <img src="./image/39.png" alt="39" class="inline"></p> <h3><a class="anchor" id="autotoc_md16"></a> 3.4.3 SF SOA Adapter</h3> <p>完成AutoSAR AP的服务配置以及AutoSAR CP的Port Interface配置后,可以在ASF页面配置SOA Adapter,该配置主要用于关联CP的Port Interface及AP的Service Interface,从而自动生成SOA Adapter相关配置和代码,实现跨核的SOA服务代理功能。</p> <p>SF SOA SOA Adapter配置项如下: <img src="./image/40.png" alt="40" class="inline"> 配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig</p> <p><img src="./image/41.png" alt="41" class="inline"> 该节点主要配置如下内容:</p> <p>Config Name:配置名称,用户自定义;</p> <p>SOA Event Notifier Runnable Period:表示Event/Notifier服务在MCU的处理runnable周期,最小为100ms,最大500ms;</p> <p>SOA Method Setter Getter Runnable Period:表示Method/Setter/Getter服务处理在MCU的runnable周期,最小为10ms,最大500ms;</p> <p>Someip Service Discovery Ref:表示服务发现配置,标准AP节点</p> <p>SOMEIP Service Location:表示SOME/IP服务部署分区</p> <p>SWC Interface Location: 表示业务SWC部署分区</p> <ul> <li>配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig/ServiceAdapter</li> </ul> <p><img src="./image/42.png" alt="42" class="inline"></p> <p>右键新增服务映射节点 <img src="./image/43.png" alt="43" class="inline"></p> <p>此处配置了灯光服务的映射。</p> <p>ServiceInterface Name:表示服务接口名,用户自定义</p> <p>SOA Service Adapter Version:版本号,用户自定义,后续可用于识别版本</p> <p>Target Required Instance To Machine Mapping Ref:配置SOC侧请求该服务的Instance到Machine的映射引用</p> <p>Target Required Service Instance Ref:配置SOC侧请求该服务的Instance引用 Target Service Deployment Ref:配置该服务的部署引用</p> <p>Tcp Port:配置该服务发布的TCP端口号</p> <p>Udp Port:配置该服务发布的UDP端口号</p> <ul> <li><p class="startli">配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig/ServiceAdapter/EventAdapterConfig</p> <p class="startli">在ServiceAdapter节点下可配置EventAdapter,FieldAdapter,MethodAdapter等节点</p> </li> </ul> <p><img src="./image/44.png" alt="44" class="inline"></p> <p><img src="./image/45.png" alt="45" class="inline"></p> <p>Event Name:Event名称,用户自定义 Target Event Deployment Ref:SOC侧的Event部署引用 <img src="./image/46.png" alt="46" class="inline"></p> <p>Cycle Time:Event发送周期,最小100ms,最大500ms Send Strategy:Event发送策略,可选为Update on changed或者Cyclic Target S/R Interface Sender For Event:Event对应的SWC S/R接口 <img src="./image/47.png" alt="47" class="inline"></p> <p><img src="./image/48.png" alt="48" class="inline"></p> <p><img src="./image/49.png" alt="49" class="inline"></p> <p>FieldNotifier节点映射配置与Event类似,下面是setter节点配置示例。 <img src="./image/50.png" alt="50" class="inline"></p> <p><img src="./image/51.png" alt="51" class="inline"></p> <p>以上配置完成后,点击该按钮,会自动生成配置。 <img src="./image/52.png" alt="52" class="inline"></p> <p>然后点击AP生成代码,SF代码生成,即可完成SOA Adapter配置。 </p> <h3><a class="anchor" id="autotoc_md17"></a> 3.4.4 编译与部署</h3> <p>编译阶段使用NeuSAR上位机工具进行。 </p> <h3><a class="anchor" id="autotoc_md18"></a> 3.4.5 M核</h3> <h4><a class="anchor" id="autotoc_md19"></a> 3.4.5.1 Arxml制作及Rte代码生成</h4> <p>需要配置MID_SOA、MID_S2S、SWC三个Arxml文件。</p> <p>使用developer工具配置MID_SOA的Arxml文件,包括与SWC关联的接口配置、与MID_S2S关联的接口配置。以下图为例,红框内是与SWC关联的接口,绿框内是与MID_S2S关联的接口: <img src="./image/53.png" alt="53" class="inline"></p> <p>按照相同的命名规则,使用developer配置SWC的Arxml文件: <img src="./image/54.png" alt="54" class="inline"></p> <p><img src="./image/55.png" alt="55" class="inline"></p> <p>SWC与MID_SOA两部分Arxml的接口命名和参数类型等属性都是相同的,接口的方向是相反的。</p> <p>使用developer工具配置MID_S2S的Arxml文件,包括与MID_SOA之间的接口配置、与COM之间的接口配置。以下图为例,红框内是与COM关联的接口,绿框内是与MID_SOA关联的接口: <img src="./image/56.png" alt="56" class="inline"></p> <p><img src="./image/57.png" alt="57" class="inline"></p> <p>MID_S2S与MID_SOA间接口的Arxml与MID_SOA Arxml的接口命名和参数类型等属性都是相同的,接口的方向是相反的。</p> <p>MID_S2S与COM之间的接口按照信号方向配置。</p> <p>再将MID_SOA、SWC、MID_S2S的Arxml导入到CP配置工具,编译生成CP组件中的src_Rte: <img src="./image/58.png" alt="58" class="inline"></p> <p>在src_Rte中,MID_SOA的RTE接口定义文件在Rte_SWC_MID_SOA.h中,SWC的RTE接口定义文件在Rte_SWC_Demo.h中,MID_S2S的RTE接口定义文件在Rte_SWC_MID_S2S.h中: <img src="./image/59.png" alt="59" class="inline"></p> <p>将CP工具生成的src_Rte目录下的上述个文件拷贝到M核工程的C_Core/Codes/Components目录下,后续用于编译制作M核bin文件。 <img src="./image/60.png" alt="60" class="inline"></p> <h4><a class="anchor" id="autotoc_md20"></a> 3.4.5.2 核间私有协议工具配置</h4> <p>在核间私有协议工具中配置MID_SOA的服务接口,包括下述内容:</p> <ul> <li>ConfigName,DeployedPartition和TargetApplicationRef</li> </ul> <p><img src="./image/61.png" alt="61" class="inline"></p> <ul> <li>ProviderName,与A核通信的Channel,ConsumerIDs,ProvidedRecMaxMessageLength,ProvidedRecMaxMsgNum,ProvidedSendMaxMessageLength,ProvidedSendMaxMsgNum,ProvidedID</li> </ul> <p><img src="./image/62.png" alt="62" class="inline"></p> <p><img src="./image/63.png" alt="63" class="inline"></p> <p><img src="./image/64.png" alt="64" class="inline"></p> <ul> <li>Event类型的ConsumerID,EventID,EventType</li> <li>Method类型的MethodID</li> </ul> <p><img src="./image/65.png" alt="65" class="inline"></p> <h4><a class="anchor" id="autotoc_md21"></a> 3.4.5.3 MID_SOA 代码生成</h4> <p>MID SOA代码通过Creator点击Generate Code生成。 生成的MID_SOA代码示例如下: <img src="./image/66.png" alt="66" class="inline"></p> <p>注:由于目前只支持单核,所以需要将生成的.c和.h文件中的预编译::ifdef CFG_ECU1删除后合入工程编译使用即可。 </p> <h4><a class="anchor" id="autotoc_md22"></a> 3.4.5.4 MID_S2S 代码生成</h4> <p>MID_S2S代码生成工具的使用流程和MID_SOA代码生成工具相同。 </p> <h4><a class="anchor" id="autotoc_md23"></a> 3.4.5.5 User SWC代码开发</h4> <p>User SWC由用户进行编码实现,其业务内容已经在3.2章节描述的SWC Design中完成。</p> <p>User SWC需要通过上位机配置Rte接口内容,并编码实现相应的业务逻辑。实现相应的代码,集成到M核工程中,供后续编译使用。</p> <h4><a class="anchor" id="autotoc_md24"></a> 3.4.5.6 编译与部署</h4> <p>M核工程主要使用NXP S32DS工具进行开发,S32DS工具的使用方式不在本文档中描述。</p> <p>将3.5.2.2章节和3.5.2.3章节描述中生成的MID_SOA、MID_S2S代码替换M核工程中的相应代码,重新编译生成M核bin文件即可。 <img src="./image/67.png" alt="67" class="inline"></p> <p>点击S32DS工具的Build按钮,编译生成的bin文件即为更新的M核bin文件。 <img src="./image/68.png" alt="68" class="inline"></p> <p>编译生成的bin文件放置在工程目录中如下路径: <img src="./image/69.png" alt="69" class="inline"></p> <p>M核的bin文件更新方式: 将S32G开发板的sd卡插入电脑中,在ubuntu虚拟机中打开,会出现如下几个目录: <img src="./image/70.png" alt="70" class="inline"></p> <p>将生成的Can_Llce_DS_S32G274A_M7.bin拷贝至Boot NeuSAR目录替换原bin文件,然后弹出sd卡,插入S32G274开发版,重启即可。 </p> <h1><a class="anchor" id="autotoc_md25"></a> 4 成果物展示</h1> <h2><a class="anchor" id="autotoc_md26"></a> 4.1 A核</h2> <h3><a class="anchor" id="autotoc_md27"></a> 4.1.1 上位机生成</h3> <p>在上位机配置SOA Adapter和用户APP后,生成的相关主要内容包括code、manifest示例如下: </p> <h4><a class="anchor" id="autotoc_md28"></a> 4.1.1.1 SOA Adapter</h4> <p><a class="anchor" id="autotoc_md29"></a></p><h5>4.1.1.1.1 output/code内容展示</h5> <p>1、output/code/目录生成代码:</p> <p>output/code/AsfNeusarSoaServer/GenData/ output/code/AsfNeusarSoaServer/gen/ 以Executable为根目录展开上位机的配置,提供SOA Adapter需要导入的.hpp文件,包含服务信息与服务数据类型定义信息,供SOA Adapter应用程序使用。</p> <p>2、层级展示: </p><div class="fragment"><div class="line">code/AsfNeusarSoaServer/</div> <div class="line">├── AsfNeusarSoaServer.cpp</div> <div class="line">├── CMakeLists.txt</div> <div class="line">├── gen</div> <div class="line">│ └── AsfNeusarSoaServer</div> <div class="line">│ ├── ara_com_main-AsfNeusarSoaServer.cpp</div> <div class="line">│ ├── includes</div> <div class="line">│ └── vsomeip</div> <div class="line">├── GenData</div> <div class="line">│ ├── Application_AsfNeusarSoaServer.hpp</div> <div class="line">│ ├── ara</div> <div class="line">│ │ ├── com</div> <div class="line">│ │ ├── sm</div> <div class="line">│ │ └── ucm</div> <div class="line">│ ├── asf</div> <div class="line">│ │ ├── health</div> <div class="line">│ │ └── nm</div> <div class="line">│ ├── com</div> <div class="line">│ │ └── vsomeip</div> <div class="line">│ ├── impl_type_array_int8_t_16.h</div> <div class="line">│ ├── impl_type_array_uint32_t_4.h</div> <div class="line">│ ├── impl_type_array_uint8_t_2.h</div> <div class="line">│ ├── impl_type_array_uint8_t_3.h</div> <div class="line">│ ├── impl_type_array_uint8_t_4.h</div> <div class="line">│ ├── impl_type_fgnametype.h</div> <div class="line">│ ├── impl_type_functiongrouplist.h</div> <div class="line">│ ├── impl_type_string.h</div> <div class="line">│ ├── impl_type_vec_ci.h</div> <div class="line">│ ├── impl_type_vec_hh.h</div> <div class="line">│ └── impl_type_vec_hrld.h</div> <div class="line">├── includes</div> <div class="line">│ └── services</div> <div class="line">│ ├── LightCtrl_imp.h</div> <div class="line">│ ├── MirrorPosFRSts_imp.h</div> <div class="line">│ ├── services_define.h</div> <div class="line">│ └── WindowFunctionCfg_imp.h</div> <div class="line">└── src</div> <div class="line"> └── services</div> <div class="line"> ├── LightCtrl_imp.cpp</div> <div class="line"> ├── MirrorPosFRSts_imp.cpp</div> <div class="line"> └── WindowFunctionCfg_imp.cpp</div> </div><!-- fragment --><p>output/manifest内容展示 1、output/manifest/目录生成配置文件: 1)、AsfNeusarSoaServer/etc/vsomeip.json SOME/IP通信信息,供SOA Adapter进程使用。 2)、output/manifest/[processName]/MANIFEST.json 以Process为根目录展开上位机的配置,供运行时环境使用。 2、层级展示: </p><div class="fragment"><div class="line">manifest/AsfNeusarSoaServer/</div> <div class="line">├── etc</div> <div class="line">│ ├── cryptoConfig.json</div> <div class="line">│ ├── MANIFEST.json</div> <div class="line">│ ├── processLogConfig.json</div> <div class="line">│ └── vsomeip.json</div> <div class="line">├── run</div> <div class="line">└── var</div> <div class="line"> └── kvsdatabase.json</div> </div><!-- fragment --><h4><a class="anchor" id="autotoc_md30"></a> 4.1.1.2 User APP</h4> <p>本章节以ACControler为例,该APP用于请求SOA Adapter提供的服务。 <a class="anchor" id="autotoc_md31"></a></p><h5>4.1.1.2.1 output/code内容展示</h5> <p>1、output/code/目录生成代码:</p> <p>output/code/ACControler/GenData/ output/code/ACControler/gen/ 以Executable为根目录展开上位机的配置,提供ACControler需要导入的.hpp文件,包含服务信息与服务数据类型定义信息,供ACControler应用程序使用。</p> <p>2、层级展示: </p><div class="fragment"><div class="line">code/ACControler/</div> <div class="line">├── ACControler.cpp</div> <div class="line">├── CMakeLists.txt</div> <div class="line">├── gen</div> <div class="line">│ └── ACControler</div> <div class="line">│ ├── ara_com_main-ACControler.cpp</div> <div class="line">│ ├── includes</div> <div class="line">│ └── vsomeip</div> <div class="line">├── GenData</div> <div class="line">│ ├── Application_ACControler.hpp</div> <div class="line">│ ├── ara</div> <div class="line">│ │ ├── com</div> <div class="line">│ │ ├── sm</div> <div class="line">│ │ └── ucm</div> <div class="line">│ ├── impl_type_fgnametype.h</div> <div class="line">│ ├── impl_type_functiongrouplist.h</div> <div class="line">│ └── impl_type_string.h</div> <div class="line">├── includes</div> <div class="line">│ └── neusarSoaClient_activity.h</div> <div class="line">└── src</div> <div class="line"> └── neusarSoaClient_activity.cpp</div> </div><!-- fragment --><p><a class="anchor" id="autotoc_md32"></a></p><h5>4.1.1.2.2 output/manifest内容展示</h5> <p>1、output/manifest/目录生成配置文件:</p> <p>1)、ACControler/etc/vsomeip.json SOME/IP通信信息,供ACControler进程使用。</p> <p>2)、output/manifest/[processName]/MANIFEST.json 以Process为根目录展开上位机的配置,供运行时环境使用。 2、层级展示:</p> <div class="fragment"><div class="line">manifest/ACControler/</div> <div class="line">├── etc</div> <div class="line">│ ├── cryptoConfig.json</div> <div class="line">│ ├── MANIFEST.json</div> <div class="line">│ ├── processLogConfig.json</div> <div class="line">│ └── vsomeip.json</div> <div class="line">├── run</div> <div class="line">└── var</div> <div class="line"> └── kvsdatabase.json</div> </div><!-- fragment --><h2><a class="anchor" id="autotoc_md33"></a> 4.2 M核</h2> <p>通过S32DS工具编译生成的M核bin文件在工程的Debug_RAM目录下。 <img src="./image/71.png" alt="71" class="inline"></p> <h1><a class="anchor" id="autotoc_md34"></a> 5 部署流程</h1> <h2><a class="anchor" id="autotoc_md35"></a> 5.1 部署、升级</h2> <h3><a class="anchor" id="autotoc_md36"></a> 5.1.1 部署</h3> <p>将自适应应用程序相关部署文件部署到运行环境。 </p> <h2><a class="anchor" id="autotoc_md37"></a> 5.2 平台部署路径展示</h2> <p>注:部署路径根据项目而定,以下部署路径为/根目录下, 如下供参考。 服务端: </p><div class="fragment"><div class="line">/opt/AsfNeusarSoaServer/</div> <div class="line">├── bin</div> <div class="line">│ └── AsfNeusarSoaServer ------编译好SOA Adapter程序,用于请求服务</div> <div class="line">├── etc</div> <div class="line">│ ├── cryptoConfig.json</div> <div class="line">│ ├── MANIFEST.json ------应用程序运行供执行管理使用的MANIFEST文件</div> <div class="line">│ ├── NeuSAR_ARA_Version</div> <div class="line">│ ├── processLogConfig.json ------LOG使用的配置清单</div> <div class="line">│ └── vsomeip.json ------进程使用的SOMEIP通信配置清单</div> <div class="line">├── run</div> <div class="line">└── var</div> <div class="line"> └── kvsdatabase.json </div> <div class="line"> </div> <div class="line">ACControler:</div> <div class="line">/opt/ACControler/</div> <div class="line">├── bin</div> <div class="line">│ └── ACControler ------编译好ACControler程序,用于请求服务</div> <div class="line">├── etc</div> <div class="line">│ ├── cryptoConfig.json</div> <div class="line">│ ├── MANIFEST.json ------应用程序运行供执行管理使用的MANIFEST文件</div> <div class="line">│ ├── NeuSAR_ARA_Version</div> <div class="line">│ ├── processLogConfig.json ------LOG使用的配置清单</div> <div class="line">│ └── vsomeip.json ------进程使用的SOMEIP通信配置清单</div> <div class="line">├── run</div> <div class="line">└── var</div> <div class="line"> └── kvsdatabase.json </div> </div><!-- fragment --><h1><a class="anchor" id="autotoc_md38"></a> 6 附加说明</h1> <p>无。 </p> </div></div><!-- PageDoc --> </div><!-- contents --> </div><!-- doc-content --> <!-- HTML footer for doxygen 1.8.17--> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">睿驰机密文件 版权所有:睿驰汽车技术(沈阳)有限公司</li> </ul> </div> </body></html>