AUTOSAR入门:经典平台文档阅读与软件层解析

3星 · 超过75%的资源 需积分: 3 57 下载量 94 浏览量 更新于2024-07-09 1 收藏 2.11MB PDF 举报
"这篇文档是关于 Autosar 的入门学习笔记,包含了官方文档的阅读和下载说明,以及对 Autosar 软件层的初步介绍,特别是 Microcontroller Abstraction Layer (MCAL) 的详解。" 正文: Autosar(AUTomotive Open System ARchitecture,汽车开放系统架构)是一个全球汽车行业合作开发的开放标准,旨在标准化汽车电子和软件系统的设计。这篇笔记首先介绍了 Autosar 文档的命名规范,如 EXP(解释)、RS(需求规范)、SRS(软件需求规范)、SWS(软件规范)等,这些都是学习 Autosar 时会接触到的基础文档类型。 在开始学习 Autosar 之前,建议先阅读 EXP 类型的文档,以理解基础概念和框架,然后逐步深入到 SWS 等具体软件规范。文档的获取途径是通过 Autosar 官方网站,可以在“ClassicPlatform”下的“CURRENTRELEASE”目录中找到最新的版本。 笔记中对 Autosar 的软件层进行了概述,展示了从俯视图到详细视图的层次结构,这包括了整个 Autosar 体系结构的概览。软件层分为多个层次,确保了不同组件之间的解耦和复用性。 MCAL(Microcontroller Abstraction Layer)层是 Autosar 架构中的关键部分,它位于软件层的最底层,负责抽象出微控制器(µC)的硬件特性。MCAL 提供了一组接口,使得上层软件模块可以不关心具体的硬件实现,只通过标准化的接口进行交互。MCAL 包含了多种驱动模块,如 µC 驱动、通信驱动、内存驱动、I/O 驱动、加密驱动和无线通信驱动,这些驱动对应不同的硬件功能,并按照 OSI 模型的下层协议工作。 MCAL 层的组件之间可能存在一定的竞争关系,比如 MCAL.Com 和 MCAL.I/O,这在设计和实现时需要特别注意,以确保系统的稳定性和性能。 这篇 Autosar 入门笔记提供了对 Autosar 文档体系和软件层的基本认识,特别是 MCAL 层的工作原理和组成部分,对于初学者来说是一份很好的学习参考资料。通过深入理解和实践,读者可以更好地掌握 Autosar 在汽车电子系统中的应用和设计。
2019-09-27 上传
这里的NM主要是针对Can协议的网路管理。 AUTOSAR CanNM的核心思想主要归纳为以下两条: 1.  如果节点需要保持通信,则节点需要周期的发送NMPDUs,否则停止发送NMPDUs 2.     如果总线上的所有节点不需要使用总线,那么总线上过了一段时间没有NMPDUs时,则会进入Bus-Sleep Mode。   工作模式和状态   CanNm一共有三个工作模式 1.  Network Mode 2.  PrepareBus-Sleep Mode 3.  Bus-Sleep Mode 模式的改变应该通过回调函数通知上层。 下面单独说每种模式   (1)Network Mode Network Mode又包括三个内部状态 1. Repeat Message State 2. Normal Operation State 3. Ready Sleep State ①Repeat Message State 这个模式被用来确保从Bus-Sleep or Prepare Bus-Sleep到Network Mode的节点被总线上面其他节点发现。这个状态可以用来检测总线上的节点。 当进入Repeat Message State时,节点应该开始传送NMPDUs。 在Repeat Message State时,当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 CanNm模块应该在Repeat Message State 下保持一段时间,这段时间可以通过CANNM_REPEAT_MESSAGE_TIME来进行配置。 当离开Repeat Message State的时候,如果节点需要通信,则进入Normal Operation State;如果节点不需要通信,则进入Ready Sleep State。并且清空Repeat Message Bit。   ②Normal Operation State 这个状态可以保持总线处于唤醒状态。从Ready sleep state进入这个状态的时候应该发送NMPDUs。 在Normal Operation State当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 如果节点不需要使用通信,则网络应该被释放,节点应该进入Ready Sleep State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。   ③ReadySleep State 这个状态是为了如果本节点已经准备释放总线,而其他节点还需要使用总线的时候,在这个状态下等待其他总线上的节点进入Perpere Bus-Sleep Mode。进入这个状态之后,CanNm模块应该停止NMPDUs的传送。 如果NM-Timeout Timer溢出,节点将会进入Prepare Bus-Sleep Mode。 如果该节点需要使用总线,则节点进入Nomal Operation State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。 (2)PrepareBus-Sleep Mode   这个状态是为了等待总线上的所有节点能够在进入Bus-Sleep Mode之前,有时间停止节点的active状态如清空队列中为发送的报文。在Prepare Bus –Sleep Mode下,所有节点都静默下来。 当节点进入PrepareBus Mode时,应该通知上层应用。通过配置CANNM_WAIT_BUS_SLEEP_TIME参数,可以改变节点在PrepareBus-Sleep Mode停留的时间,在这段时间之后节点将会进入其他状态。 在Prepare Bus-Sleep Mode下面接收到NMPDU或者被上层应用请求通信时,节点将进入Network Mode中的Normal operation State。   (3)Bus-SleepMode   Bus-Sleep Mode的目的是当没有消息被传送的时候可以减少能量的消耗。在Bus-Sleep Mode下面,节点可以被唤醒(如本地唤醒源和CAN线唤醒源)。CANNM_TIMEOUT_TIME+CANNM_WAIT_BUS_SLEEP_TIME两个参数在整个总线上面的节点都应该时一样的配置,保证了总线上的节点能够统一的进行休眠。 当进入Bus-Sleep Mode时候,应该通知上层应用。 在Bus-Sleep Mode下,如果成功接收到NMPDU,CAN NM模块应该调用Nm_NetworkStartIndication。 如果CanNm_PassiveStartUp被调用,则CAN NM模块进入Network Mode 中的Repeat Message State。 ———————————————— 版权声明:本文为CSDN博主「cococenstar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cococenstar/article/details/84096689