通常情况下,每个SOC上可以运行多个Virtual Machine(每个Virtual Machine映射的是用于描述CPU/内存/物理单元的一个硬件资源),而各Application可以运行在对应的Machine上。其中,FDD(Application Device Driver)为功能设备驱动,EDD(ECU Device Driver)为执行控制单元设备驱动。分别可以看成如上Adaptive Application单元底层基础服务和Virtual Machine单元底层基础服务。

本章节将重点对该两个软件模块进行详细介绍,就能很好的描述了设备抽象的本质。
01 功能设备驱动FDD模块
在FDD之下,到中间件之间通常还会有一个单独的执行设备驱动模块EDD。该EDD主要类似一种虚拟设备驱动控制单元,将顶层服务需要的设备驱动指令转化为执行端可解析的驱动代码,同时也将执行端的状态、执行结果等数据封装反馈给FDD服务端。因此,EDD的几个关键要素包括如下。
首先,需要了解关于通信打包数据模块的底层封装逻辑,知道哪个 UDP 端口与该特定 ECU 的 VIU 通信,其核心是数据传输和提供底层电压值到物理值的解析。这个过程实际是打包/解包 UDP 数据包和 CAN 帧,以便向 FDD 提供实际数据,其过程是实现16进制到物理值的转化。如果 FDD 提供的数据与信号不匹配,则按照帧中应有的方式构造信号。
对于FDD到EDD信号交互过程需要充分掌握AP端的EDD部署问题和AP端的UDP包解析问题。如图所示,EDD到FDD的数据呈递是通过COM包进行交互的,且在CP Autosar中,可以直接通过COM进行数据交互。因此EDD集成到COM层中,独立存在没有意义。

对于AP Autosar端,针对常用的三种报文格式UDP、Someip、DDS,有不同的书记数据解析方式。
● SomeIp/DDS报文的EDD解析部署方案

从下图中不难看出,对于以中央控制器+区域控制器的控制逻辑来说,整个FDD与EDD的交互过程可以分解为从上到下三种分层模式。顶层为中央控制器单元Central ECU,中间为区域控制单元Zone Controller,底层为传感器&执行器ECU,最下层为物理I/O接口输入输出。从上至下,首先是应用软件通过FDD模块提供固定服务接口给实际应用单元。其中包括重新封装接口、提供物理值、匹配精度、矫正偏移,建立网络管理与应用层的交互。其次,是通过设计网络管理Net Management报文中的Userdata内容提供打包和服务转化,使得应用层可以参与到底层驱动控制和相应的网络管理逻辑控制中,同时,当传感器或执行器更改时可以对应用保持接口尽量不变。


已完成
数据加载中