【AutoSar CP】SoAd模块

embedded/2025/3/1 17:16:35/

【AutoSar CP】SoAd模块

文章目录

  • 【AutoSar CP】SoAd模块
    • 1. SoAd总体说明
      • 1.1. SoAd在AutoSar CP中的层级关系
      • 1.2. SoAd的作用
    • 2. 主要配置参数
    • 3. Sock连接
    • 4. PDU传输
    • 5. PDU接收
    • 6. 配置参数详表
      • SoAdBswModules
      • SoAdGeneral
      • SoAdConfig
      • SoAdSocketConnectionGroup
      • SoAdSocketConnection
      • SoAdSocketProtocol

1. SoAd总体说明

1.1. SoAd在AutoSar CP中的层级关系

在这里插入图片描述

1.2. SoAd的作用

  • 对于TCP/IP协议栈,数据的传输依赖基于ip和端口的Sockt,而对于PDU的传输则依赖PduId,SoAd模块将AUTOSAR中定义的PDU通信转换成基于socket的通信。实现Socket和PDU数据之间的切换
  • 对于PDU的路由,可以控制哪些PDU路由使能、哪些PDU路由禁止
  • AUTOSAR遵循静态通信关系,而TCP/IP概念中存在动态配置和路由,SoAd模块旨在弥合这两个概念之间的差距。通过建立一个包含AUTOSAR所需信息的预先确定的配置,并保留一些项,以便在运行时进行更新

    比如对于特定的PDU,其PduId在程序编译时就确定了,但是在代码运行中,该PduId可能需要发送到不同的远端ip,这时就需要用SoAd来设置连接远端地址信息

2. 主要配置参数

  • SoAdSocketConnectionGroup(连接参数)
    • 指定套接字ConnectionGroup的配置,主要包含本地ip、本地端口、远端ip,远端端口,连接协议(TCP/UDP)
    • 每一个ConnectionGroup内需要指定有几个Connection(远端),可以理解为一个服务端指定最多有几个客户端连它
    • 可以设置每个Connection(远端)的ip和端口。如果ip设置为ANY,端口设置为0 ,可以理解为连接本服务器的这个客户端可以是任何ip,任何端口
    • 注意:在一个ConnectionGroup内,只有本地ip必须唯一,本地端口、远端ip,远端端口都可以设置为任意值(ip:ANY,端口:0)
    • 对于接收组播,本地ip需要设置为组播地址
    • 对于UDP来说,一个ConnectionGroup下的Connection共享同一个Socket
    • 对于TCP来说,一个ConnectionGroup下的每一个Connection都单独对应一个Socket(TCP需要accept)
  • SoAdPduRoute(发送数据)
    • PDU发送路径:PduR --> SoAd --> TCP/IP
    • 需要指定PduR SoAd上层接口类型,IF/TP
    • 需要指定接收的数据走的是哪一个ConnectionGroup或Connection
    • 需要指定接收的数据与哪一个PduId对应,PduId由PduR中配置
    • 需要指定SoAdRoutingGroup(开关),来控制该种PduId数据是否从SoAd向下传输
  • SoAdSocketRoute(接收数据)
    • PDU接收路径:PduR <-- SoAd <-- TCP/IP
    • 需要指定SoAd PduR上层接口类型,IF/TP
    • 需要指定接收的数据走的是哪一个ConnectionGroup或Connection
    • 需要指定接收的数据与哪一个PduId对应,PduId由PduR中配置
    • 需要指定SoAdRoutingGroup(开关),来控制该种PduId数据是否从SoAd向上传输
  • SoAdRoutingGroup(开关)
    • 一个可以启用或禁用的特定路由组的合集。
    • SoAdRoutingGroupIsEnabledAtInit:如果设置为 true,此路由组将在初始化 SoAd 模块后启用(即在SoAd_Init 函数中启用)
    • SoAdRoutingGroupTxTriggerable: 指定与此路由组相关的PduRouteDest容器所引用的If-TxPDUs是否可以通过SoAd_IfRoutingGroupTransmit函数触发传输。当该参数设置为TRUE时,表示可以通过SoAd_IfRoutingGroupTransmit触发传输;当该参数设置为FALSE时,表示不可以通过SoAd_IfRoutingGroupTransmit触发传输

3. Sock连接

  • 对于SoAd模块,建立链接是调用接口SoAd_OpenSoCon(SoConId), 入参 SoConId 对应配置参数SoAdSocketConnectionGroup中的索引值
  • 调用SoAd_OpenSoCon(SoConId)的实际作用是设置该SoConId需要建立链接的flag
  • 在周期调度函数SoAd_MainFunction()中,对于需要建立链接的SoConId ,依次调用如下接口建立链接
    //TCP/UDP
    TcpIp_SoAdGetSocket(Std_ReturnType,
    TcpIp_DomainType, TcpIp_ProtocolType,
    TcpIp_SocketIdType**);
    //TCP/UDP
    TcpIp_Bind(Std_ReturnType, TcpIp_SocketIdType,
    TcpIp_LocalAddrIdType, uint16**);
    /

http://www.ppmy.cn/embedded/169102.html

相关文章

【Qt】为程序增加闪退crash报告日志

背景 随着软件代码量的增加&#xff0c;软件崩溃闪退的肯能行越来越大&#xff0c;其中一些是难以复现的&#xff0c;比如访问了访问了非法地址、被操作系统杀死等。 为此&#xff0c;在软件出现闪退情况时&#xff0c;尽可能多的记录闪退发生时信息&#xff0c;对排查闪退原…

MySQL 和 PostgreSQL 的详细对比

以下是 MySQL 和 PostgreSQL 的详细对比&#xff0c;帮助您根据需求选择合适的数据库&#xff1a; 1. 核心特性对比 特性MySQLPostgreSQL数据库类型关系型数据库 (RDBMS)关系型数据库 (RDBMS)&#xff0c;支持部分 NoSQL 特性SQL 标准兼容性部分兼容&#xff08;简化语法&…

Linux 基本开发工具的使用(yum、vim、gcc、g++、gdb、make/makefile)

文章目录 Linux 软件包管理器 - yum理解什么是软件包和yum如何查看/查找软件包如何安装软件如何实现本地机器和云服务器之间的文件互传如何卸载软件 Linux 编辑器 - vim 的使用vim 的基本概念vim 的基本操作vim 命令模式各命令汇总vim 底行模式各命令汇总vim 的简单配置 Linux …

校园二手交易微信小程序的设计与实现(论文源码调试讲解)

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

1.实战攻防演练 1.1为什么要进行实战攻防演练&#xff1f; 军事上的演练&#xff0c;是除了实战以外最能检验军队战斗力的一种考核方式&#xff0c;他可以模拟面对外部势力的攻击时候&#xff0c;如何更好的去维护国家和主权的安全。同样的&#xff0c;在网络上面&#xff0c;…

菜鸟之路Day18一一IO流综合练习

菜鸟之路Day18一一IO流综合练习 作者&#xff1a;blue 时间&#xff1a;2025.2.21 文章目录 菜鸟之路Day18一一IO流综合练习0.概述1.生成假数据&#xff08;网页爬虫&#xff09;2.随机点名器2.1随机点名器12.2随机点名器22.3随机点名器32.4随机点名器42.5随机点名器5&#x…

结构型模式---享元模式

概念 享元模式是一种结构型设计模式&#xff0c;他摒弃了在每个对象中保存所有数据的方式&#xff0c;通过共享多个对象所共有的相同状态&#xff0c;让你能在有限的内存容量中载入更多对象。享元模式将原始类中的数据分为内在状态数据和外在状态数据。 内在状态&#xff1a;就…

Unreal开发中使用JNI调用语法

使用Unreal引擎做Android端的应用开发&#xff0c;不可避免的会用到第三方Java接口&#xff0c;这就涉及到了JNI调用。Unreal自己有封装一套接口来调用&#xff0c;这里做个总结&#xff0c;主要是在一些自定义的数据类型转换上。其实可以跟到引擎源码的位置具体看实现。 从上…