当前位置: 首页 > news >正文

AUTOSAR进阶图解==>AUTOSAR_SWS_FlexRayARTransportLayer

AUTOSAR FlexRay AUTOSAR Transport Layer详解

AUTOSAR Classic Platform标准中基于ISO 15765-2的FlexRay传输层协议实现

目录

  1. 概述
    1. 功能简介
    2. 技术背景
  2. 架构设计
    1. AUTOSAR分层架构中的位置
    2. 内部组件结构
  3. 通信机制
    1. 分段传输流程
    2. 帧结构
  4. 配置模型
    1. 配置参数和容器
    2. 配置限制和依赖关系
  5. API接口
    1. API概览
    2. 使用示例
  6. 总结

1. 概述

1.1 功能简介

FlexRay AUTOSAR Transport Layer (FrArTp)是AUTOSAR经典平台中的一个基础软件模块,用于在FlexRay总线上实现大数据量的可靠传输。该模块位于PDU Router和FlexRay Interface之间,主要负责对不适合单个FlexRay L-SDU的消息进行分段和重组处理。

FrArTp的主要功能包括:

  • 数据分段和重组:在发送方向将大型N-SDU分段为多个N-PDU,在接收方向将多个N-PDU重组为完整的N-SDU
  • 流量控制:控制数据传输的流量,防止接收方缓冲区溢出
  • 确认机制:可选配置的确认功能,支持带确认无重试和带确认有重试两种模式
  • 错误检测:检测传输过程中的错误并采取相应措施
  • 地址信息管理:支持1字节和2字节寻址方式,最多可支持65536个节点
  • 连接管理:支持1:1(点对点)和1:n(点对多点)连接方式
  • ISO 15765-2兼容:基于汽车领域广泛使用的ISO 15765-2(CAN诊断)标准设计,可配置为完全兼容

1.2 技术背景

AUTOSAR决定基于现有标准来设计基础软件模块,FrArTp基于国际标准ISO 15765-2(CAN诊断)进行设计。这种设计思路既保持了与成熟标准的兼容性,又通过静态配置增加了额外功能选项(如确认机制),从而使模块既能满足标准需求,又能支持更丰富的应用场景。

FrArTp不仅可用于车辆诊断系统,还可用于需要传输层协议的FlexRay基础系统间的通信。值得注意的是,从AUTOSAR 4.0开始,标准FlexRay传输层与ISO 10681-2兼容,而FrArTp仍保持与ISO 15765-2的兼容性,用户需要谨慎选择适合其应用场景的规范。


2. 架构设计

2.1 AUTOSAR分层架构中的位置

FlexRay AUTOSAR Transport Layer在AUTOSAR分层架构中位于通信服务层,它连接上层的PDU Router和下层的FlexRay Interface。

在这里插入图片描述

这个架构图展示了FrArTp在AUTOSAR层次结构中的位置和关系:

  1. 应用层

    • AUTOSAR COM:负责处理应用层的通信需求,提供I-PDU给下层
    • DCM:诊断通信管理器,提供诊断服务的I-PDU
  2. 通信服务层

    • PDU Router:根据I-PDU标识符将数据路由到不同通信协议,决定是否使用传输协议
    • FlexRay AUTOSAR Transport Layer:处理大数据的分段与重组,实现可靠传输
    • Network Management:负责网络管理功能
    • XCP:通用校准协议,用于ECU参数校准和测量
  3. 通信硬件抽象层

    • FlexRay Interface:提供访问FlexRay总线的机制,抽象FlexRay控制器位置,路由接收到的PDU到上层模块
  4. 硬件层

    • FlexRay Driver:直接与FlexRay控制器硬件交互的驱动程序

通信流程中的数据单元转换:

  • 应用层生成I-PDUs传递给PDU Router
  • PDU Router将I-PDUs转换为N-SDUs传递给FrArTp或直接传递给FlexRay Interface
  • FrArTp将N-SDUs分段为N-PDUs/L-SDUs传递给FlexRay Interface
  • FlexRay Interface通过FlexRay Driver将数据帧发送到物理总线

2.2 内部组件结构

FlexRay AUTOSAR Transport Layer内部由多个功能组件组成,每个组件负责特定功能。

在这里插入图片描述

FrArTp内部组件及其功能:

  1. 传输管理

    • N-SDU分段器:将大型N-SDU分段为多个N-PDU
    • N-SDU发送缓冲区:存储等待发送的数据
    • 发送控制:管理数据发送过程,处理发送确认和取消
  2. 接收管理

    • N-SDU重组器:将接收到的多个N-PDU重组为完整N-SDU
    • N-SDU接收缓冲区:存储接收到的数据片段
    • 接收控制:管理接收过程,支持接收取消
  3. 协议控制

    • 流量控制管理:实现ISO 15765-2协议中的流量控制机制
    • 确认和重试管理:处理确认帧和重试逻辑
    • 错误处理:检测和处理传输错误
    • 定时器管理:管理各种超时监控
  4. 连接管理

    • Channel管理:管理通道配置和属性
    • 地址管理:处理1字节或2字节寻址信息
  5. 配置管理:管理模块的各项配置参数

这种模块化设计使FrArTp能够灵活应对不同的通信需求,同时保持良好的可维护性和可扩展性。


3. 通信机制

3.1 分段传输流程

当消息太大无法放入单个帧时,FrArTp会执行分段传输。下图展示了带确认无重试模式下的分段传输流程。

在这里插入图片描述

分段传输流程详解:

  1. 传输初始化

    • PDU Router调用FrArTp_Transmit请求传输N-SDU
    • FrArTp发送端分析数据大小,确定需要分段传输
    • 发送First Frame(FF),包含消息总长度和首批数据
  2. 流量控制

    • 接收端收到FF后,准备接收缓冲区
    • 发送Flow Control(FC)帧,包含流状态(FS)、块大小(BS)和最小帧间隔(STmin)
    • 发送端根据FC帧中的参数控制后续传输
  3. 数据块传输

    • 发送端按照块大小发送多个Consecutive Frame(CF)帧,每帧包含序列号(SN)和部分数据
    • 块发送完成后,接收端发送新的FC帧请求下一个块
  4. 传输确认

    • 最后一个块传输完成后,接收端发送Acknowledgement Frame(AF)帧,表示正面或负面确认
    • 发送端根据确认结果通知上层传输结果

这种分段传输机制确保了大型消息能够可靠地通过FlexRay网络传输,流量控制机制防止了接收方缓冲区溢出,确认机制提高了传输的可靠性。

3.2 帧结构

FrArTp定义了多种帧类型,用于实现不同的传输功能。所有帧都遵循一定的结构规则。

在这里插入图片描述

FrArTp帧结构包括以下关键元素:

  1. 通用结构

    • 所有帧都包含地址信息、协议控制信息(PCI)和数据部分
    • 帧中未使用的空间填充为0
  2. 地址信息

    • 1字节寻址:1字节目标地址(TA)和1字节源地址(SA),最多支持256个接收者
    • 2字节寻址:2字节TA和2字节SA,最多支持65536个接收者,采用大端模式传输
  3. 主要帧类型

    • 单帧(SF):用于传输适合单帧的小型消息
      • ISO 15765-2单帧(SF-I):帧类型(FT)=0x0,数据长度(DL)=1-7字节
      • 扩展单帧(SF-E):帧类型(FT)=0x4,数据长度(DL)=0-254字节
    • 首帧(FF):用于启动分段传输,包含消息总长度
      • ISO 15765-2首帧(FF-I):帧类型(FT)=0x1,数据长度(DL)=0-4095字节
      • 扩展首帧(FF-E):帧类型(FT)=0x5,数据长度(DL)=0-2^32-1字节
    • 连续帧(CF):用于传输分段数据,包含序列号
      • 普通连续帧:帧类型(FT)=0x2,序列号(SN)=0-15
      • 重试连续帧(CF2):帧类型(FT)=0x6,用于区分不同数据块的重试
    • 流控帧(FC):用于控制数据流,包含流状态、块大小和最小帧间隔
    • 确认帧(AF):用于确认接收状态,包含确认值(正面/负面)和序列号
  4. 流状态(FS)值

    • CTS(0):可继续发送
    • WT(1):等待
    • OVFLW(2):缓冲区溢出

这种精心设计的帧结构使FrArTp能够高效处理不同类型的数据传输需求,同时保持与ISO 15765-2标准的兼容性和对更大数据量的支持。


4. 配置模型

4.1 配置参数和容器

FrArTp模块提供了丰富的配置选项,可通过AUTOSAR配置工具进行设置。

在这里插入图片描述

FrArTp配置模型的主要部分包括:

  1. FrArTpGeneral:全局配置

    • FrArTpDevErrorDetect:是否启用开发错误检测
    • FrArTpVersionInfoApi:是否启用版本信息API
    • FrArTpMainFuncCycle:主函数调用周期
    • FrArTpHaveAckRt:是否支持确认和重试功能
    • FrArTpHaveGrpSeg:是否支持分组分段
    • FrArTpHaveTc:是否支持传输取消
    • FrArTpHaveLm:是否支持长度模式功能
  2. FrArTpChannel:通道配置

    • 超时参数:各种超时阈值,如FrArTpTimeoutAs(发送者确认超时)
    • FrArTpAckType:确认类型(无/带确认无重试/带确认有重试)
    • FrArTpLm:长度模式(ISO/ISO6/L4G)
    • FrArTpAdrType:寻址类型(1字节/2字节)
    • FrArTpStMin:最小帧间隔时间
    • FrArTpMaxBs:最大块大小
    • FrArTpMaxRn:最大重试次数
  3. FrArTpConnection:连接配置

    • FrArTpSduTxId:发送SDU ID
    • FrArTpSduRxId:接收SDU ID
    • FrArTpTxSduRef:对PDU Router发送SDU的引用
    • FrArTpRxSduRef:对PDU Router接收SDU的引用

通过这种灵活的配置模型,开发者可以根据具体应用需求优化FrArTp的行为,选择是否启用确认和重试机制,设置适当的超时参数,以及配置连接关系等。

4.2 配置限制和依赖关系

在配置FrArTp时,需要注意以下限制和依赖关系:

  1. ISO 15765-2兼容性要求

    • 要实现ISO 15765-2兼容,需将FrArTpLm设置为FRARTP_ISO或FRARTP_ISO6
    • 必须禁用确认机制(FrArTpAckType = FRARTP_NO)
    • 单帧只能使用SF-I类型,不能使用SF-E
  2. 确认与重试配置

    • 若启用重试,必须同时启用确认(FrArTpAckType = FRARTP_ACK_WITH_RT)
    • 启用重试时,FrArTpMaxRn参数必须合理设置,防止无限重试
  3. 数据大小限制

    • 在ISO 15765-2模式下,单帧数据长度最大为7字节(FRARTP_ISO)或6字节(FRARTP_ISO6)
    • 在非ISO模式(FRARTP_L4G)下,单帧数据长度最大为254字节
  4. 块大小限制

    • 启用确认时,块大小(FrArTpMaxBs)必须在1到16范围内
    • 不使用确认时,块大小可以是0到255范围内的任意值
  5. STmin限制

    • STmin可配置的有效值范围为0x00到0x7F(毫秒)和0xF1到0xF9(微秒)
    • 实际STmin受FlexRay周期和槽位安排的影响存在抖动

正确理解和应用这些配置限制和依赖关系,对于确保FrArTp模块按预期工作至关重要。


5. API接口

5.1 API概览

FrArTp提供了一组标准化的API接口,用于与其他模块交互。

FrArTp的API接口分为以下几类:

  1. 标准函数

    • FrArTp_GetVersionInfo:获取模块版本信息(可选功能)
  2. 初始化和关闭

    • FrArTp_Init:使用指定配置初始化模块
    • FrArTp_Shutdown:关闭模块,停止所有活动
  3. 正常操作

    • FrArTp_Transmit:请求传输N-SDU
    • FrArTp_CancelTransmit:取消正在进行的传输
    • FrArTp_CancelReceive:取消正在进行的接收
    • FrArTp_ChangeParameter:更改传输协议参数(如块大小)
  4. 回调通知

    • FrArTp_TriggerTransmit:由FlexRay Interface调用,触发数据传输
    • FrArTp_RxIndication:接收指示,通知收到N-PDU
    • FrArTp_TxConfirmation:传输确认,通知N-PDU传输结果
  5. 调度函数

    • FrArTp_MainFunction:主函数,由基本软件调度器周期性调用

FrArTp还依赖其他模块提供的接口:

  1. 必需接口

    • FrIfFrIf_Transmit用于请求PDU传输
    • PduRPduR_FrArTpCopyRxDataPduR_FrArTpCopyTxData等用于数据交换
  2. 可选接口

    • DetDet_ReportError用于报告开发错误(仅在启用错误检测时使用)

大多数FrArTp函数对不同的PduId可重入,但对同一PduId不可重入,这需要在集成时注意避免并发调用问题。

5.2 使用示例

以下是FrArTp模块主要API使用的示例代码:

/* FrArTp模块初始化示例 */
void Init_FrArTp(void)
{/* 使用配置结构初始化FlexRay AUTOSAR Transport Layer */FrArTp_Init(FrArTp_Config);
}/* 请求传输N-SDU示例 */
Std_ReturnType SendMessage(PduIdType id, uint8* data, uint16 length)
{Std_ReturnType result;PduInfoType pduInfo;/* 准备PDU信息 */pduInfo.SduDataPtr = data;pduInfo.SduLength = length;/* 请求传输 */result = FrArTp_Transmit(id, &pduInfo);return result;
}/* 主函数调用示例 */
void MainFunction_10ms(void)
{/* 由调度器每10ms调用一次 */FrArTp_MainFunction();
}/* 接收回调处理示例 */
void HandleTransmissionComplete(PduIdType id, Std_ReturnType result)
{if (result == E_OK) {/* 传输成功处理 */Application_ProcessTransmitSuccess(id);} else {/* 传输失败处理 */Application_ProcessTransmitError(id);}
}/* 更改传输参数示例 */
void UpdateBlockSize(PduIdType id, uint16 newBlockSize)
{/* 更改指定连接的块大小参数 */FrArTp_ChangeParameter(id, TP_BS, newBlockSize);
}

这些示例展示了如何正确初始化FrArTp模块、请求数据传输、定期调用主函数以及处理传输结果。在实际应用中,需要根据具体项目需求进行适当调整。


6. 总结

FlexRay AUTOSAR Transport Layer (FrArTp)作为AUTOSAR经典平台的重要组件,为FlexRay网络上大数据量传输提供了可靠解决方案。通过对本文的学习,我们了解了FrArTp的以下关键方面:

  1. 架构特点

    • FrArTp位于PDU Router和FlexRay Interface之间
    • 采用模块化设计,内部组件分工明确
    • 基于ISO 15765-2标准设计,可选配置兼容性
  2. 核心功能

    • 数据分段与重组
    • 流量控制
    • 可选的确认和重试机制
    • 灵活的寻址选项(1字节或2字节)
  3. 配置灵活性

    • 丰富的配置选项适应不同应用场景
    • 可按通道配置传输特性
    • 支持多种连接类型(1:1和1:n)
  4. 标准化接口

    • 符合AUTOSAR规范的API设计
    • 清晰的函数分组和职责划分
    • 与相关模块的接口定义明确

FrArTp模块在汽车电子系统中具有广泛应用,从车辆诊断到各ECU间大数据交换都可能用到。理解其工作原理和配置方法,对于开发可靠的FlexRay通信系统至关重要。

采用模块化设计,内部组件分工明确

  • 基于ISO 15765-2标准设计,可选配置兼容性
  1. 核心功能

    • 数据分段与重组
    • 流量控制
    • 可选的确认和重试机制
    • 灵活的寻址选项(1字节或2字节)
  2. 配置灵活性

    • 丰富的配置选项适应不同应用场景
    • 可按通道配置传输特性
    • 支持多种连接类型(1:1和1:n)
  3. 标准化接口

    • 符合AUTOSAR规范的API设计
    • 清晰的函数分组和职责划分
    • 与相关模块的接口定义明确

FrArTp模块在汽车电子系统中具有广泛应用,从车辆诊断到各ECU间大数据交换都可能用到。理解其工作原理和配置方法,对于开发可靠的FlexRay通信系统至关重要。

值得注意的是,从AUTOSAR 4.0开始,用户在选择FlexRay传输层协议时,需要在基于ISO 15765-2的FrArTp和基于ISO 10681-2的FlexRay ISO Transport Layer之间作出选择,应根据具体项目需求和兼容性要求进行判断。

http://www.lryc.cn/news/589350.html

相关文章:

  • 【Unity】MiniGame编辑器小游戏(十四)基础支持模块(游戏窗口、游戏对象、物理系统、动画系统、射线检测)
  • HarmonyOS从入门到精通:自定义组件开发指南(八):组件插槽 (Slot) 的魅力
  • 【matlab】三维路面谱生成代码
  • Halcon双相机单标定板标定实现拼图
  • 【QT】实现应用程序启动画面
  • 封装---统一处理接口与打印错误信息
  • 2025/7/15——java学习总结
  • 网页源码保护助手 海洋网页在线加密:HTML 源码防复制篡改,密文安全如铜墙铁壁
  • 全局 WAF 规则:构筑 Web 安全的坚固防线
  • 【12】MFC入门到精通——MFC 消息对话框 MessageBox()和AfxMessageBox() 解析 示例 及 应用实例
  • Kafka与Flink打造流式数据采集方案:以二手房信息为例
  • C++ Filesystem Library 全解
  • 20250715正面看MIPI接口的LCD屏正常,侧面看发红是什么原因?
  • 12.6 Google黑科技GShard:6000亿参数MoE模型如何突破显存限制?
  • C++-linux系统编程 8.进程(三)孤儿进程、僵尸进程与进程回收
  • 算法学习笔记:22.贪心算法之霍夫曼编码 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 多相机depth-rgb图组完整性分拣器_MATLAB实现
  • 魔搭官方教程【快速开始】-swift 微调报错:`if v not in ALL_PARALLEL_STYLES`
  • 线上项目-升级redis8.0.3遇到的错
  • iOS高级开发工程师面试——关于网络
  • el-tooltip 快速滚动的时候出现残影如何解决 vue3
  • 学习嵌入式的第二十八天-数据结构-(2025.7.15)进程和线程
  • 20250715武汉xx公司面试一面
  • [AI-video] Web UI | Streamlit(py to web) | 应用配置config.toml
  • 索尼(SONY)摄像机mp4文件删除覆盖的恢复方法
  • 如何选择影视会员api接口?
  • 【字节跳动】数据挖掘面试题0019:带货直播间推荐:现在有一个带货的直播间,怎么把它精准地推送给有需要的用户
  • Flutter 入门指南:从基础到实战
  • 劳务派遣vs劳务外包:HR必懂的区别
  • 场景设计题+智力题