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

【嵌入式】【科普】虚拟总线VFB

VFB 设计理念:功能优先,硬件在后

传统的设计方式是先定好要用的ECU硬件,然后在上面开发软件。

基于VFB的设计则完全相反,属于自上而下的设计:

  1. 首先,只关注车辆需要实现的功能(如自动巡航、车道保持)。
  2. 然后,将这些功能分解成一个个独立的、可重用的软件组件(SW-Cs)。
  3. 接着,定义这些组件之间如何通过VFB进行交互。
  4. 最后,才决定将这些软件组件分配到哪个具体的物理ECU上去运行。

这个过程实现了软件与硬件的彻底解耦。

VFB 设计流程(步骤详解)

第 1 步:功能分析与软件组件(SW-C)设计

  • 目标:将整车级功能分解为软件组件。

具体活动:

  • 识别功能:定义系统需要实现的高级功能(User Case)。
  • 功能分解:将高级功能分解为更小的、可管理的子功能。
  • 定义软件组件(SW-C):为每个子功能创建一个或多个软件组件。SW-C是功能实现的原子单元。

第 2 步:定义接口与 VFB 通信

每个SW-C通过端口(Port)与其他SW-C或基础软件(BSW)进行通信。

  • 目标:为每个SW-C定义精确的接口,确保它们能通过VFB无缝交互。

具体活动:

  • 定义端口类型:

    • Sender-Receiver (S/R) Interface:用于传输数据(如信号、状态)。
    • Client-Server (C/S) Interface:用于请求操作或计算(远程过程调用RPC)。
  • 定义数据类型(Data Types):为所有传输的数据和参数定义精确的数据类型(如uint16, float32, boolean,或者复杂的结构体Structure)。

  • 描述行为(可选):使用Runnables来描述SW-C内部的执行逻辑。Runnable可以理解为SW-C内部的函数或任务,它们由RTE事件(如定时事件、数据到达事件)触发。

第 3 步:系统配置与映射(System Mapping)

  • 目标:将虚拟的软件世界(VFB)与物理的硬件世界连接起来。

具体活动:

  • 定义ECU拓扑结构:在工具中创建系统的物理架构,包括有哪些ECU(如ADAS域控制器、刹车控制器),以及它们之间通过哪些总线(CAN, LIN, Ethernet)连接。

  • 分配软件组件:将设计好的SW-C映射(Map)到具体的ECU上。这是决定性能、成本和通信负载的关键一步。

  • 定义系统信号:对于需要跨ECU通信的接口,工具会自动生成系统信号(System Signal)和PDU(Protocol Data Unit),并将它们分配到具体的总线和帧上。这一步将虚拟的VFB通信转换成了真实的网络报文。

第 4 步:RTE 与 BSW 配置生成

  • 目标:为每个ECU生成实现VFB通信所需的具体代码和配置。
    具体活动:
  • 生成RTE配置:设计工具会为每个ECU生成一个描述文件(ARXML)。该文件描述了该ECU上所有SW-C的接口、它们之间的连接以及与BSW的交互。
  • RTE生成器:每个ECU的开发团队使用这个ARXML文件,通过RTE Generator生成针对该ECU的RTE代码。RTE将实现:
    • intra-ECU通信:同一ECU内SW-C间的通信,可能优化为简单的函数调用或内存共享。
    • inter-ECU通信:跨ECU的通信,RTE会调用BSW(如COM、PduR)来将信号打包成网络报文。
  • 生成BSW配置:同时,也会生成基础软件(BSW)模块(如COM、OS、CAN驱动)的配置代码,确保它们能正确支持RTE所需的通信服务。

VFB设计原则与最佳实践

  1. 高内聚,低耦合:每个SW-C应专注于一个明确的任务,并通过定义良好的接口与其他组件交互,尽量减少依赖。
  2. 可重用性:设计SW-C时应考虑其在不同项目、不同ECU上的复用潜力。
  3. 接口契约先行:先严格定义接口(端口、数据类型),然后再实现组件内部逻辑。这允许不同团队并行开发。
  4. 考虑非功能性需求:在映射阶段,必须考虑时序、延迟、带宽等实时性要求。对性能要求高的组件应放在同一ECU或高速总线上。

VFB设计总结

VFB设计是AUTOSAR的灵魂,它代表了一种以功能为中心、软硬件分离的现代化汽车电子系统开发方法。其流程可以概括为:

  • 功能需求
  • 分解为SW-C
  • 定义VFB接口
  • 映射到物理ECU
  • 生成RTE/BSW配置

文章转载自:

http://Q9RVSB1h.xwnnp.cn
http://uKRr9FZv.xwnnp.cn
http://96Xo8SXM.xwnnp.cn
http://S4OFGcxL.xwnnp.cn
http://nSNfzT6c.xwnnp.cn
http://i7yr8ovg.xwnnp.cn
http://S4Plk558.xwnnp.cn
http://n0vW5NU8.xwnnp.cn
http://Mdc6RPPn.xwnnp.cn
http://3ByuRgTF.xwnnp.cn
http://6jyPiWvX.xwnnp.cn
http://3OuNpFbq.xwnnp.cn
http://FQPx5hig.xwnnp.cn
http://nSAUhgy1.xwnnp.cn
http://DlAN3z1W.xwnnp.cn
http://v5Y2VuLi.xwnnp.cn
http://N4FkNYhy.xwnnp.cn
http://oJZEVU3T.xwnnp.cn
http://sZABM3sW.xwnnp.cn
http://c0HS8bL3.xwnnp.cn
http://tVlLk4mv.xwnnp.cn
http://c4CT7mUR.xwnnp.cn
http://5F7vQxQi.xwnnp.cn
http://inTt9VXH.xwnnp.cn
http://SV0xObRp.xwnnp.cn
http://HK2FlAVj.xwnnp.cn
http://TWnYkMkG.xwnnp.cn
http://xLWtT73S.xwnnp.cn
http://zDSYuIM5.xwnnp.cn
http://cHHob4sV.xwnnp.cn
http://www.dtcms.com/a/377263.html

相关文章:

  • 使用微软官方安装程序找不到C盘是什么问题
  • ICCV 2025|基于曲线感知高斯溅射的3D参数曲线重建
  • Docker 容器的使用
  • 3DTiles再处理功能全解析:从性能优化到效果渲染
  • Android传统开发 vs Android Compose vs HarmonyOS ArkUI 对照表
  • 【51单片机】【protues仿真】基于51单片机数控直流稳压电源系统
  • 大语言模型预训练流程
  • 企业如何利用群晖 NAS 构建高效数据备份与容灾体系
  • 机械臂和下载实现
  • Linux 网络配置解析及IP地址配置
  • 罗斯曼选股策略
  • [Java恶补day54] 整理模板·考点十二【回溯】
  • 品牌如何运用大数据分析?
  • vim笔记:配置笔记(长期记录)
  • Docker部署OpenWrt实现旁路由上网的详细步骤以及排雷点
  • 第6篇、Kafka 高级实战:生产者路由与消费者管理
  • GNOME桌面环境完整快捷键指南:提升Linux工作效率
  • 【竞赛系列】机器学习实操项目06——客户信用评估模型进阶流程(特征重要性分析与稳定性监控)
  • 网络编程从入门到面试:核心知识点与实战指南
  • 数电实验计划
  • A/B测试全解析:原理、流程与实战案例
  • 接口测试自学指南
  • Adobe Acrobat SDK 开发:JavaScript 插件与跨平台集成
  • Tekton - 自定义镜像配置git仓库克隆
  • Java中的常用数学工具类和方法
  • Linux 多网卡绑定bond
  • 私有化部署Ragflow的预训练模型
  • 大模型和传统机器学习的核心区别是什么?
  • 3.1.Maven-课程介绍
  • 为什么现在企业注重数据可视化?一文讲清可视化数据图表怎么做