Logo
中文版
详情联系: neusar-support@reachauto.com
使用手册 文档

1 文档概述

1.1 文档目的和范围

本文档为NeuSAR DS产品的SOA的用户使用说明书,为用户开发SOA Adapter程序时,使用SOA Adapter模块提供开发指导。

1.1.1 术语/缩略语

序号术语/缩略语说明
1SOA面向服务架构

1.2 参考文档

序号文档名版本
1《NeuSAR工具链-配置工具-Creator使用手册》10.0
2《AP产品-Execution Management-模块使用手册》

9.5

2 概述

2.1 功能特性

SOA Adapter模块提供M核功能在A核进行服务化的能力,SOA Adapter可以对外提供基于SOME/IP协议的Event,Field,Method服务。

序号功能特性(英文)功能特性(中文)特性说明
1Provide Method提供Method服务SOA Adapter可以对外提供Method服务,当消费者应用请求Method时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Method请求,进行处理,返回Method Response信息,A核SOA Adapter将Response返回给对应的消费者应用
2Provide Field Notifier提供Field Notifier服务SOA Adapter可以对外提供Field Notifier服务,当消费者应用订阅Field时,SOA Adapter将M核MID_SOA组件周期性或触发性的notifier数据作为Field Notifier数据,发送给对应的消费者应用
3Provide Field Setter提供Field Setter服务SOA Adapter可以对外提供Field Setter服务,当消费者应用调用Field Setter时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Field Setter调用,进行处理,返回Response信息,A核SOA Adapter将调用结果返回给对应的消费者应用
4Provide Field Getter提供Field Getter服务SOA Adapter可以对外提供Field Getter服务,当消费者应用调用Field Getter时,SOA Adapter将请求信息通过核间通信发送给M核,M核MID_SOA组件接收到Field Getter调用,将对应的Field数据返回给A核,A核SOA Adapter将调用结果返回给对应的消费者应用
5Provide Event提供Event服务SOA Adapter可以对外提供Event服务,当消费者应用订阅Event时,SOA Adapter将M核MID_SOA组件周期性或触发性的Event数据作为Event发送给对应的消费者应用

2.2 核心功能示例图

1

2.3 通信结构概述

A核SOA Adapter程序使用核间通信与M核MID_SOA进行通信,交互数据。SOA_Adapter使用CM模块提供服务,使用的协议为SOME/IP协议。MID_SOA与业务SWC间使用AutoSAR CP的RTE接口进行通信。

2.4 与其他模块的关联关系

A核SOA代理程序使用AP CM程序对外提供服务;

A核SOA代理程序可以使用EM模块进行启动;

A核SOA代理程序依赖核间通信模块和CM模块。

3 开发流程及上位机配置

3.1 开发流程示意图

下图为配置流程方法论: 2

3.2 SWC Design

根据业务,定义M核业务SWC功能。

如提供的demo中定义的SOA_SWC:

该SWC主要用于灯光控制,它可以提供控制灯光的相关功能。

3.3 Request SOA Service Design

根据业务功能,设计应用需要请求哪些SOA服务。

如提供的demo中定义的SOA_SWC,对外提供Method,Field Getter,Field Setter,Field Notifier服务:

  • Method方法供其他APP调用;
  • Field Getter方法用于获取当前指示灯的状态;
  • Field Setter方法用于设置当前指示灯的状态;
  • Field Notifier方法用于定期通知订阅该服务的APP当前指示灯的状态;
  • Event方法用于定周期或数据变化时通知订阅该服务的APP当前指示灯的状态;

3.4 SOA配置与生成

SOA的配置与生成分为两部分进行,A核配置AP内容,M核配置CP内容,以下分为两个章节介绍。

3.4.1 SOA AutoSAR AP服务配置

根据服务定义和设计,在AutoSAR AP页面配置在SOC侧需要请求的服务配置(比如灯光控制进程需要请求灯光控制服务),主要配置如下几个节点:

/CommunicationManagement/ServiceInterface/ /CommunicationManagement/SomeipServiceInterfaceDeployment /CommunicationManagement/RequiredSomeipServiceInstance /CommunicationManagement/SomeipServiceInstanceToMachineMapping 这些节点属于NeuSAR AP标准配置,此文档不详细展开配置过程。

以下为灯光请求服务的节点配置:

  • /CommunicationManagement/ServiceInterface/

3

4

5

6

  • /CommunicationManagement/SomeipServiceInterfaceDeployment

7

8

9

10

11

12

13

  • /CommunicationManagement/RequiredSomeipServiceInstance

14

15

  • /CommunicationManagement/SomeipServiceInstanceToMachineMapping

16

3.4.2 SOA AutoSAR CP配置

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

配置/SWC/ApplicationSwComponentType/节点:

这里主要配置SWC主体,该SWC提供的Port 17

18

19

20

21

22

23

24

25

26

27

28

  • 配置/Port Interface/SenderReceiverInterface节点:

29

30

31

32

33

34

35

36

37

  • 配置/SWC/SwcImplementation

38

以上为CP业务SWC的配置,该业务SWC的配置也可以通过标准Arxml导入: 39

3.4.3 SF SOA Adapter

完成AutoSAR AP的服务配置以及AutoSAR CP的Port Interface配置后,可以在ASF页面配置SOA Adapter,该配置主要用于关联CP的Port Interface及AP的Service Interface,从而自动生成SOA Adapter相关配置和代码,实现跨核的SOA服务代理功能。

SF SOA SOA Adapter配置项如下: 40 配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig

41 该节点主要配置如下内容:

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部署分区

  • 配置/SOAAdapter/SOAAdapterConfigs/SOAAdapterConfigs/SOAAdapterConfig/ServiceAdapter

42

右键新增服务映射节点 43

此处配置了灯光服务的映射。

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等节点

44

45

Event Name:Event名称,用户自定义 Target Event Deployment Ref:SOC侧的Event部署引用 46

Cycle Time:Event发送周期,最小100ms,最大500ms Send Strategy:Event发送策略,可选为Update on changed或者Cyclic Target S/R Interface Sender For Event:Event对应的SWC S/R接口 47

48

49

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

51

以上配置完成后,点击该按钮,会自动生成配置。 52

然后点击AP生成代码,SF代码生成,即可完成SOA Adapter配置。

3.4.4 编译与部署

编译阶段使用NeuSAR上位机工具进行。

3.4.5 M核

3.4.5.1 Arxml制作及Rte代码生成

需要配置MID_SOA、MID_S2S、SWC三个Arxml文件。

使用developer工具配置MID_SOA的Arxml文件,包括与SWC关联的接口配置、与MID_S2S关联的接口配置。以下图为例,红框内是与SWC关联的接口,绿框内是与MID_S2S关联的接口: 53

按照相同的命名规则,使用developer配置SWC的Arxml文件: 54

55

SWC与MID_SOA两部分Arxml的接口命名和参数类型等属性都是相同的,接口的方向是相反的。

使用developer工具配置MID_S2S的Arxml文件,包括与MID_SOA之间的接口配置、与COM之间的接口配置。以下图为例,红框内是与COM关联的接口,绿框内是与MID_SOA关联的接口: 56

57

MID_S2S与MID_SOA间接口的Arxml与MID_SOA Arxml的接口命名和参数类型等属性都是相同的,接口的方向是相反的。

MID_S2S与COM之间的接口按照信号方向配置。

再将MID_SOA、SWC、MID_S2S的Arxml导入到CP配置工具,编译生成CP组件中的src_Rte: 58

在src_Rte中,MID_SOA的RTE接口定义文件在Rte_SWC_MID_SOA.h中,SWC的RTE接口定义文件在Rte_SWC_Demo.h中,MID_S2S的RTE接口定义文件在Rte_SWC_MID_S2S.h中: 59

将CP工具生成的src_Rte目录下的上述个文件拷贝到M核工程的C_Core/Codes/Components目录下,后续用于编译制作M核bin文件。 60

3.4.5.2 核间私有协议工具配置

在核间私有协议工具中配置MID_SOA的服务接口,包括下述内容:

  • ConfigName,DeployedPartition和TargetApplicationRef

61

  • ProviderName,与A核通信的Channel,ConsumerIDs,ProvidedRecMaxMessageLength,ProvidedRecMaxMsgNum,ProvidedSendMaxMessageLength,ProvidedSendMaxMsgNum,ProvidedID

62

63

64

  • Event类型的ConsumerID,EventID,EventType
  • Method类型的MethodID

65

3.4.5.3 MID_SOA 代码生成

MID SOA代码通过Creator点击Generate Code生成。 生成的MID_SOA代码示例如下: 66

注:由于目前只支持单核,所以需要将生成的.c和.h文件中的预编译::ifdef CFG_ECU1删除后合入工程编译使用即可。

3.4.5.4 MID_S2S 代码生成

MID_S2S代码生成工具的使用流程和MID_SOA代码生成工具相同。

3.4.5.5 User SWC代码开发

User SWC由用户进行编码实现,其业务内容已经在3.2章节描述的SWC Design中完成。

User SWC需要通过上位机配置Rte接口内容,并编码实现相应的业务逻辑。实现相应的代码,集成到M核工程中,供后续编译使用。

3.4.5.6 编译与部署

M核工程主要使用NXP S32DS工具进行开发,S32DS工具的使用方式不在本文档中描述。

将3.5.2.2章节和3.5.2.3章节描述中生成的MID_SOA、MID_S2S代码替换M核工程中的相应代码,重新编译生成M核bin文件即可。 67

点击S32DS工具的Build按钮,编译生成的bin文件即为更新的M核bin文件。 68

编译生成的bin文件放置在工程目录中如下路径: 69

M核的bin文件更新方式: 将S32G开发板的sd卡插入电脑中,在ubuntu虚拟机中打开,会出现如下几个目录: 70

将生成的Can_Llce_DS_S32G274A_M7.bin拷贝至Boot NeuSAR目录替换原bin文件,然后弹出sd卡,插入S32G274开发版,重启即可。

4 成果物展示

4.1 A核

4.1.1 上位机生成

在上位机配置SOA Adapter和用户APP后,生成的相关主要内容包括code、manifest示例如下:

4.1.1.1 SOA Adapter

4.1.1.1.1 output/code内容展示

1、output/code/目录生成代码:

output/code/AsfNeusarSoaServer/GenData/ output/code/AsfNeusarSoaServer/gen/ 以Executable为根目录展开上位机的配置,提供SOA Adapter需要导入的.hpp文件,包含服务信息与服务数据类型定义信息,供SOA Adapter应用程序使用。

2、层级展示:

code/AsfNeusarSoaServer/
├── AsfNeusarSoaServer.cpp
├── CMakeLists.txt
├── gen
│   └── AsfNeusarSoaServer
│   ├── ara_com_main-AsfNeusarSoaServer.cpp
│   ├── includes
│   └── vsomeip
├── GenData
│   ├── Application_AsfNeusarSoaServer.hpp
│   ├── ara
│   │   ├── com
│   │   ├── sm
│   │   └── ucm
│   ├── asf
│   │   ├── health
│   │   └── nm
│   ├── com
│   │   └── vsomeip
│   ├── impl_type_array_int8_t_16.h
│   ├── impl_type_array_uint32_t_4.h
│   ├── impl_type_array_uint8_t_2.h
│   ├── impl_type_array_uint8_t_3.h
│   ├── impl_type_array_uint8_t_4.h
│   ├── impl_type_fgnametype.h
│   ├── impl_type_functiongrouplist.h
│   ├── impl_type_string.h
│   ├── impl_type_vec_ci.h
│   ├── impl_type_vec_hh.h
│   └── impl_type_vec_hrld.h
├── includes
│   └── services
│   ├── LightCtrl_imp.h
│   ├── MirrorPosFRSts_imp.h
│   ├── services_define.h
│   └── WindowFunctionCfg_imp.h
└── src
└── services
├── LightCtrl_imp.cpp
├── MirrorPosFRSts_imp.cpp
└── WindowFunctionCfg_imp.cpp

output/manifest内容展示 1、output/manifest/目录生成配置文件: 1)、AsfNeusarSoaServer/etc/vsomeip.json SOME/IP通信信息,供SOA Adapter进程使用。 2)、output/manifest/[processName]/MANIFEST.json 以Process为根目录展开上位机的配置,供运行时环境使用。 2、层级展示:

manifest/AsfNeusarSoaServer/
├── etc
│   ├── cryptoConfig.json
│   ├── MANIFEST.json
│   ├── processLogConfig.json
│   └── vsomeip.json
├── run
└── var
└── kvsdatabase.json

4.1.1.2 User APP

本章节以ACControler为例,该APP用于请求SOA Adapter提供的服务。

4.1.1.2.1 output/code内容展示

1、output/code/目录生成代码:

output/code/ACControler/GenData/ output/code/ACControler/gen/ 以Executable为根目录展开上位机的配置,提供ACControler需要导入的.hpp文件,包含服务信息与服务数据类型定义信息,供ACControler应用程序使用。

2、层级展示:

code/ACControler/
├── ACControler.cpp
├── CMakeLists.txt
├── gen
│ └── ACControler
│ ├── ara_com_main-ACControler.cpp
│ ├── includes
│ └── vsomeip
├── GenData
│ ├── Application_ACControler.hpp
│ ├── ara
│ │ ├── com
│ │ ├── sm
│ │ └── ucm
│ ├── impl_type_fgnametype.h
│ ├── impl_type_functiongrouplist.h
│ └── impl_type_string.h
├── includes
│ └── neusarSoaClient_activity.h
└── src
└── neusarSoaClient_activity.cpp

4.1.1.2.2 output/manifest内容展示

1、output/manifest/目录生成配置文件:

1)、ACControler/etc/vsomeip.json SOME/IP通信信息,供ACControler进程使用。

2)、output/manifest/[processName]/MANIFEST.json 以Process为根目录展开上位机的配置,供运行时环境使用。 2、层级展示:

manifest/ACControler/
├── etc
│   ├── cryptoConfig.json
│   ├── MANIFEST.json
│   ├── processLogConfig.json
│   └── vsomeip.json
├── run
└── var
└── kvsdatabase.json

4.2 M核

通过S32DS工具编译生成的M核bin文件在工程的Debug_RAM目录下。 71

5 部署流程

5.1 部署、升级

5.1.1 部署

将自适应应用程序相关部署文件部署到运行环境。

5.2 平台部署路径展示

注:部署路径根据项目而定,以下部署路径为/根目录下, 如下供参考。 服务端:

/opt/AsfNeusarSoaServer/
├── bin
│   └── AsfNeusarSoaServer ------编译好SOA Adapter程序,用于请求服务
├── etc
│   ├── cryptoConfig.json
│   ├── MANIFEST.json ------应用程序运行供执行管理使用的MANIFEST文件
│   ├── NeuSAR_ARA_Version
│   ├── processLogConfig.json ------LOG使用的配置清单
│   └── vsomeip.json ------进程使用的SOMEIP通信配置清单
├── run
└── var
└── kvsdatabase.json
ACControler:
/opt/ACControler/
├── bin
│   └── ACControler ------编译好ACControler程序,用于请求服务
├── etc
│   ├── cryptoConfig.json
│   ├── MANIFEST.json ------应用程序运行供执行管理使用的MANIFEST文件
│   ├── NeuSAR_ARA_Version
│   ├── processLogConfig.json ------LOG使用的配置清单
│   └── vsomeip.json ------进程使用的SOMEIP通信配置清单
├── run
└── var
└── kvsdatabase.json

6 附加说明

无。