ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AUTOSAR认识与BSW通信架构

AUTOSAR认识与BSW通信架构 Ⅰ.初步认识AUTOSARBSW类开发流程及其工具链DaVinci DeveloperAUTOSAR 经典平台CP的应用层组件开发工具,用来设计软件组件SW-C、接口、端口配置运行时环境 RTE是 AUTOSAR 应用层开发的核心工具和下方的 Configurator 配合使用。DaVinci Configurator ClassicBSW 工程师的核心主力工具用来配置 AUTOSAR 基础软件栈BSW包括 MCU 驱动、CAN/LIN 协议栈、操作系统、内存管理、诊断栈等所有底层模块最终直接生成可编译的 ECU 底层代码。tresos Studio和 Vector DaVinci Configurator 是直接竞品同样是AUTOSAR BSW 配置工具用来配置 EB 自家的 AUTOSAR 基础软件方案。很多车企 / Tier1 用 EB 的软件栈就会用这套工具功能定位和 DaVinci CFG 完全对标。ZCANPRO配套周立功 CAN 盒的上位机软件实现 CAN 报文的收发、监控、记录、回放是低成本的国产 CAN 调试工具入门开发、现场调试很常用。CANoe 12.0车载总线领域的行业标杆级仿真测试工具支持 CAN/CAN FD/LIN/ 车载以太网等几乎所有车载总线可完成总线监控、节点仿真、诊断测试、自动化测试等全流程工作。图中标注 “仅用于回放报文” 只是它最基础的功能之一完整功能覆盖车载开发测试全场景。小tipsⅡ.需具备的专业技能CAN2.0A/B波特率都一样CAN FD具有灵活数据速率数据段高速仲裁段低速Ⅲ.初步认识Autosar网络管理1.什么是网络管理2.什么是网管报文3.什么是主动唤醒4.什么是被动唤醒5.网络管理的类型Ⅳ.AUTOSAR开发基本流程1、需求规范2、Autosar 官方规范3、代码包 Autosar 指导文档4、ISO 标准规范5、芯片手册文档作用需求规范整车 / ECU 业务需求定义产品要实现什么功能是开发输入源头Autosar 官方规范AUTOSAR 标准文档规定 BSW 各模块 API、行为、接口定义代码包 Autosar 指导文档芯片厂商提供的 MCAL 使用手册教如何配置、使用代码包ISO 标准规范行业国际标准如 ISO‑14229 (UDS)、ISO‑11898 (CAN)芯片手册MCU 硬件手册寄存器、外设、电气参数底层驱动开发依据Ⅴ.AutoSAR通信服务概述模块全称核心职责分层COMCommunication通信模块信号 ↔ I‑PDU 互相转换接收方向PduR 上来 I‑PDU → 解析出信号通过 RTE 给到 Application 应用层发送方向应用层 RTE 下发信号 → 组装成 I‑PDU 交给 PduR报文布局由DBC/ARXML定义做信号接口、网关功能应用层不用关心底层是什么总线。通信和诊断服务DCMDiagnostic Communication Manager 诊断通信管理接收诊断报文处理 UDS 诊断服务上层诊断业务模块。通信和诊断服务BusTpTransport Layer传输层专为诊断设计CAN 单帧最大 8 字节超过 8 字节的数据由 Tp 层完成多帧分包、组包ISO‑TP。通信和诊断服务PduRPDU Router PDU路由层PDU (Protocol Data Unit) 协议数据单元统一管理 CAN/LIN/Eth 各类报文负责 PDU 的转发、路由决定报文往上送给 COM/DCM还是向下发给总线接口层支持 IPDU 多路复用 IPDU‑Mux。通信和诊断服务CanIf /LinIf /EthIf总线接口层通信硬件抽象层屏蔽 CAN/LIN/ETH 硬件差异向上提供统一的硬件无关接口调用 MCAL 接口完成报文收发。通信硬件抽象McalMicrocontroller Abstraction Layer微控制器抽象层包含总线控制器驱动、收发器驱动向上给CanIf/LinIf/EthIf提供硬件驱动接口是最贴近寄存器的一层。通信驱动数据流方向发送流程应用往外发 CAN 报文Application应用层 → RTE → COM (信号打包成 I‑PDU) → PduR 路由 → BusTp (大于 8 字节才走) → CanIf → MCAL → CAN 硬件总线接收流程总线上收到 CAN 报文CAN 硬件 → MCAL → CanIf → BusTp (多帧重组) → PduR 路由分发 → COM (I‑PDU 解包成信号) → RTE → Application应用层Ⅵ.协议数据单元PDU这个图是 AutoSAR 官方文档中截取这个图把 Autosar 的通信服务很细致的面描述出来了。包括 Eth、FlexRay、CAN、LIN 4 种总线通信协议栈。L‑PDUData Link Layer PDU 数据链路层 PDU可以理解就是一帧总线报文N‑PDUNetwork Layer PDU 网络层也就是传输 TP 层PDU一般诊断报文会走 TP 层通信报文直接从 IF 层转到 PduR 层当诊断是多帧传输的时候一个 I‑PDU 就会被分段成多个 N‑PDUI‑PDUInteraction Layer PDU 交互层 PDUPDUR 路由转发 I‑PDU。三种 PDU 代表在通信协议栈不同分层的协议数据单元I‑PDU 就包含了数据 buffer 指针、数据长度、和 I‑PDU ID本质就是一个结构体。Ⅶ.通信服务传输数据流应用层模块通过 RTE 调用 COM 模块 Com_SendSignal 请求发送信号COM 写信号进 PDU bufferPDU 被事先定义好的 PDU 路由表发送到指定目的层根据 PDU ID 来查找 PDU 的路由表比如 CAN 总线的 PDU 就会路由到 CanIf 层Lin 的 PDU 就会路由到 LinIf 层。Interface 层根据不同的通道把报文写入到不同队列中Driver 根据报文优先级发送报文注意这里涉及到 PDU 的 buffer 缓存问题一般情况下上层到 If 层都不会有 PDU 拷贝过程直接把 Buffer 缓存指针进行传递。到了驱动层可能会拷贝进入驱动 buffer 进行发送。这样可以提高传输效率节省 RAM 资源。驱动通过轮询或者中断接收报文驱动调用 IF 层的 RxIndication 将数据传递给 Interface 层Interface 调用 PduR 层的 RxIndication 将数据传递给 PduR 层PduR 层根据 PDU ID 找到路由表路由到指定上层通信报文一般都路由到 COM 层。进入 COM 层之后根据 SWCs 的情况要么直接通过 RTE 把信号给到 SWCs要么缓存到自己的 Buffer。注意这里也涉及到 PDU 的 buffer 缓存问题一般情况从驱动上来也不会有 Buffer 拷贝只有到 COM 层才会有自己的 Buffer这样可以提高传输效率节省 RAM 资源。
返回列表