AP AUTOSAR 设计思想及原理
AP AUTOSAR 设计思想及原理
aestech
每天分享一篇技术文章!
AP AUTOSAR 的设计思想
-
描述 AA 的运行环境,如 Machine(Virtue ECU)及CPU Core ID -
描述 AA 的启动配置及启动依赖 -
描述 AA 的加载及通信端口,应用如果要存在的话,首先要解决的就是通信的问题。当我们在做通信时,我们需要知道,通信端口是什么、ID 是什么?所以我们需要明确自己的通信方式跟 ID。 -
描述 AA 的 Log Trace 的方式、配置及打印级别,因为我们需要做 Debug -
描述 CP 及 AP 之间通信的方式、端口及接口定义 -
当我们把 AA 定义为一个服务时,我们需要描述 Service AA 的身份标识,可提供的物理连接端口及其及接口定义。对于接口定义的 "消息通知" 来说,当然也包括我们的"Event ID"以及 Event 所携带的 Data Type 等。当我们在描述文件中对我们的服务接口进行详细描述后,对方获取我们的接口后,就知道如何来对接了。 -
描述 Proxy AA 的身份标识,及通过何种物理端口与 Service AA 进行连接并完成接口定义的 "消息通知" 及 "方法" 调用。 描述 AA 归属的哪些功能组
Machine 清单的定义及使用
ECU的 Resource 描述,如 CPU 可用的 Processor 类型及数量
Machine 定义了所有可用的物理通信 Connector,比如 EthernetConnector ,及其对应通信端口 NetworkEndpoint 的描述(IPAddress or Domain & Port)
ServiceDiscovery Configs 描述通过可用物理通信端口监听来自 Multicast 地址信息定义的 SOME/IP Protocol报文
定义 Machine 的状态机,应用能不能工作都是跟着 Machine 状态机走的。
配置 AP AUTOSAR 的 OS(当前很多供应商都还没实现)
创建应用程序清单
Application Manifest 用于描述实例化运行在 Machine 之上的可执行的Process:
我们一般从以下几个方面对应用清单进行描述。
配置 Executable 启动选项,包括以下内容
配置进程启动依赖关系 配置进程的调度策略 配置进程的线程优先级 配置进程所在的功能组(Function Groups) 配置进程工作/不工作在哪个或哪几个 Processor 上
配置 Executable 的 Provided/RequiredPort 及 Port 所绑定的 Service Interface
每个 Process 都对应有一个专属的 Manifest 配置
创建服务接口及服务接口部署
Service Interface(服务接口)是什么?服务接口定义了 Skeleton/Proxy 之间的接口关系,主要包括以下交互方式:
Notify: 定义消息 event_id 及对应的消息所携带的数据结构 -
Method Call:定义方法调用供 Proxy 使用,需定义所有输入参数的数据结构,及返回值的数据结构;Skeleton 在完成 Method Call 调用执行后,Skeleton 会发送执行结果的返回值给 Proxy Fire & Forget:定义方法调用供 Proxy 使用,需定义所有输入参数的数据结构,无返回值;Skeleton 在完成 Method Call 调用执行后,不会 Response 给Proxy Field: 为所定义的数据结构可以同时提供 Service Notifier,及 Proxy Getter/Setter 的 Method Call 功能
Service Interface Deployment 描述了如何部署 Service Interface
为 Service Interface 分配指定的 Service id
-
为 Service Interface 分配 major_version 及 minor_version,某一个服务可能会存在多个版本,每个版本里面的服务接口可能是不一样的。
Provided/Required 服务实例
定义和配置服务实例的元模型如下:
服务实例相关的设计主要包括以下内容。
创建Service Instance:
为 Provided Service 绑定对应的 Service Interface,配置发送 Offer Service报文的周期,分配 Instance Id
为 Required Service 绑定对应的 Service Interface,配置发送 Find Service报文的周期,分配 Instance Id
Instance ID:Proxy 引用的 Required Instance Id 一定要与对应的 Skeleton提供的 Provided Instance Id 保持一致
Mapping Service InstanceTo Machine:
-
配置 Provided/Required Service Instance 使用哪个 Machine 里的哪个物理通信 Connector,即选用哪个 Machine 用于执行该 Service Instance
配置 TCP/UDP Port
Mapping Service Instance To Provided/Required Port:
-
为 Provided/Required Service Instance 配置使用哪个 Excutable 定义的Provided/Required Port,即把该 Service Instance 挂在哪个进程,绑定哪个Port 而执行
模型创建及配置的生成产 物
在我们建模完之后,会生成以下产物。
生成 Skeleton/Proxy 通信框架的基类源代码,供 Application 开发者继承基类使用以直接获取通信能力:
-
生成 Notification/Field/Method Call 所关联 datatype 的数据结构,及对应数据结构 payload 的基于 Someip Protocol 的 Serialize/Deserialize 实现 生成 Skeleton/Proxy的Event,Method 及 Field 的函数接口及对应的Message Builder 的 Serialize/Deserialize 实现 -
Skeleton/Proxy Pattern 生成所有 Provided/Required Service Instance 及SOMEIP/IPC binding 等初始化实现,以及 Offer/Find Serviced 的具体实现
启动配置 JSON 文件描述,供 Execution Manager 启动加载应用时使用:
进程的启动依赖 进程的调度策略及线程优先级§进程所属的功能组及其 Machine 状态机的所有可用状态
SOME/IP JSON 配置文件,供 SOME IP_Daemon 使用:
配置进程所有用到 Services 的属性:Service Name, Service Id,Service Version,Methods(name/id),Events(name/id) -
配置了进程的 Provided Service Instance:关联的 ServiceId,InstanceId,Service Discovery 的参数属性,映射到 Machine 的参数属性(NetworkIP Address, Tcp/Udp PortNumber) -
配置了进 程的 Required Service Instance:关联的 ServiceId,InstanceId,Service Discovery 的参数属性,映射到 Machine 的参数属性(NetworkIP Address, Tcp/Udp PortNumber)
✦ ✦
模型生成产物如何被 Middleware Platform 模块使用
AP AUTOSAR 核心组件
下图为 AP AUTOSAR 的核心组件,也叫功能集群,简称 FC。
✦ ✦
核心组件功能描述
下面对上述核心组件的功能进行一个简单的描述。
Execution Manager:负责对进程的生命周期进行管理
-
搜寻指定路径下所有可用的 Executables 并加入进程列表中,启动阶段按进程依赖顺序加载所有配置在默认功能组的进程
-
当发生功能组状态切换时,终止未定义在新功能组的进程,并按照进程加载依赖顺序重新加载新功能组的所有进程
当功能组内的状态发生迁移时,驱动所有被加载的进程往相应的状态迁移
IAM:为应用访问及控制Autosar资源提供身份鉴权
用户需实现 PolicyDecision Point (Grant或Deny的Policy)策略
IAM 把应用 Application 的身份鉴权的请求,对接到用户的 Policy 策略,并给出鉴权结果回给 Application
Platform Health Manager:管理被监控运行实体的健康状态
监测及判断运行实体的运行状态 当检测到异常状态时,按照定义执行 RecoveryAction -
管理各个被监控进程报告的健康状况,并报告 PHM 的监控及状态切换结果给到用户 Application,以便用户执行最终如 Watchdog 等自定义的决策
Log Manager:提供Log前台打印API及后台Log存储服务
可提供 CONSOLE/FILE/DLT/SYSLOG 等工作模式
可配置多级别Verbose/ Debug/ Info/ Warn/ Error/ Fatal的打印控制
支持以 SOME IP/IPC binding 模式为 Offer Service 及 Find Service 提供发送及接收 Service Discovery Message 的能力
管理着所有 Provided Services及Required Services,并为每个 Service Interface 定义的 Event/Method/Field建立映射列表
作为所有基于 SOME IP Protocol Message(Communication & Service Discovery)的 Broker,为 sender 和 receiver 提供 router 服务
支持多种诊断传输协议,如 DoIP 或者用户自定义的传输协议
提供多个诊断服务,并支持多个诊断会话并行处理
支持 UDS 定义的标准服务及用户自定义服务
提供基于文件存储的读写功能
提供基于 Key-ValueDatabase 的访问及保持功能
升级包自身需包含完整的如版本、依赖、认证及签名等信息
-
UCM 接收来自 AA 的升级请求,传输用于升级的目标软件包,对软件包进行验签及完整性校验,根据 Manifest 的描述将目标文件安装到指定路径下/删除指定路径下的目标文件
END
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
