????????复杂驱动层跨越于微控制器硬件和RTE之间,主要任务是整合具有特殊目的且不能用MCAL进行配置的非标准功能模块,将该部分功能嵌入到AUTOSAR基础软件层中,从而实现处理复杂传感器以及执行器的特定功能和时间要求。例如AUTOSAR中未指定的功能部分、有较高执行时间要求限制的或是需要移植的部分等。因此,复杂驱动跟单片机和ECU紧密联系。其上层程序接口时根据AUTOSAR指定实施的,其下层程序接口受到标准接口程序的限制。
????????如下图所示,复杂驱动可以使用特定的中断或是复杂的微控制器外设(如PCP、TPU、CCU)来直接访问微控制器,从而实现对复杂传感器的评估与执行器控制。
复杂驱动与分层软件架构下的模块访问,需要使用以下规则:
????????1)分层软件下的模块访问复杂驱动
????????只有当复杂驱动提供一个接口,并且该接口可以通过访问AUTOSAR模块进行配置时,才允许分层软件架构下的模块访问复杂驱动。
????????2)复杂驱动访问分层软件架构下的模块
????????只有当分层软件架构下的模块提供接口,并且准备好被复杂驱动访问时,复杂驱动才能访问分层软件下的模块。通常这就意味着这些各自的接口被定义为可以再次进入的(re-entrant),如果使用了回调例程(call? back routines),那么其名称也是可配置的。
一般情况下,会访问到以下模块:
- SPI驱动
- GPT驱动
- 具有重入限制的I/O驱动通常存在单独的组或通道。对相同的组或通道的并行访问大多数情况下是不允许的。
- NVRAM管理器,作为存储器堆栈的独占访问点。
- 看门狗管理器,作为看门狗堆栈的独占访问点。
- PDU路由器,作为通信堆栈的专用访问点,其总线和协议独立。
- 总线专用接口模块,作为通信堆栈的独有总线特定访问点。
- NM接口模块,作为网络管理堆栈的独占访问点。
- 通信管理器和基础软件模式管理器,作为状态管理的独占访问点。
- 操作系统,前提是被访问的操作系统对象没有被分层软件架构下的模块所使用。
另外,在多核架构的情况下,复杂驱动模块还有以下规则:
- 基础软件(BSW)可以跨越多个核分布,基础软件操作调用的任务映射决定了由哪个核来调用BSW服务。
- 对于跨越分区和内核边界的操作,只允许进行模块内部的通信,只用主机/辅助模式进行实现。
- 如果CDD需要访问基础软件的标准化接口,那么它需要位于相同的内核中。
- 如果CDD位于不同的内核中,那么它可以使用正常的端口机制来访问AUTOSAR接口和标准化的AUTOSAR接口。这将会调用RTE,从而使操作系统的IOC机制来吧请求传递到其他内核中。
- 如果CDD需要访问基础软件的标准化接口,但又不在相同的内核中,则以下两种情况使允许的:一是提供标准化接口的辅助器可以在CDD所在的内核上运行,并且能像其他传递调用请求;二是CDD的存根部分(STUB PART)需要在其他内核上执行,并且通信系统需要使用操作系统的IOC机制来组织本地CDD。在这种情况下,CDD的初始化部分需要存在于不同内核的存根部分。
|