AUTOSAR技术分析报告.doc

上传人:w****2 文档编号:6562359 上传时间:2020-02-29 格式:DOC 页数:37 大小:909KB
返回 下载 相关 举报
AUTOSAR技术分析报告.doc_第1页
第1页 / 共37页
AUTOSAR技术分析报告.doc_第2页
第2页 / 共37页
AUTOSAR技术分析报告.doc_第3页
第3页 / 共37页
点击查看更多>>
资源描述
AUTOSAR技术分析报告(科银京成:王瑜、余鹏、曾英哲、鲁阳、杨宝泽)1 AUTOSAR简介汽车电子领域的软件主要属于嵌入式软件。因此,其发展阶段类似于其他嵌入式系统的软件发展。由于受限于嵌入式硬件本身资源的匮乏,各种硬件产品的种类繁多和各自差异,以及整体嵌入式系统软件的逐步发展,起初的软件设计开发主要是封闭式的。这样有助于开发针对于特定硬件体,充分优化利用资源而特定设计的软件系统。这样的软件系统,是针对于特定硬件和特定应用而设计,其对于硬件资源的充分应用,以及软件本身的执行效率无疑是非常高。然而,随着硬件本身的逐步发展,其可用资源已经十分充分。另一方面,汽车电子领域应用需求也日趋复杂,软件本身也变得越来越复杂。因此,无论汽车厂还是部件商都感到软件的标准化问题。软件的可管理性,可重复使用性,可裁减性,以及质量保证等等问题被提上了议程。AUTOSAR 的提出正是基于以上一些软件发展的要求,由几大主要汽车厂商以及部件提供商联合提出的,其中包括BWM, DaimlerChrysler, Ford Motor, PSA Peugeot, Toyota Motor, Volkswagen AG, Bosch, Continetal, Siemens VDO等。AUTOSAR是针对特定的汽车电子这一领域,提出的一套开放式软件结构。其主体思想是使得软件设计开发更易于管理,软件系统更易于移植、裁剪,以及更好的维护性和质量保证。AUTOSAR组织所提出的目标以及它所关注的功能领域在下表中列出:项目目标功能领域解决汽车的可用性和安全性需求保持汽车电子系统一定的冗余可以移植到不同汽车的不同平台上实现标准的基本系统功能作为汽车供应商的标准软件模块通过网络共享软件功能集成多个开发商提供的软件模块在产品生命周期内更好的进行软件维护更充分的利用“货价产品”在车辆整个生命周期中进行软件更新与升级为了实现上述的项目目标,针对在汽车电子行业中面临的一些挑战,AUTOSAR所采用的解决方案及其好处可以概述如下:挑战解决方法好处不成熟的过程,因为ad-hoc模式/缺少对功能需要的追踪能力。缺少兼容的工具(供应商、OEM)标准化的规范交换格式对规范的改进(格式、内容)提供无缝的工具链。浪费在实现和优化组件上的努力,而顾客并不承认这些努力的价值。基础软件核软件质量的加强。将工作集中在有价值的功能上。微控制器模型缺乏可用性,很难适应现有软件。(由新功能引起的)微控制器性能的扩展需求所导致的升级需要(如重新设计)。微控制器抽象微控制器能在不需要改变更高软件层的情况下调换。重定位ECU之间的功能时需要做大量的工作。功能重用时也需要做大量的工作。运行时环境(RTE)功能封装导致的通信技术的独立性。通过标准化机制,使得通信更加简单。使功能分区和功能重定位变得可能。非竞争性功能必须适应OEM的特定环境。因为需要从其它组件供应接口需要很多功夫,所以哪怕是很微小的革新,也需要做很多工作。基础软件和模型生成的代码间缺少清晰的接口。接口标准化减少/避免OEM和供应商之间的接口。通过使用通用接口目录,使独立于软件功能的硬件实现所耗费的工作量。简化模型驱动的开发,允许使用标准化的AUTOSAR代码生成工具。OEM间的模型的可重用性。不同供应商之间模块的可交换性。2 AUTOSAR软件结构2.1 AUTOSAR软件的组成与分层AUTOSAR的软件组件可以用下图来表示:对于上图所示的一些组件,可以根据功能及相互关系对其进行分层,如下图所示:微控制器抽象层这一层是基础软件中的最低一层。它包含驱动,这些驱动是软件模块,用来对C内部设备和映射了C外部设备的内存进行访问。ECU抽象层这一层与微控制器抽象层进行对接。它也包含了外部设备的驱动。它为访问外设提供了API,不管这些外设的位置(C内部或外部),也不管它们与C的连接(端口针脚,接口类型)。服务层这层是基础软件中的最高层,而且它与应用软件之间有关联:当对I/O信号的访问包含ECU抽象层中时,服务层提供:l 操作系统功能l 车辆网络通信及管理服务l 存储管理(NVRAM管理)l 诊断服务(包括UDS通信及错误内存)l ECU状态管理2.2 RTE运行时环境RTE是AUTOSAR ECU体系结构的核心组成部分。RTE是AUTOSAR虚拟功能总线(Virtual Function Bus,VFB)的接口(针对某个特定ECU)的实现,因此,它为应用程序软件组件之间的通信提供了基本的服务,同时也便于访问包含OS的基本软件组件。应用程序软件组件包含独立于CPU和所处位置的系统软件。这就意味着,为了满足系统设计者所做的一些限制,应用程序组件能够在系统配置期间被映射到任何有效的ECU上。RTE负责确保这些组件能够通信。RTE和OS,AUTOSAR COM和其他的基础软件模块(BSW)是VFB(Virtual Functional Bus)概念的实现。RTE实现了AUTOSAR VFB的接口,从而实现了AUTOSAR软件组件之间的通信。RTE是AUTOSAR ECU体系的核心,它提供了在AUTOSAR软件组件间通信的基础服务,扮演了一些方法,通过这些方法AUROSAR软件组件能访问包括OS和通信服务在内基础软件模块的。2.3 系统服务系统服务是一组可以由所有层次模块使用的模块和功能。例如实时操作系统、错误管理器和库功能。为应用和基本软件模块提供基本服务。它包含下图所示功能:2.3.1 AUTOSAR OSAUTOSAR OS为实时应用提供了所有基本服务,即中断处理、调度、系统时间和时钟同步、本地消息处理,以及错误检测机制。所有服务都隐藏在良好定义的API之后。应用与OS和通信层的连接只通过API。AUTOSAR OS的基本特征包括:静态配置能够推断实时系统性能提供基于优先级的调度策略提供运行时保护功能(存储、计时等)可宿主在低端控制器上,并且不需要其他资源它包含以下几个方面:实时操作系统在嵌入式汽车ECU中的实时操作系统构成软件动态行为的基础。它管理任务和事件的调度,不同任务间的数据流,并且提供监控和错误处理功能。但是,在汽车系统中,对操作系统的需求集中在特定领域。所使用的操作系统必须高效运行并且所占存储空间小。在多媒体和远程信息处理应用中,操作系统提供的特征集以及可用计算资源有很大不同。在纯粹的任务管理之上,OS中还包含了复杂的数据处理(例如,流、快速文件系统等)、存储管理甚至图形用户接口。汽车OS的典型领域涵盖了调度和同步的核心特征。在AUTOSAR中,上面讨论的附加特征在OS的范围之外,其他WP4.2.2.1工作包(例如SPAL)涵盖了这些特征。在AUTOSAR的体系结构约束之下不可能把其他OS(例如,QNX、VxWorks和Windows CE等)的特征集合集成到整体的OS/通信/驱动结构中。因此,AUTOSAR OS只考虑核心特征。核心操作系统OSEK/VDK操作系统广泛应用于汽车工业,并且已经证明了可以在现代车辆的所有ECU类型中使用。OSEK OS引入的概念被广泛地理解,汽车工业领域在设计基于OSEK OS的系统方面有多年的经验。OSEK OS是一个事件触发的操作系统。这为基于AUTOSAR的系统的设计和维护提供了高度的灵活性。事件触发使得可以自由地选择在运行时驱动调度的事件,例如角反转、局部时间源、全局时间源、错误出现等等。由于这些原因,AUTOSAR OS的核心功能必须基于OSEK OS。OSEK OS特别提供了以下特性以支持AUTOSAR: 固定的基于优先级调度 处理中断的功能 只有中断有高于任务的优先级 一些防止错误使用OS服务的保护措施 StartOS()和StartupHook启动接口 ShutdownOS()和ShutdownHook关闭接口AUTOSAR OS基于OSEK OS意味着应用程序是向后兼容的。为OSEK OS编写的应用程序可以在AUTOSAR OS上运行。但是,使用AUTOSAR OS引入的一些新特性需要对已存在的OSEK OS特性的使用有所限制。例如:为定时器回调实现定时和内存保护效率就会很低。此外,AUTOSAR OS扩展了一些已存在的特性,例如直接通过定时器驱动计数器。AUTOSAR OS提供的API向后兼容于OSEK OS的API。新的需求作为功能扩展来集成。AUTOSAR OS对OSEK OS扩展的API如下表:服务名语法GetApplicationIDApplicationType GetApplicationID (void)GetISRIDISRType GetISRID (void)CallTrustedFunctionStatusType CallTrustedFunction(TrustedFunctionIndexType FunctionIndex,TrustedFunctionParameterRefType FunctionParams)CheckISRMemoryAccessAccessType CheckISRMemoryAccess(ISRType ISRID,MemoryStartAddressType Address,MemorySizeType Size)CheckTaskMemoryAccessAccessType CheckTaskMemoryAccess(TaskType TaskID,MemoryStartAddressType Address,MemorySizeType Size)CheckObjectAccessObjectAccessType CheckObjectAccess(ApplicationType ApplID,ObjectTypeType ObjectType,)CheckObjectOwnershipApplicationType CheckObjectOwnership(ObjectTypeType ObjectType,)StartScheduleTableRelStatusType StartScheduleTableRel(ScheduleTableType ScheduleTableID,TickType Offset)StartScheduleTableAbsStatusType StartScheduleTableAbs(ScheduleTableType ScheduleTableID,TickType Tickvalue)StopScheduleTableStatusType StopScheduleTable(ScheduleTableType ScheduleTableID)NextScheduleTableStatusType NextScheduleTable(ScheduleTableType ScheduleTableID_current,ScheduleTableType ScheduleTableID_next)IncrementCounterStatusType IncrementCounter(CounterType CounterID)SyncScheduleTableStatusType SyncScheduleTable(ScheduleTableType SchedTableID,GlobalTimeTickType GlobalTime)SetScheduleTableAsyncStatusType SetScheduleTableAsync(ScheduleTableType ScheduleID)GetScheduleTableStatusStatusType GetScheduleTableStatus(ScheduleTableType ScheduleID,ScheduleTableStatusRefType ScheduleStatus)TerminateApplicationStatusType TerminateApplication(RestartType RestartOption)DisableInterruptSourceStatusType DisableInterruptSource (ISRType DisableISR)EnableInterruptSourceStatusType EnableInterruptSource (ISRType EnableISR)ProtectionHookProtectionReturnType ProtectionHook(StatusType Fatalerror)静态定义的调度在许多应用中需要静态定义一组互相关联的任务的活动。这用于在基于数据流的设计中保证数据一致性,与时间触发的网络同步,保证正确的运行时定相,等等。时间触发的操作系统通常作为这个问题的解决方法。然而,时间只是简单的事件,所以任何事件触发的OS,包括OSEK OS,会在汽车电子控制单元实现一个用于静态调度实时软件的调度器。监控功能监控功能在适当的执行阶段检测错误,不是在错误发生的时刻。因此,监控功能是在运行时捕捉失效,而不是预防故障。保护功能AUTOSAR概念需要多来源的OS应用共存在同一处理器中。为了防止这些OS应用之间意想不到的交互,需要提供保护机制。计时器服务计时器服务为应用和基础软件提供软件计时器。计时机制的核心已经由OSEK OS的计数器和闹钟提供。如果要提供通用的软件计时,一些补充特性需要添加到AUTOSAR OS。时间触发操作系统时间触发操作系统在汽车电子控制单元实现了一个用于静态调度实时软件的调度器。另外,操作系统为实时应用提供了所有基本服务,即中断处理、调度、系统时间和时钟同步、本地消息处理,以及错误检测机制。所有服务都隐藏在良好定义的API之后。应用与OS和通信层的连接只通过API。对于特殊的应用,操作系统能够配置为只包含该应用需要的服务。因此操作系统的资源需求尽量少。2.3.2 BSW调度器BSW调度器是系统服务的一部分,因此它向所有层次的所有模块提供服务。但是,与其它BSW模块不同,BSW调度器提供了集成的概念和服务。BSW调度器提供方法用以: 把BSW模块的实现嵌入AUTOSAR OS上下文 触发BSW模块的主要处理功能 应用BSW模块的数据一致性机制集成者的任务是应用所给的方法(AUTOSAR OS提供的),在特定项目环境中以良好定义和有效的方式把BSW模块装配起来。这也意味着BSW调度器只是使用AUTOSAR OS。它与AUTOSAR OS调度器并不冲突。BSW调度器的实现基于: BSW模块的BSW模块描述 BSW调度器的配置2.3.3 模式管理模式管理簇包括三个基本软件模块:ECU状态管理器,控制AUTOSAR BSW模块的启动阶段,包括OS的启动;通信管理器,负责网络资源管理;看门狗管理器,基于应用软件的生存状态触发看门狗。2.3.3.1 ECU状态管理器ECU状态管理器是一个基本软件模块,管理ECU的状态(OFF、RUN、SLEEP),以及这些状态之间的转换(过渡状态:STARTUP、WAKEUP、SHUTDOWN)。详细地,ECU状态管理器:负责初始化和de-initialization所有基本软件模块,包括OS和RTE;在需要时与所谓的资源管理器(例如,通信管理器)协作,关闭ECU;管理所有唤醒事件,并在被要求时配置ECU为SLEEP状态。为了完成所有这些任务,ECU状态管理器提供了一些重要的协议:RUN请求协议,调整ECU是保持活动状态还是准备关闭,唤醒确认协议,从“不稳定的”唤醒事件中区分出“真正的”唤醒事件,时间触发的增多非工作状态协议(Time Triggered Increased Inoperation - TTII),允许ECU更多地进入节能的休眠状态。ECU状态管理器必须支持独立的预处理动作和过渡,以启动ECU或将其转换到低功耗状态(例如,休眠状态/备用状态)。通过良好使用ECU状态管理器的特性和能力,此模块能够用于执行电源消耗的预定义策略,因此提供了对ECU的有效能源管理。ECU状态管理器的特性和优势包括:初始化和关闭基本软件模块。ECU主要状态的标准化定义。时间触发的更多非工作状态。2.3.3.2 看门狗管理器看门狗管理器是AUTOSAR(服务层次)的标准化基本软件体系结构的基本软件模块。它监控与计时约束有关的应用执行的可靠性。分层体系结构方法使得应用计时约束和看门狗硬件计时约束分离。基于此,看门狗管理器在触发看门狗硬件的同时提供了对一些独立应用的生存监控。看门狗管理器提供以下特性:监督多个处于ECU的单独应用,这些应用有独立的计时约束并且需要特别监督运行时的行为和生存状态。每个独立的受监控实体都有故障响应机制。可以关闭对单独应用的监督,而不会违反看门狗触发(例如,对于禁止的应用)。通过看门狗驱动触发内部或外部、标准或窗口,看门狗。(internal or external, standard or window, watchdog)对内部或外部看门狗的访问由看门狗接口处理。根据ECU状态和硬件性能选择看门狗模式(Off Mode, Slow Mode, Fast Mode)。2.3.3.3 通信管理器通信管理器收集并协调来自通信请求者(用户)的访问请求。通信管理器的目的是:简化通信协议栈的使用。包括通信栈的初始化,以及简单的网络管理。调整ECU上多个独立软件组件的通信栈(允许发送和接收消息)的可用性。暂时禁止发送消息以阻止ECU(主动地)唤醒物理通道。通过为每个物理通道实现一个状态机来控制ECU的多个物理通道。可以强制ECU保持物理通道处于“silent 通信”模式。分配所请求的通信模式需要的所有资源,简化资源管理。通信管理器定义了“通信模式”,表示一个特定的物理通道对于应用是否可用,以及如何使用(发送/接收,只接收,即不发送也不接收)。2.4 诊断服务2.4.1 诊断事件管理器诊断事件管理器DEM(Diagnostic Event Manager)是一个子组件,如同AUTOSAR内诊断模块的诊断通信管理器(DCM)和功能禁止管理器(FIM)。它负责处理和存储诊断事件(错误)和相关FreezeFrame数据。DEM进一步提供故障信息给DCM(例如,从事件存储器读取所有存储的DTC(Diagnostic Trouble Code)。DEM给应用层、DCM和FIM提供接口。定义了可选的过滤服务。2.4.2 功能禁止管理器功能禁止管理器FIM(Function Inhibition Manager)负责提供软件组件和软件组件功能的控制机制。功能由一个、多个或部分有相同权限/禁止条件的可执行实体构成。通过FIM方法,对这些功能的禁止可以配置甚至修改。所以,极大地提高了功能在新系统环境下的适应性。FIM意义上的功能与可执行实体是不同并且独立的类型。可执行实体主要由调度需求来区分。与此相对的是,功能由禁止条件来分类。FIM服务关注SW-C的功能,但是并不局限于此。BSW的功能也能够使用FIM服务。功能被指定了一个标识符(FID function identifier),以及该特定标识符的禁止条件。功能在执行之前获得它们各自的权限状态。如果禁止条件应用于特定标识符,对应的功能将不再执行。FIM与DEM密切相关,因为诊断事件和它们的状态信息作为禁止条件被提供给FIM。如果检测到了失效,并且事件报告给了DEM,那么FIM禁止FID和对应的功能。为了处理功能和关联事件的关系,功能的标识符和禁止条件必须引入到SW-C模板中(与BSW等价),并且在配置期间构造数据结构以处理标识符对于特定事件的敏感性。这些关系在每个FIM中是唯一的。RTE和FIM之间没有功能上的联系。在AUTOSAR中,RTE按照接口和调度需求处理SW-C。与此相对的是,FIM处理禁止条件并通过标识符(FID)为控制功能提供支持机制。因此,FIM概念和RTE概念不互相干扰。2.4.3 开发错误跟踪器开发错误跟踪器DET(Development Error Tracer)主要用于在开发期间跟踪和记录错误。API参数给出了追踪源和错误类型: 错误所在的模块 错误所在的功能 错误类型由软件开发者和软件集成者在特定应用和测试环境下为API功能选择最优的策略。可能包括以下功能: 在错误报告API内设置调试器断点 计算报告的错误 在RAM缓存中记录调用和传递的参数 通过通信接口发送报告的错误到外部日志DET仅仅是对SW开发和集成的辅助,并不一定要包含在产品代码中。API已经定义,但是功能由开发者根据特定需求来选择/实现。2.4.4 诊断通信管理器诊断通信管理器DCM(Diagnostic Communication Manager)确保诊断数据流,并且管理诊断状态,特别是诊断对话期和安全状态。另外,DCM检查诊断服务请求是否被支持,以及根据诊断状态判断服务是否可以在当前对话期中执行。DCM为所有诊断服务提供连接到AUTOSAR-RTE的接口。另外DCM也处理一些基本诊断服务。在AUTOSAR体系结构中,诊断通信管理器(DCM)处在通信服务中(服务层)。DCM是应用和PDU路由器封装的车辆网络通信(CAN、LIN、FlexRay和MOST)之间的中间层。DCM与PDU路由器之间有一个接口。在通信过程中,DCM从PDU(Protocol Data Unit)路由器接收诊断消息。DCM在其内部处理、检查诊断消息,并把消息传送到AUTOSAR SW组件进一步处理。根据诊断服务ID,将执行应用层中的相应调用。DCM必须是网络无关的,所以协议和消息配置在DCM的下层。这需要连接到PDU路由器的网络无关接口。DCM由以下功能块组成:DSP - Diagnostic Service ProcessingDSP主要包含了完整实现的诊断服务,这些服务在不同的应用之中是通用的(例如,访问故障数据),所以不需要由应用实现。DSD-Diagnostic Service DispatcherDSD的目的是处理诊断数据流。这里的处理意味着:通过网络接收新的诊断请求并发送到数据处理器。当被应用触发时,通过网络传送诊断响应(AUTOSAR SW-Component或DSP)。DSL-Diagnostic Session LayerDSL保证数据流与诊断请求和响应有关。DSL也监督和确保诊断协议计时。进一步,DSL管理诊断状态。2.5 存储栈2.5.1 存储服务存储服务由一个NVRAM管理器模块构成,负责管理非易失性数据(从不同存储驱动读/写)。它需要一个RAM镜像作为数据接口提供给应用快速读取。存储服务的任务是以统一方式向应用提供非易失性数据。这抽象了存储位置和属性。提供非易失性数据管理机制,如保存、加载、校验和保护和验证、可靠存储等。2.5.1.1 存储硬件抽象的寻址方案存储抽象接口和下层的闪存EEPROM仿真和EEPROM抽象层向NVRAM管理器提供虚拟线性32位地址空间。这些逻辑32位地址由16位逻辑块号和16位块地址偏移量组成。因此NVRAM管理器(理论上)可以有65536个逻辑块,每个逻辑块(理论上)可以有64Kbytes。NVRAM管理器进一步将16位逻辑块号划分为以下部分:(16-NVM_DATASET_SELECTION_BITS)位的块标识符NVM_DATASET_SELECTION_BITS位的数据索引,每个NVRAM块最多可以有256个数据集2.5.1.2 NVRAM管理器非易失性RAM管理器(NVRAM Manager)管理所有非易失性存储器中数据的存储。NVRAM管理器本身与硬件无关,所有直接存取硬件的功能,例如内部或外部EEPROM、内部或外部闪存中的仿真EEPROM等,封装在基本SW的较低层。在汽车环境中,NVRAM管理器提供服务以根据各个数据的需求来保证数据存储和NV数据的维护。NVRAM管理器要能够管理EEPROM和/或FLASH EEPROM仿真设备的NV数据。NVRAM管理器为NV数据的管理和维护提供所需的同步/异步服务(初始化/读/写/控制)。NVRAM管理器处理对非易失性数据的并行访问,并为单个数据元素提供可靠性机制,如校验和保护。为了适用于汽车系统的所有领域,NVRAM管理器需要具有高度的伸缩性(如定义请求队列的数目和大小,支持不同的块管理类型,EEPROM仿真,等等)。2.5.1.3 基本存储对象NV块:NV块表示NV用户数据和CRC值(可选)组成的存储区;RAM块:RAM块表示在RAM中用户数据和CRC值(可选)组成的区域;ROM块:ROM块驻留在ROM(闪存)中,用于提供缺省数据以防NV块为空或被破坏;管理块:管理块在RAM中,包含与Dataset NV块关联的块索引。另外,也包含相应NVRAM块的属性/错误/状态信息。2.5.1.4 块管理类型以下NVRAM存储类型应该由NVRAM管理器支持,并且由以下基本存储对象构成:管理类型NV块RAM块ROM块管理块NVM_BLOCK_NATIVE110.11NVM_BLOCK_REDUNDANT210.11NVM_BLOCK_DATASET1.(m256)10.n1Native NVRAM块是最简单的块管理类型。以最小的开销存储/检索NV存储区。Native NVRAM块由单个NV块、RAM块和管理块组成。Redundant NVRAM块有更高的容错性、可靠性和可用性,以及对数据被破坏的抵抗性。Redundant NVRAM块由两个NV块、一个RAM块和管理块组成。Dataset NVRAM块是相同大小数据块(NV/RAM)的阵列。应用一次只能存取其中的一个。Dataset NVRAM块由多个NV用户数据和(可选)CRC区域、一个RAM块和管理块组成。2.5.1.5 NVRAM管理器的API配置种类为了使NVRAM管理器适合于有限的硬件资源,定义了3种不同的API配置种类:API配置种类3:所有规定的API调用都可用。支持最大的功能性。API配置种类2:API调用的中间集可用。API配置种类1:特别用于满足资源非常有限的系统,此API配置种类只提供所需要的API调用的最小集。2.5.2 存储硬件抽象存储硬件抽象是一组抽象于外围存储设备位置(片上或板上)和ECU硬件布局的模块。例如:片上EEPROM和外部EEPROM设备应该可以通过相同的机制存取。通过存储器特有抽象/仿真模块访问存储驱动(例如EEPROM抽象)。通过仿真EEPROM接口和闪存硬件单元,就可以通过存储抽象接口访问这两种类型的硬件。存储硬件抽象的任务是提供访问内部(片上)和外部(板上)存储设备和存储硬件类型(EEPROM、闪存)的相同机制。2.5.2.1 EEPROM抽象EEPROM抽象层(EA)扩展EEPROM驱动,向上层提供线性地址空间上的虚拟分段和“实际上无限制的”擦除/写循环。除此之外,它还应该提供与EEPROM驱动相同的功能。2.5.2.2 闪存EEPROM仿真闪存EEPROM仿真(FEE)按照闪存技术仿真EEPROM抽象层的行为。所以它与EEPROM抽象层有相同的功能和API,并且给出基于下层闪存驱动和闪存设备的相似配置。2.5.2.3 内存抽象接口内存抽象接口(MemIf)允许NVRAM管理器存取多个存储抽象模块(FEE或EA模块)。内存抽象接口抽象于下层FEE和EA模块的数目,并向上层提供统一线性地址空间上的虚拟分段。2.5.3 存储驱动2.5.3.1 EEPROM驱动EEPROM驱动提供读、写、擦除EEPROM的服务。也提供了用于比较EEPROM中数据块和内存中数据块的服务。这些服务是异步的。有两类EEPROM驱动:内部EEPROM驱动外部EEPROM驱动内部EEPROM驱动直接访问微控制器硬件,并且定位在微控制器抽象层。外部EEPROM驱动使用处理程序(handler)或驱动访问外部EEPROM设备。它定位在ECU抽象层。两种类型的驱动的功能需求和功能范围都是相同的。所以API在语义上是相同的。2.5.3.2 闪存驱动如果受到底层硬件的支持,闪存驱动提供读、写和擦除闪存的服务,以及设置写/擦除保护的配置接口。闪存驱动提供了一个内置加载器,以加载闪存存取代码到RAM中,并在需要的时候执行写/擦除操作。在ECU应用模式下,闪存驱动只用于闪存EEPROM仿真模块写数据。在应用模式下并不将程序代码写到闪存中。这应该由启动模式处理,超出了AUTOSAR的范围。有两类闪存驱动:内部闪存驱动外部闪存驱动内部闪存的驱动直接存取微控制器硬件,并且定位在微控制器抽象层。外部闪存通常通过微控制器数据/地址总线连接,然后闪存驱动使用总线的处理程序/驱动访问外部闪存设备。外部闪存设备的驱动定位在ECU抽象层。两种类型的驱动的功能需求和功能范围都是相同的。所以API在语义上是相同的。2.6 通信栈AUTOSAR通信栈的概貌如下图:AUTOSAR中的通信栈包含以下这些部分:2.6.1 CANAUTOSAR CANAUTOSAR CAN模型如下图:CAN驱动CAN驱动为上层使用者提供统一的接口CAN接口。CAN驱动尽可能合理地隐藏了相关CAN控制器的硬件专用性。CAN驱动是最底层的一部分,为上层执行对硬件的访问和提供硬件无关的API。上层中唯一能够访问CAN驱动的是CAN接口。如果几个CAN控制器属于相同的CAN硬件单元,那么它们能够由CAN驱动来控制。一个CAN控制器总是与一个物理通道相关联。它被允许与总线上的物理通道相连接,不管CAN接口是否将相关的CAN控制器分别对待。CAN接口(硬件抽象)CAN接口提供标准化的接口,通过ECU的CAN总线系统来支持通信。其API与专用CAN控制器及其通过CAN驱动层的访问无关。CAN接口能够通过统一的接口访问一个或多个CAN驱动。CAN接口仅能用于CAN通信,并且是为操作一个或多个底层CAN驱动而专门设计。涵盖不同CAN硬件单元的几个CAN驱动模块由一个在CAN驱动规范中指定的通用接口来表示。CAN之外(也就是LIN)的其他协议不支持。CAN传输层CAN传输层是位于PDU路由和CAN接口模块之间的模块。其主要作用是分割和合并大于8字节的CAN I-PDU。根据AUTOSAR基本软件体系结构,CAN传输层提供的服务有:n 发送方向的数据分割;n 接收方向的数据合并;n 数据流控制;n 分割期间内的错误检测。 AUTOSAR体系结构定义了通信系统的各个具体的传输层(CanTp、包含LinIf的LinTp、FlexRayTp)。因此,CAN传输层仅涵盖了CAN传输协议的细节。 CAN传输层拥有一个接口,该接口连接一个单独的下层CAN接口层和一个单独的上层PDU Router模块。 根据AUTOSAR发布的计划,该CAN传输层规范包含下面的限制: - CAN传输层仅运行在事件触发模式中,- 没有传送/接收撤消。CAN收发器驱动CAN收发器驱动负责处理ECU上的CAN收发器,依据的是与整个ECU当前状态相关的总线专用NM的状态。CAN收发设备驱动的目标:CAN收发设备驱动抽象使用CAN收发设备硬件芯片。它向更高层提供硬件无关接口。它也可以通过MCAL层的API从ECU设计中抽象出来,访问CAN收发设备硬件。 CAN收发设备硬件必须提供功能和接口,以映射到AUTOSAR CAN收发设备驱动的运行模式模型上。下层驱动(SPI和DIO)使用的API必须同步。不支持同步行为的下层驱动的实现不能与CAN收发设备驱动一起使用。2.6.2 COMAUTOSAR COMAUTOSAR COM层位于RTE和PDU路由器之间。它来源于OSEK_COM标准。AUTOSAR COM提供了信号网关功能。COM与其它模块的依赖关系如下图所示:COM ManagerCOM Manager(COM管理)是基本软件Basic Software(BSW)的一个组件。它是囊括了下层通信服务的控制的资源管理。COM Manager控制的基本软件模块(BSW)与通信相关,而不是与软件组件或可运行实体相关。COM Manager从通信请求者那里收集总线通信访问请求,并协调总线通信访问请求。COM Manager的目标是:(1)为用户简化总线通信栈的使用。这包括了总线通信栈的初始化和简化的网络管理处理。(2)协调与多个软件组件(在一个ECU上)无关的总线通信栈(允许信号的发送和接收)的可用性。(3)临时性取消信号的发送以阻止ECU唤醒通信总线。(4)控制ECU的一个以上的通信总线通道,这通过为每个通道实现一种状态机制来实现。(5)提供使ECU保持总线处于“静默通信”模式。(6)通过分配对请求通信模式必需的所有资源来简化资源管理。COM Manager包含以下基本功能:状态机制无通信状态静默通信状态:网络释放状态、预备总线睡眠状态完全通信状态:网络请求状态、准备睡眠状态扩展功能状态期间范围通信阻止:总线唤醒阻止、静默通信模式的限制、无通信模式的限制总线通信管理网络管理依赖总线错误管理CAN总线关闭处理CAN Bus Off handling网络起动指示Network Start Indication传输故障例外网络超时例外测试支持需求阻止完全通信请求计数器错误分类错误检测错误通知非功能性需求AUTOSAR COM与OSEK COM的比较根据通信部分提供的功能,对比两者在相同功能上的API,以及两者各自所特有的API,由于AUTOSAR COM较之OSEK COM,多出了一个COM Manager,即通信管理模块部分,所以整个AUTOSAR COM Manager为AUTOSAR标准所特有,下面先对两者的相同功能部分作比较。1、相同功能及服务(1)启动与控制服务OSEKAUTOSARStartCOMStopCOMGetCOMApplicationModeInitMessageStartPeriodicStopPeriodicCom_InitCom_DeInitCom_IpduGroupStartCom_IpduGroupStopCom_DisableReceptionDMCom_EnableReceptionDMCom_GetStatusCom_GetConfigurationIdCom_GetVersionInfo两者在通信的启动与控制服务部分的对比可以看出:首先,AUTOSAR提供的API较多,表明它的功能较强;其次,AUTOSAR的启动与控制服务中包含对I-PDU(交互层协议数据单元)的处理和控制,如Com_IpduGroupStart、Com_IpduGroupStop。(2)通信服务OSEKAUTOSARSendMessageReceiveMessageSendDynamicMessageReceiveDynamicMessageSendZeroMessageGetMessageStatusCOMErrorGetServiceIdCOMError_Name1_Name2Com_SendSignalCom_ReceiveSignalCom_UpdateShadowSignalCom_SendSignalGroupCom_ReceiveSignalGroupCom_ReceiveShadowSignalCom_InvalidateSignalCom_InvalidateShadowSignalCom_TriggerIPDUSend通过对比可以看出,OSEK通信服务中包含了对错误的一些简单的处理,如获得错误服务的Id(COMErrorGetServiceId),而AUTOSAR通信服务仍然包含对I-PDU的处理,如Com_TriggerIPDUSend。(3)通知机制支持服务(OSEK)与回调通知服务(AUTOSAR)OSEKAUTOSARReadFlagResetFlagCom_TriggerTransmitCom_RxIndicationCom_TxConfirmation两者在这个部分提供的功能差别不大,主要是对一些标志的修改和设置,以控制通信的状态和执行的功能。2、不同功能及服务(1)OSEK为I-PDU的处理提供一类专门的服务,称为OSEK间接网络管理接口,包含2个API:I-PDU传输指示(I_MessageTransfer)和I-PDU超时指示(I_MessageTimeOut)。(2)OSEK通信部分提供了一些例行程序对通信起扩展作用,包含3个API:StartCOMExtension、COMCallouts、COMErrorHook。(3)AUTOSAR提供了一些调度函数,主要是对消息或信号的接收或发送起路由、调度的作用,包含3个API:Com_MainFunctionRx、Com_MainFunctionTx、Com_MainFunctionRouteSignals。(4)AUTOSAR的通信部分有一个COM Manager,这是一个通信管理模块,是AUTOSAR标准特有的,主要负责对通信进行监控、管理、诊断以及管理涉及通信的ECU状态。下表列出了它所提供的部分API。功能定义ComM_InitComM_DeInitComM_GetStatusComM_GetInhibitionStatusComM_RequestComModeComM_GetMaxComModeComM_GetRequestedComModeComM_GetCurrentComMode专用函数AUTOSAR通用网络管理ComM_Nm_NetworkStartIndicationComM_Nm_TransmissionFailureComM_Nm_NetworkTimeoutAUTOSAR诊断通信管理ComM_DCM_ActiveDiagnosticComM_DCM_InactiveDiagnosticAUTOSAR ECU状态管理ComM_EcuM_RunModeIndicationComM_EcuM_WakeUpIndication总线接口ComM_BusIf_BusOffIndication调度函数ComM_MainFunction2.6.3 FlexRay AUTOSAR FlexRayAUTOSAR FlexRay的分层体系结构如下图所示:FlexRay接口FlexRay接口提供一种标准化的接口以访问FlexRay通信系统/硬件。FlexRay接口必须与所使用的专用FlexRay CC及其通过FlexRay驱动的访问无关。FlexRay接口提供通过统一接口的对一个或几个FlexRay驱动的访问。FlexRay接口的主要任务有:(1)为上层提供到FlexRay通信系统的抽象接口。(2)FlexRay接口通过一个或多个硬件专用驱动模块来访问FlexRay硬件,而不是直接访问。(3)为了访问FlexRay通信控制器,FlexRay接口使用一个或多个FlexRay驱动模块。(4)为了访问FlexRay收发器,FlexRay接口使用一个或多个FlexRay收发器驱动模块。(5)FlexRay接口可执行代码与FlexRay通信控制器和FlexRay收发器完全不相关。(6)FlexRay接口允许代码模块的对象代码提交,遵循“one-fits-all”原则。(7)FlexRay接口提供给上层AUTOSAR BSW模块的功能如下:A初始化B配置/重配置C数据传送(发送和接收)D启动/停止/中断通信EFlexRay专用服务F设置运行模式G获取状态信息H各种计时器功能FlexRay驱动FlexRay驱动模块必须为FlexRay接口模块、API的使用者提供统一接口,以访问许多FlexRay通信控制器,这些控制器通常是相同类型的。FlexRay驱动是一个软件层,它将抽象功能请求映射到CC专用硬件的序列上。CC的硬件实现将从FlexRay接口隐藏。FlexRay传输层FlexRay传输层为使用物理地址和功能地址的、分段式的确认过的和未确认过的1对1通信,以及分段式的未确认过的1对n通信提供支持。FlexRay收发器驱动FlexRay收发器驱动负责处理ECU上的FlexRay收发器,其依据是总线专用NM的状态。2.6.4 IPDUMPDU多路技术是指通过其SDU(Service Data Unit)的一个以上的特定设计来使用一个PDU(Protocol Data Unit)的相同PCI(Protocol Control Information)。选择子字段是多路PDU的SDU的一部分。它用于区别多路PDU之间的内容。2.6.5 LIN AUTOSAR LINAUTOSAR LIN的分层体系结构如下图所示: LIN驱动LIN驱动是最底层的一部分,执行硬件访问和为上层提供硬件无关的API。上层唯一能够访问到LIN驱动的就是LIN接口。 一个LIN驱动能够支持一个以上的通道。LIN驱动能够处理一个或多个属于相同LIN硬件单元的LIN通道。LIN接口LIN接口被设计成硬件无关的。到上层模块(PDU路由器)和下层模块(LIN驱动)的接口被很好地定义。LIN接口可以处理一个以上的LIN驱动。一个LIN驱动能够支持一个以上的通道。这指的是LIN驱动能够处理一个或多个LIN通道。LIN接口负责向上层提供LIN 2.0主要功能有:(1)为每个与ECU连接的LIN总线执行当前选择的调度。(2)当上层请求到来时,切换调度表。(3)从上层接收帧的传送,并传送数据部分作为适当LIN帧中的响应。(4)当相应的响应在适当的帧中接收时,为上层提供帧接收通知。(5)睡眠和唤醒服务(6)错误处理(7)诊断传输层服务3 外设3.1 IO硬件抽象IO硬件抽象是ECU抽象层的一部分。IO硬件抽象模块的目标是使数据通过RTE来传输,而完全不依赖于ECU硬件。这就是说软件组件设计者不需要更多的了解信号是如何影响物理层的。因此,该模块是特定于ECU的。这主要通过把ECU信号映射到IO抽象端口上来实现。模块IO硬件抽象要提供用于初始化整个IO硬件抽象的模块。下图显示了IO硬件抽象模块。它位于MCAL驱动之上。就是说IO硬件抽象模块要调用驱动API来管理片上设备。MCAL驱动的配置依赖于将由IO硬件抽象模块提供的ECU信号的质量。例如,当引脚层发生相关的改变时(上升沿、下降沿),需要进行通知。系统设计者不得不配置MCAL驱动,以允许对给定信号进行通知。通知来自于驱动,并在IO硬件抽象模块中进行处理。3.2 ADC驱动ADC驱动初始化并控制微控制器内部的模数转换单元。该驱动包含一系列的基本功能函数。为了能够在某些特殊的应用中进行信号的频率分析(例如,快速傅立叶变换),就需要加强流式存取的功能。ADC驱动提供以下服务:信号值结果的访问模式流式访问。通常,ADC通道的变换请求通过ADC通道组来进行控制。通道组可以运行于持续的变换模式或者单触发变换模式。变换处理和交互作用:在同一时刻,ADC驱动要管理一个以上的被配置成不同变换模式的组。转换过程:通常,ADC通道的转换请求通过ADC通道组来进行控制。一个组可以运行于持续的转换模式或者单触发转换模式。单触发转换模式的触发条件也要被配置和控制。如果通道运行于不同的模式(例如,在普通操作时采用持续的转换模式,在特定时间点的特殊转换时使用单触发或者按照命令的转换方式),通道必须被分配给拥有不同操作模式的多个组。为了改变组间共享的通道的操作模式,应用程序必须停止任何对包含指定通道的组的当前转换,然后启动包含指定通道的新组的转换。为了让应用程序能够在任何时候执行立即转换,就要定义一个按照命令的转换方式。它必须挂起组转换,然后在按照命令的转换活动完成后重新激活它。3.3 DIO驱动DIO驱动提供基于端口和通道的、对内部通用I/O断点的读和写访问。这里的读和写并不被缓冲。这个驱动的基本行为是同步的。DIO驱动提供了用于对下列设施进行读、写的服务:DIO通道(引脚)DIO端口DIO通道组这些服务的行为是同步的。该模块工作于引脚和端口上,由PORT驱动来对它进行配置。因此,在DIO驱动里面就没有对该端口结构进行配置和初始化。端口驱动模块:很多端口和端口引脚是由端口驱动模块分配给各种功能的,比如常规I/OADCSPIPWMDIO驱动抽象了对微控制器硬件引脚的访问。此外,它还能够对这些引脚进行分组。DIO驱动提供以下服务:一个一个地修改端口或通道组的输出通道的等级。一个一个地读取端口或通道组的输入和输出通道的等级。DIO驱动中的所有读写服务必须是可重入的。理由是:这些DIO驱动可以被不同的上层处理程序或驱动程序访问。这些上层模块可以并行的访问驱动。3.4 GPT驱动GPT驱动允许产生单触发或持续的计时器通知。这个模块使
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!