本文档为NeuSAR DS产品的SOA的用户使用说明书,为用户开发SOA Adapter程序时,使用SOA Adapter模块提供开发指导。
| 序号 | 术语/缩略语 | 说明 |
| 1 | SOA | 面向服务架构 |
| 序号 | 文档名 | 版本 |
| 1 | 《NeuSAR工具链-配置工具-Creator使用手册》 | 10.0 |
| 2 | 《AP产品-Execution Management-模块使用手册》 | 9.5 |
SOA Adapter模块提供M核功能在A核进行服务化的能力,SOA Adapter可以对外提供基于SOME/IP协议的Event,Field,Method服务。
| 序号 | 功能特性(英文) | 功能特性(中文) | 特性说明 |
| 1 | Provide Method | 提供Method服务 | SOA Adapter可以对外提供Method服务,当消费者应用请求Method时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Method请求,进行处理,返回Method Response信息,A核SOA Adapter将Response返回给对应的消费者应用 |
| 2 | Provide Field Notifier | 提供Field Notifier服务 | SOA Adapter可以对外提供Field Notifier服务,当消费者应用订阅Field时,SOA Adapter将M核MID_SOA组件周期性或触发性的notifier数据作为Field Notifier数据,发送给对应的消费者应用 |
| 3 | Provide Field Setter | 提供Field Setter服务 | SOA Adapter可以对外提供Field Setter服务,当消费者应用调用Field Setter时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Field Setter调用,进行处理,返回Response信息,A核SOA Adapter将调用结果返回给对应的消费者应用 |
| 4 | Provide Field Getter | 提供Field Getter服务 | SOA Adapter可以对外提供Field Getter服务,当消费者应用调用Field Getter时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Field Getter调用,将对应的Field数据返回给A核,A核SOA Adapter将调用结果返回给对应的消费者应用 |
| 5 | Provide Event | 提供Event服务 | SOA Adapter可以对外提供Event服务,当消费者应用订阅Event时,SOA Adapter将M核MID_SOA组件周期性或触发性的Event数据作为Event发送给对应的消费者应用 |

A核SOA Adapter程序使用核间通信与M核MID_SOA进行通信,交互数据。SOA_Adapter使用CM模块提供服务,使用的协议为SOME/IP协议。MID_SOA与业务SWC间使用AutoSAR CP的RTE接口进行通信。
A核SOA代理程序使用AP CM程序对外提供服务;
A核SOA代理程序可以使用EM模块进行启动;
A核SOA代理程序依赖核间通信模块和CM模块。
下图为配置流程方法论: 
根据业务,定义M核业务SWC功能。
如提供的demo中定义的SOA_SWC:
该SWC主要用于灯光控制,它可以提供控制灯光的相关功能。
根据业务功能,设计应用需要请求哪些SOA服务。
如提供的demo中定义的SOA_SWC,对外提供Method,Field Getter,Field Setter,Field Notifier服务:
SOA的配置与生成分为两部分进行,A核配置AP内容,M核配置CP内容,以下分为两个章节介绍。
根据服务定义和设计,在AutoSAR AP页面配置在SOC侧需要请求的服务配置(比如灯光控制进程需要请求灯光控制服务),主要配置如下几个节点:
/CommunicationManagement/ServiceInterface/ /CommunicationManagement/SomeipServiceInterfaceDeployment /CommunicationManagement/RequiredSomeipServiceInstance /CommunicationManagement/SomeipServiceInstanceToMachineMapping 这些节点属于NeuSAR AP标准配置,此文档不详细展开配置过程。
以下为灯光请求服务的节点配置:














针对SOA Adapter功能,服务的实际提供方由MCU承担,因此在MCU有具体的业务SWC提供服务功能,本章节主要描述配置该业务SWC提供的服务,此部分内容属于标准AutoSAR CP内容,本文档不详细展开。
配置/SWC/ApplicationSwComponentType/节点:
这里主要配置SWC主体,该SWC提供的Port 





















以上为CP业务SWC的配置,该业务SWC的配置也可以通过标准Arxml导入: 
完成AutoSAR AP的服务配置以及AutoSAR CP的Port Interface配置后,可以在ASF页面配置SOA Adapter,该配置主要用于关联CP的Port Interface及AP的Service Interface,从而自动生成SOA Adapter相关配置和代码,实现跨核的SOA服务代理功能。
SF SOA SOA Adapter配置项如下:
配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig
该节点主要配置如下内容:
Config Name:配置名称,用户自定义;
SOA Event Notifier Runnable Period:表示Event/Notifier服务在MCU的处理runnable周期,最小为100ms,最大500ms;
SOA Method Setter Getter Runnable Period:表示Method/Setter/Getter服务处理在MCU的runnable周期,最小为10ms,最大500ms;
Someip Service Discovery Ref:表示服务发现配置,标准AP节点
SOMEIP Service Location:表示SOME/IP服务部署分区
SWC Interface Location: 表示业务SWC部署分区

右键新增服务映射节点 
此处配置了灯光服务的映射。
ServiceInterface Name:表示服务接口名,用户自定义
SOA Service Adapter Version:版本号,用户自定义,后续可用于识别版本
Target Required Instance To Machine Mapping Ref:配置SOC侧请求该服务的Instance到Machine的映射引用
Target Required Service Instance Ref:配置SOC侧请求该服务的Instance引用 Target Service Deployment Ref:配置该服务的部署引用
Tcp Port:配置该服务发布的TCP端口号
Udp Port:配置该服务发布的UDP端口号
配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig/ServiceAdapter/EventAdapterConfig
在ServiceAdapter节点下可配置EventAdapter,FieldAdapter,MethodAdapter等节点


Event Name:Event名称,用户自定义 Target Event Deployment Ref:SOC侧的Event部署引用 
Cycle Time:Event发送周期,最小100ms,最大500ms Send Strategy:Event发送策略,可选为Update on changed或者Cyclic Target S/R Interface Sender For Event:Event对应的SWC S/R接口 


FieldNotifier节点映射配置与Event类似,下面是setter节点配置示例。 

以上配置完成后,点击该按钮,会自动生成配置。 
然后点击AP生成代码,SF代码生成,即可完成SOA Adapter配置。
编译阶段使用NeuSAR上位机工具进行。
需要配置MID_SOA、MID_S2S、SWC三个Arxml文件。
使用developer工具配置MID_SOA的Arxml文件,包括与SWC关联的接口配置、与MID_S2S关联的接口配置。以下图为例,红框内是与SWC关联的接口,绿框内是与MID_S2S关联的接口: 
按照相同的命名规则,使用developer配置SWC的Arxml文件: 

SWC与MID_SOA两部分Arxml的接口命名和参数类型等属性都是相同的,接口的方向是相反的。
使用developer工具配置MID_S2S的Arxml文件,包括与MID_SOA之间的接口配置、与COM之间的接口配置。以下图为例,红框内是与COM关联的接口,绿框内是与MID_SOA关联的接口: 

MID_S2S与MID_SOA间接口的Arxml与MID_SOA Arxml的接口命名和参数类型等属性都是相同的,接口的方向是相反的。
MID_S2S与COM之间的接口按照信号方向配置。
再将MID_SOA、SWC、MID_S2S的Arxml导入到CP配置工具,编译生成CP组件中的src_Rte: 
在src_Rte中,MID_SOA的RTE接口定义文件在Rte_SWC_MID_SOA.h中,SWC的RTE接口定义文件在Rte_SWC_Demo.h中,MID_S2S的RTE接口定义文件在Rte_SWC_MID_S2S.h中: 
将CP工具生成的src_Rte目录下的上述个文件拷贝到M核工程的C_Core/Codes/Components目录下,后续用于编译制作M核bin文件。 
在核间私有协议工具中配置MID_SOA的服务接口,包括下述内容:





MID SOA代码通过Creator点击Generate Code生成。 生成的MID_SOA代码示例如下: 
注:由于目前只支持单核,所以需要将生成的.c和.h文件中的预编译::ifdef CFG_ECU1删除后合入工程编译使用即可。
MID_S2S代码生成工具的使用流程和MID_SOA代码生成工具相同。
User SWC由用户进行编码实现,其业务内容已经在3.2章节描述的SWC Design中完成。
User SWC需要通过上位机配置Rte接口内容,并编码实现相应的业务逻辑。实现相应的代码,集成到M核工程中,供后续编译使用。
M核工程主要使用NXP S32DS工具进行开发,S32DS工具的使用方式不在本文档中描述。
将3.5.2.2章节和3.5.2.3章节描述中生成的MID_SOA、MID_S2S代码替换M核工程中的相应代码,重新编译生成M核bin文件即可。 
点击S32DS工具的Build按钮,编译生成的bin文件即为更新的M核bin文件。 
编译生成的bin文件放置在工程目录中如下路径: 
M核的bin文件更新方式: 将S32G开发板的sd卡插入电脑中,在ubuntu虚拟机中打开,会出现如下几个目录: 
将生成的Can_Llce_DS_S32G274A_M7.bin拷贝至Boot NeuSAR目录替换原bin文件,然后弹出sd卡,插入S32G274开发版,重启即可。
在上位机配置SOA Adapter和用户APP后,生成的相关主要内容包括code、manifest示例如下:
1、output/code/目录生成代码:
output/code/AsfNeusarSoaServer/GenData/ output/code/AsfNeusarSoaServer/gen/ 以Executable为根目录展开上位机的配置,提供SOA Adapter需要导入的.hpp文件,包含服务信息与服务数据类型定义信息,供SOA Adapter应用程序使用。
2、层级展示:
output/manifest内容展示 1、output/manifest/目录生成配置文件: 1)、AsfNeusarSoaServer/etc/vsomeip.json SOME/IP通信信息,供SOA Adapter进程使用。 2)、output/manifest/[processName]/MANIFEST.json 以Process为根目录展开上位机的配置,供运行时环境使用。 2、层级展示:
本章节以ACControler为例,该APP用于请求SOA Adapter提供的服务。
1、output/code/目录生成代码:
output/code/ACControler/GenData/ output/code/ACControler/gen/ 以Executable为根目录展开上位机的配置,提供ACControler需要导入的.hpp文件,包含服务信息与服务数据类型定义信息,供ACControler应用程序使用。
2、层级展示:
1、output/manifest/目录生成配置文件:
1)、ACControler/etc/vsomeip.json SOME/IP通信信息,供ACControler进程使用。
2)、output/manifest/[processName]/MANIFEST.json 以Process为根目录展开上位机的配置,供运行时环境使用。 2、层级展示:
通过S32DS工具编译生成的M核bin文件在工程的Debug_RAM目录下。 
将自适应应用程序相关部署文件部署到运行环境。
注:部署路径根据项目而定,以下部署路径为/根目录下, 如下供参考。 服务端:
无。