SOMEIP通信矩阵解读

news2025/4/9 11:11:31

目录

  • 1 摘要
  • 2 SOME/IP通信矩阵详细属性定义与示例
    • 2.1 服务基础属性
    • 2.2 数据类型定义
    • 2.3 服务实例与网络配置参数
    • 2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置)
    • 2.5 SOME/IP-SD Unicast 配置
    • 2.6 SOME/IP-SD ECU 配置参数详解
  • 3 总结

1 摘要

本专题主要对SOME/IP通信矩阵定义的服务基础属性、数据类型属性、服务实例与网络配置参数等进行了介绍,有利于充分理解SOME/IP通信矩阵的参数定义。

2 SOME/IP通信矩阵详细属性定义与示例

2.1 服务基础属性

  1. Service Name
  • 定义:服务的可读名称,用于标识SOME/IP服务功能。
  • 示例
Service Name: "WindowControlService"
  • ARXML表示SOMEIP-SERVICE-INTERFACE/SHORT-NAME
  • 示例
<SOMEIP-SERVICE-INTERFACE>
  <SHORT-NAME>/Company/Chassis/VehicleSpeed</SHORT-NAME>
</SOMEIP-SERVICE-INTERFACE>
  1. Service ID
  • 定义:16位无符号整数,唯一标识服务
  • ARXML表示SOMEIP-SERVICE-INTERFACE/SERVICE-ID
  • 范围:0x0001-0x7FFF(0x8000-0xFFFF保留)
  • 示例
<SERVICE-ID>0x1234</SERVICE-ID>
  1. Service Description
  • 定义:对服务功能的详细描述。

  • 示例

Service Description: "This service provides control and status monitoring for vehicle windows, including position control and anti-pinch functionality."
  • ARXML表示DESC元素
  • 示例
<DESC>
  <L-2 L="EN">Provides vehicle speed information with 0.1km/h resolution</L-2>
</DESC>
  1. RPC Type
  • 定义:标识远程过程调用的类型。

  • 常见值

    • Method - 请求/响应方法
    • Fire&Forget - 单向方法
    • Event - 事件通知
    • Field - 字段通知
  • 示例

RPC Type: Method
  • ARXML表示SOMEIP-METHOD/TYPE

  • 示例

<SOMEIP-METHOD>
  <SHORT-NAME>GetCurrentSpeed</SHORT-NAME>
  <METHOD-ID>0x0001</METHOD-ID>
  <TYPE>REQUEST_RESPONSE</TYPE>
</SOMEIP-METHOD>
  1. Field Property Name
  • 定义:当RPC类型为Field时,表示字段的名称。

  • 示例

Field Property Name: "WindowPosition"
  • ARXML表示SOMEIP-FIELD/SHORT-NAME
  • 示例
<SOMEIP-FIELD>
  <SHORT-NAME>VehicleSpeedValue</SHORT-NAME>
  <GETTER-REF>/Methods/GetSpeedValue</GETTER-REF>
</SOMEIP-FIELD>
  1. Field Property Data Type
  • 定义:字段的数据类型。

  • 示例

Field Property Data Type: uint8 (0-100 representing percentage of window openness)
  • ARXML表示APPLICATION-PRIMITIVE-DATA-TYPE
  • 常见类型
<APPLICATION-PRIMITIVE-DATA-TYPE>
  <SHORT-NAME>tSpeed</SHORT-NAME>
  <SW-DATA-DEF-PROPS>
    <SW-DATA-DEF-PROPS-VARIANT>
      <BASE-TYPE-REF>/DataTypes/uint16</BASE-TYPE-REF>
    </SW-DATA-DEF-PROPS-VARIANT>
  </SW-DATA-DEF-PROPS>
</APPLICATION-PRIMITIVE-DATA-TYPE>
  1. RPC Specific Type
  • 定义:更详细的RPC分类。

  • 常见值

    • Getter - 获取字段值
    • Setter - 设置字段值
    • Notifier - 字段变更通知
  • 示例

RPC Specific Type: Setter
  • ARXML表示SOMEIP-METHOD/SPECIFIC-TYPE
  • 示例
<SOMEIP-METHOD>
  <SPECIFIC-TYPE>DIAGNOSTIC</SPECIFIC-TYPE> <!-- 诊断专用方法 -->
</SOMEIP-METHOD>
  1. Method/Event Description
  • 定义:对方法或事件的详细功能描述。

  • 示例

Method/Event Description: "Sets the target position for the driver side window. Position is a percentage value from 0 (fully closed) to 100 (fully open)."
  • ARXML表示DESC元素
  • 完整示例
<SOMEIP-METHOD>
  <SHORT-NAME>SetHeadlightLevel</SHORT-NAME>
  <DESC>
    <L-2 L="EN">Adjusts headlight beam level (0-100%)</L-2>
    <L-2 L="ZH">调节大灯水平高度(0-100%)</L-2>
  </DESC>
  <INPUT-ARGS>
    <ARGUMENT-DATA-PROTOTYPE>
      <SHORT-NAME>level</SHORT-NAME>
      <TYPE-TREF>/DataTypes/uint8</TYPE-TREF>
    </ARGUMENT-DATA-PROTOTYPE>
  </INPUT-ARGS>
</SOMEIP-METHOD>
  1. Eventgroup Name & Eventgroup ID
  • 定义:事件组名称及其ID,用于组织相关事件。

  • 示例

Eventgroup Name@EventgroupID: "WindowStatusEvents@0x01"
  • ARXML表示
<SOMEIP-EVENTGROUP>
  <SHORT-NAME>SpeedEvents</SHORT-NAME>
  <EVENTGROUP-ID>0x1001</EVENTGROUP-ID>
  <EVENTS>
    <SOMEIP-EVENT-REF>/Events/SpeedChanged</SOMEIP-EVENT-REF>
  </EVENTS>
</SOMEIP-EVENTGROUP>
  1. 传输协议 UDP/TCP
  • 定义:指定使用UDP还是TCP传输。

  • 示例

UDP/TCP: TCP
  • ARXML表示SOMEIP-SERVICE-DEPLOYMENT/PROTOCOL
  • 示例
<SOMEIP-SERVICE-DEPLOYMENT>
  <PROTOCOL>UDP</PROTOCOL>
  <PORT-NUMBER>30490</PORT-NUMBER>
</SOMEIP-SERVICE-DEPLOYMENT>
  1. Input Parameter (RR/F&F)
  • 定义:对于Method类型的RPC,定义输入参数;R/R表示Request/Response,F&F表示Fire&Forget。

  • 示例

Input Parameter (R/R):
- windowID: uint8 (0=Driver, 1=Passenger, 2=RearLeft, 3=RearRight)
- targetPosition: uint8 (0-100)
  • RR示例
<INPUT-ARGS>
  <ARGUMENT-DATA-PROTOTYPE>
    <SHORT-NAME>requestData</SHORT-NAME>
    <TYPE-TREF>/DataTypes/tRequestStruct</TYPE-TREF>
    <DIRECTION>IN</DIRECTION>
  </ARGUMENT-DATA-PROTOTYPE>
</INPUT-ARGS>
  1. Output Parameter (RR)
  • 定义:对于Method类型的RPC,定义输出参数。

  • 示例

Output Parameter (R/R):
- result: uint8 (0=Success, 1=InvalidPosition, 2=WindowBlocked, 3=SystemError)
- currentPosition: uint8 (0-100)
<OUTPUT-ARGS>
  <ARGUMENT-DATA-PROTOTYPE>
    <SHORT-NAME>responseData</SHORT-NAME>
    <TYPE-TREF>/DataTypes/tResponseStruct</TYPE-TREF>
    <DIRECTION>OUT</DIRECTION>
  </ARGUMENT-DATA-PROTOTYPE>
</OUTPUT-ARGS>
  1. Event/Notification Event Parameter
  • 定义:事件通知中包含的参数。

  • 示例

Event Parameter:
- windowID: uint8
- currentPosition: uint8
- statusFlags: uint8 (bit0=AntiPinchActive, bit1=ManualOverride)
<SOMEIP-EVENT>
  <SHORT-NAME>DoorStatusChanged</SHORT-NAME>
  <EVENT-DATA>
    <APPLICATION-DATA-TYPE-REF>/DataTypes/tDoorStatus</APPLICATION-DATA-TYPE-REF>
  </EVENT-DATA>
</SOMEIP-EVENT>
  1. Send Strategy
  • 定义:事件或字段通知的发送策略。

  • 常见值

  • OnChange - 值变化时发送

  • Cyclic - 周期性发送

  • CyclicOnChange - 周期性发送但值变化时立即发送

  • 示例

Send Strategy: OnChange
  • ARXML表示SOMEIP-EVENT/SEND-STRATEGY
<SEND-STRATEGY>ON_CHANGE</SEND-STRATEGY> <!-- 或 ON_TIME -->
  1. Cyclic Time
  • 定义:周期性发送的时间间隔(毫秒)。

  • 示例

Cyclic Time: 1000 (1 second)
  • 示例
<CYCLIC-TIME>100</CYCLIC-TIME> <!-- 100ms周期 -->
  1. Epsilon Value
  • 定义:值变化的最小阈值,超过此阈值才触发OnChange发送。

  • 示例

Epsilon Value: 5 (for position percentage)
  • 示例
<EPSILON-TIME>10</EPSILON-TIME> <!-- ±10ms -->
  1. Remark(备注)
  • 定义:任何额外的说明信息。

  • 示例

Remark: "This event is only sent when the ignition is on or when window position is changing."
  • ARXML表示ANNOTATION
  • 示例
<ANNOTATION>
  <ANNOTATION-ORIGIN>Designer</ANNOTATION-ORIGIN>
  <ANNOTATION-TEXT>This event shall be disabled in diagnostic mode</ANNOTATION-TEXT>
</ANNOTATION>
  • 部分通信矩阵如下表:
Service NameService IDRPC TypeField Property NameField Property Data TypeRPC Specific TypeMethod/Event DescriptionEventgroup Name@EventgroupIDUDP/TCPInput ParameterOutput ParameterEvent ParameterSend StrategyCyclic TimeEpsilon ValueRemark
WindowControlService0x1234Method---Set window target position-TCPwindowID: uint8
targetPosition: uint8
result: uint8
currentPosition: uint8
-----
WindowControlService0x1234Event---Window position updateWindowStatusEvents@0x01UDP--windowID: uint8
currentPosition: uint8
statusFlags: uint8
OnChange-5Only sent when ignition on
WindowControlService0x1234FieldWindowPositionuint8NotifierWindow position fieldWindowStatusEvents@0x01UDP--windowID: uint8
currentPosition: uint8
OnChange-5-
  • 完整服务示例如下:
<SOMEIP-SERVICE-INTERFACE>
  <SHORT-NAME>/Company/Body/Doors</SHORT-NAME>
  <SERVICE-ID>0x2010</SERVICE-ID>
  <VERSION-MAJOR>1</VERSION-MAJOR>
  <VERSION-MINOR>0</VERSION-MINOR>
  
  <METHODS>
    <SOMEIP-METHOD>
      <SHORT-NAME>LockDoors</SHORT-NAME>
      <METHOD-ID>0x0001</METHOD-ID>
      <TYPE>FIRE_AND_FORGET</TYPE>
      <INPUT-ARGS>
        <ARGUMENT-DATA-PROTOTYPE>
          <SHORT-NAME>forceLock</SHORT-NAME>
          <TYPE-TREF>/DataTypes/boolean</TYPE-TREF>
        </ARGUMENT-DATA-PROTOTYPE>
      </INPUT-ARGS>
    </SOMEIP-METHOD>
  </METHODS>

  <EVENTS>
    <SOMEIP-EVENT>
      <SHORT-NAME>DoorStatusUpdate</SHORT-NAME>
      <EVENT-ID>0x8001</EVENT-ID>
      <EVENT-DATA>
        <APPLICATION-DATA-TYPE-REF>/DataTypes/tDoorStatus</APPLICATION-DATA-TYPE-REF>
      </EVENT-DATA>
      <SEND-STRATEGY>ON_CHANGE</SEND-STRATEGY>
      <CYCLIC-TIME>500</CYCLIC-TIME>
    </SOMEIP-EVENT>
  </EVENTS>

  <EVENTGROUPS>
    <SOMEIP-EVENTGROUP>
      <SHORT-NAME>DoorEventGroup</SHORT-NAME>
      <EVENTGROUP-ID>0x3001</EVENTGROUP-ID>
      <EVENTS>
        <SOMEIP-EVENT-REF>/Events/DoorStatusUpdate</SOMEIP-EVENT-REF>
      </EVENTS>
    </SOMEIP-EVENTGROUP>
  </EVENTGROUPS>
</SOMEIP-SERVICE-INTERFACE>

2.2 数据类型定义

  1. DataType Name
  • 定义:数据类型的唯一标识符

  • 说明

    • 遵循驼峰命名法或下划线命名法
    • 应具有语义化特征
    • 在系统中全局唯一
  • 示例

DataType Name: WindowPositionType
  • ARXML示例
<SHORT-NAME>WindowPositionType</SHORT-NAME>
  1. DataType Description
  • 定义:对数据类型的详细功能描述。

  • 示例

DataType Description: "表示车窗位置的百分比值,0表示完全关闭,100表示完全打开,中间值表示部分开启程度"
  • ARXML示例
<DESC>Represents window position in percentage (0-100%)</DESC>
  1. DataType Category
  • 定义:数据类型的分类。

  • 常见类别

    • Primitive - 基本类型(uint8, float等)
    • Struct - 结构体
    • Array - 数组
    • String - 字符串
    • Enumeration - 枚举
    • Union - 联合体
  • 示例

DataType Category: Primitive
  • ARXML示例
<TYPE-CATEGORY>VALUE</TYPE-CATEGORY> 
<!-- 可选值:VALUE|ARRAY|STRUCTURE|ENUM|UNION -->
  1. String/Array Length Type
  • 定义:指定字符串或数组长度的表示方式。

  • 选项

    • Fixed - 固定长度
    • Dynamic - 动态长度
    • LengthField - 有单独长度字段
  • 示例

String/Array Length Type: Fixed
  • ARXML示例
<ARRAY-TYPE>
  <LENGTH-FIELD-TYPE>FIXED-LENGTH</LENGTH-FIELD-TYPE>
  <!-- 可选:FIXED-LENGTH|DYNAMIC-LENGTH -->
</ARRAY-TYPE>
  1. String/Array Length Min/Max
  • 定义:长度范围限制
  • ARXML示例
<STRING-TYPE>
  <MAX-NR-OF-CHARS>32</MAX-NR-OF-CHARS>
</STRING-TYPE>
  1. Member Name
  • 定义:结构体或联合体中成员变量的名称。

  • 示例

Member Name: "positionValue"
  • ARXML示例
<STRUCTURE-ELEMENT>
  <SHORT-NAME>currentPosition</SHORT-NAME>
</STRUCTURE-ELEMENT>
  1. Member Description
  • 定义:对结构体成员的详细描述。

  • 示例

Member Description: "车窗当前位置的实际百分比值"
  • ARXML示例
<DESC>Current window position percentage</DESC>
  1. Member Datatype Reference
  • 定义:成员引用的数据类型名称。

  • 示例

Member Datatype Reference: "uint8"
  • ARXML示例
<TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8</TYPE-TREF>
  1. Base Datatype
  • 定义:派生类型的底层基本类型。

  • 示例

Base Datatype: uint8 (对于枚举类型WindowStateEnum)
  • ARXML示例
<BASE-TYPE-REF DEST="INTEGER-TYPE">/DataTypes/uint8</BASE-TYPE-REF>
  1. Resolution(分辨率)
  • 定义:原始值到物理值的转换系数。

  • 公式:物理值 = (原始值 × Resolution) + Offset

  • 示例

Resolution: 0.5 (每个数字单位代表0.5%的开度)
  1. Offset(偏移量)
  • 定义:原始值到物理值的转换偏移量。

  • 示例

Offset: 0
<COMPU-NUMERATOR>
  <V>0.5</V> <!-- Resolution -->
  <V>0</V>   <!-- Offset -->
</COMPU-NUMERATOR>
  1. Physical Min(物理最小值)
  • 定义:该物理量允许的最小值。

  • 示例

Physical Min: 0 (完全关闭)
  1. Physical Max(物理最大值)
  • 定义:该物理量允许的最大值。

  • 示例

Physical Max: 100 (完全打开)
  • ARXML示例
<PHYS-CONSTRS>
  <MIN>0</MIN>
  <MAX>100</MAX>
</PHYS-CONSTRS>
  1. Initial Value
  • 定义:变量初始化时的默认值。

  • 示例

Initial Value: 0 (车窗默认完全关闭)
  • ARXML示例
<INIT-VALUE>
  <NUMERICAL-VALUE-SPECIFICATION>
    <VALUE>0</VALUE>
  </NUMERICAL-VALUE-SPECIFICATION>
</INIT-VALUE>
  1. Invalid Value
  • 定义:表示数据无效的特殊值。

  • 示例

Invalid Value: 0xFF (对于uint8类型的位置值)
  • ARXML示例
<INVALID-VALUE>255</INVALID-VALUE>
  1. Unit
  • 定义:物理量的计量单位。

  • 示例

Unit: "%" (百分比)
  • ARXML示例
<UNIT>%</UNIT>
  1. Discrete Value Definition
  • 定义:枚举或标志位的取值定义。

  • 格式

<数值> : <名称> : <描述>
  • 示例
Discrete Value Definition:
0 : WINDOW_CLOSED : "车窗完全关闭"
100 : WINDOW_OPEN : "车窗完全打开"
  • ARXML示例
<SW-ENUMERATION>
  <SHORT-NAME>WindowState</SHORT-NAME>
  <ITEMS>
    <ENUMERATION-LITERAL>
      <SHORT-NAME>CLOSED</SHORT-NAME>
      <VALUE>0</VALUE>
    </ENUMERATION-LITERAL>
  </ITEMS>
</SW-ENUMERATION>
  1. Discrete Value Translation
  • 定义:离散值在不同语言/环境下的表示。

  • 示例

Discrete_Value_Definition_Translation:
de_DE:
  WINDOW_CLOSED : "Fenster geschlossen"
  WINDOW_OPEN : "Fenster geöffnet"
  • ARXML示例
<ANNOTATION>
  <LANGUAGE>de-DE</LANGUAGE>
  <DESC>GESCHLOSSEN</DESC>
</ANNOTATION>
  1. 备注
  • 定义:任何额外的说明信息。

  • 示例

备注: "超过90%的位置值将触发车窗自动通风模式"
  • ARXML示例
<ANNOTATION>
  <DESC>Value 127 represents maintenance mode</DESC>
</ANNOTATION>
  • 部分通信矩阵如下表
参数名称定义示例值备注
DataType Name数据类型唯一标识WindowPosType采用Pascal命名法
Description类型功能描述“车窗位置百分比(0-100%)”
Category数据类型分类VALUE可选:VALUE/ARRAY/STRUCTURE/ENUM
String/Array Length Type长度类型FIXED-LENGTH动态数组需指定最大长度
Length Min/Max长度范围1/32字符串/数组元素数量限制
Member Name结构体成员名currentPos
Member Description成员描述“当前车窗位置”
Member Datatype Ref成员类型引用/DataTypes/uint8
Base Datatype基础类型uint8
Resolution分辨率0.5物理值=原始值×分辨率+偏移量
Offset偏移量0
Physical Min/Max物理值范围0/100带单位的实际值范围
Initial Value初始值0
Invalid Value无效值255
Unit物理单位%
Discrete Values枚举值定义0=CLOSED, 100=OPEN
Value Translation多语言翻译de-DE: "GESCHLOSSEN"
Remark附加说明“值127表示维护模式”
  • 完整ARXML数据类型定义示例:
<AR-PACKAGE>
  <SHORT-NAME>DataTypes</SHORT-NAME>
  <ELEMENTS>
    <INTEGER-TYPE>
      <SHORT-NAME>WindowPosType</SHORT-NAME>
      <DESC>Window position percentage</DESC>
      <BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
      <PHYS-CONSTRS>
        <MIN>0</MIN>
        <MAX>100</MAX>
        <UNIT>%</UNIT>
      </PHYS-CONSTRS>
      <COMPU-METHOD>
        <COMPU-NUMERATOR>
          <V>0.5</V> <!-- 0.5% per LSB -->
          <V>0</V>
        </COMPU-NUMERATOR>
      </COMPU-METHOD>
      <INVALID-VALUE>255</INVALID-VALUE>
    </INTEGER-TYPE>

    <STRUCTURE-TYPE>
      <SHORT-NAME>WindowStatusType</SHORT-NAME>
      <ELEMENTS>
        <STRUCTURE-ELEMENT>
          <SHORT-NAME>position</SHORT-NAME>
          <TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/WindowPosType</TYPE-TREF>
        </STRUCTURE-ELEMENT>
        <STRUCTURE-ELEMENT>
          <SHORT-NAME>flags</SHORT-NAME>
          <TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8</TYPE-TREF>
          <BIT-FIELD>
            <BIT-POSITION>0</BIT-POSITION>
            <DESC>Anti-pinch active</DESC>
          </BIT-FIELD>
        </STRUCTURE-ELEMENT>
      </ELEMENTS>
    </STRUCTURE-TYPE>
  </ELEMENTS>
</AR-PACKAGE>

2.3 服务实例与网络配置参数

1. Service Name

  • 定义:服务的可读名称,用于标识功能。
  • 要求
    • 采用驼峰命名法或下划线命名
    • 应具有语义化特征(如WindowControlService
  • 示例
Service Name: DoorLockService
  • ARXML示例
<SHORT-NAME>DoorLockService</SHORT-NAME>

2. Service ID

  • 定义:16位无符号整数(0x0001-0xFFFF),唯一标识一个SOME/IP服务。
  • 要求
    • 必须全局唯一
    • 通常由架构团队统一分配
  • 示例
Service ID: 0x1234
  • ARXML示例
<SERVICE-ID>0x1234</SERVICE-ID>

3. Instance ID

  • 定义:16位无符号整数,标识同一服务的不同实例(如左车门、右车门)。
  • 要求
    • 同一服务可部署多个实例(如0x0001=左车门,0x0002=右车门)
    • 0x0000通常保留给默认实例
  • 示例
Instance ID: 0x0001 (Driver Door)
  • ARXML示例
<INSTANCE-ID>0x0001</INSTANCE-ID>

4. Major Version(主版本号)

  • 定义:8位无符号整数,表示服务的主要版本(重大变更时递增)。
  • 要求
    • 版本格式:Major.Minor
    • 不兼容变更时递增Major Version
  • 示例
Major Version: 1

5. Minor Version(次版本号)

  • 定义:32位无符号整数,表示服务的次要版本(兼容性变更时递增)。
  • 要求
    • 向后兼容的变更递增Minor Version
  • 示例
Minor Version: 2
  • ARXML示例
<VERSION>
  <MAJOR-VERSION>1</MAJOR-VERSION>
  <MINOR-VERSION>2</MINOR-VERSION>
</VERSION>

6. TTL (Time To Live)

  • 定义:服务实例的生命周期(单位:秒),超过时间未收到心跳则视为离线。
  • 要求
    • 0xFFFFFFFF表示永久有效
    • 典型值:3秒(快速检测故障)
  • 示例
TTL: 3
<SD-CLIENT-CONFIG>
  <TTL>3</TTL> <!-- 3秒 -->
</SD-CLIENT-CONFIG>

7. VLAN ID(虚拟局域网ID)

  • 定义:12位标识符(1-4094),用于网络流量隔离。
  • 要求
    • 04095保留
    • 不同功能域(如车身、动力)使用不同VLAN
  • 示例
VLAN ID: 100 (Body Domain)

8. VLAN Name(VLAN名称)

  • 定义:VLAN的可读名称,便于管理。
  • 示例
VLAN Name: BODY_VLAN

9. VLAN PRIORITY(VLAN优先级)

  • 定义:3位值(0-7),定义IEEE 802.1Q帧的优先级(QoS)。
  • 要求
    • 0=最低,7=最高(关键安全消息用6-7
  • 示例
VLAN PRIORITY: 4 (High Priority)
  • ARXML示例
<ETHERNET-COMMUNICATION-CONNECTOR>
  <VLAN-ID>100</VLAN-ID>
  <VLAN-NAME>BODY_DOMAIN</VLAN-NAME>
  <VLAN-PRIORITY>4</VLAN-PRIORITY> <!-- 0-7 -->
</ETHERNET-COMMUNICATION-CONNECTOR>

10. Transport Protocol

  • 定义:指定使用TCPUDP传输。
  • 要求
    • TCP:可靠传输(如配置数据)
    • UDP:低延迟(如传感器数据)
  • 示例
Transport Protocol: UDP
  • ARXML示例
<TRANSPORT-PROTOCOL>TCP</TRANSPORT-PROTOCOL>

11. Server(服务端ECU)

  • 定义:提供服务的ECU名称(如BCM、ECM)。
  • 示例
Server: BCM (Body Control Module)

12. Server IP(服务端IP地址)

  • 定义:服务端ECU的IPv4/IPv6地址。
  • 要求
    • 通常使用私有地址(如192.168.xx.xx
  • 示例
Server IP: 192.168.100.10

13. Server IP SubnetMask(服务端子网掩码)

  • 定义:服务端IP的子网掩码(如255.255.255.0)。
  • 示例
Server IP SubnetMask: 255.255.255.0

14. Server Port(服务端端口)

  • 定义:服务端监听的端口号(1-65535)。
  • 要求
    • 通常使用30490-30500范围(AUTOSAR推荐)
  • 示例
Server Port: 30490
  • ARXML示例
<SERVER-ENDPOINT>
  <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/BCM</ECU-INSTANCE-REF>
  <IP-ADDRESS>192.168.100.10</IP-ADDRESS>
  <NETWORK-MASK>255.255.255.0</NETWORK-MASK>
  <TCP-PROPERTIES>
    <TCP-PORT>30490</TCP-PORT>
  </TCP-PROPERTIES>
</SERVER-ENDPOINT>

15. Client(客户端ECU)

  • 定义:消费该服务的ECU名称。
  • 示例
Client: DCM (Door Control Module)

16. Client ID(客户端ID)

  • 定义:16位无符号整数,唯一标识客户端实例。
  • 要求
    • 同一ECU的不同客户端使用不同ID
  • 示例
Client ID: 0x0001

17. Client IP(Unicast,客户端IP)

  • 定义:客户端的单播IP地址。
  • 示例
Client IP (unicast): 192.168.100.20

18. Client IP SubnetMask(客户端子网掩码)

  • 定义:客户端IP的子网掩码。
  • 示例
Client IP SubnetMask: 255.255.255.0

19. Client Port(客户端端口)

  • 定义:客户端使用的源端口(动态或固定)。
  • 要求
    • 动态端口范围:49152-65535
    • 固定端口需避免冲突
      示例
Client Port: 49200
  • ARXML示例
<CLIENT-ENDPOINT>
  <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DCM_LF</ECU-INSTANCE-REF>
  <CLIENT-IDENTIFIER>0x0001</CLIENT-IDENTIFIER>
  <IP-ADDRESS>192.168.100.20</IP-ADDRESS>
  <NETWORK-MASK>255.255.255.0</NETWORK-MASK>
  <DYNAMIC-PORT>true</DYNAMIC-PORT> <!-- 或指定固定端口 -->
</CLIENT-ENDPOINT>

部分通信矩阵如下表

Service NameService IDInstance IDMajor VersionMinor VersionTTLVLAN IDVLAN NameVLAN PRIOTransport ProtocolServerServer IPServer SubnetServer PortClientClient IDClient IPClient SubnetClient Port
DoorLockService0x12340x0001123100BODY_VLAN4UDPBCM192.168.100.10255.255.255.030490DCM0x0001192.168.100.20255.255.255.049200
WindowControlService0x12350x0001115100BODY_VLAN3TCPBCM192.168.100.10255.255.255.030491HMI0x0002192.168.100.30255.255.255.0Dynamic
  • 完整ARXML服务实例配置示例
<AR-PACKAGE>
  <SHORT-NAME>ServiceDeployment</SHORT-NAME>
  <ELEMENTS>
    <SERVICE-INSTANCE>
      <SHORT-NAME>DoorLock_DriverSide</SHORT-NAME>
      <SERVICE-REF DEST="SERVICE-INTERFACE">/Services/DoorLockService</SERVICE-REF>
      <INSTANCE-ID>0x0001</INSTANCE-ID>
      <VERSION>
        <MAJOR-VERSION>1</MAJOR-VERSION>
        <MINOR-VERSION>2</MINOR-VERSION>
      </VERSION>
      
      <SERVER-CONFIG>
        <SD-SERVER-CONFIG>
          <TTL>3</TTL>
        </SD-SERVER-CONFIG>
        <NETWORK-BINDING>
          <ETHERNET-COMMUNICATION-CONNECTOR>
            <VLAN-ID>100</VLAN-ID>
            <VLAN-PRIORITY>4</VLAN-PRIORITY>
          </ETHERNET-COMMUNICATION-CONNECTOR>
          <SOCKET-CONNECTION>
            <IP-ADDRESS>192.168.100.10</IP-ADDRESS>
            <NETWORK-MASK>255.255.255.0</NETWORK-MASK>
            <TCP-PROPERTIES>
              <TCP-PORT>30490</TCP-PORT>
            </TCP-PROPERTIES>
          </SOCKET-CONNECTION>
        </NETWORK-BINDING>
      </SERVER-CONFIG>

      <CLIENT-CONFIGURATION>
        <CLIENT-CONFIG>
          <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DCM_LF</ECU-INSTANCE-REF>
          <CLIENT-IDENTIFIER>0x0001</CLIENT-IDENTIFIER>
        </CLIENT-CONFIG>
      </CLIENT-CONFIGURATION>
    </SERVICE-INSTANCE>
  </ELEMENTS>
</AR-PACKAGE>

2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置)

定义:服务发现(Service Discovery)使用的组播通信配置。

说明

  • SOME/IP-SD使用组播进行服务发现和发布
  • 所有需要发现服务的ECU都必须加入指定的组播组
  • 组播通信用于服务上线/下线通知和心跳机制

子参数说明

  • VLAN ID:组播所在的VLAN标识
  • SD Multicast Address:服务发现组播地址
  • Port Num:服务发现使用的端口号
  • Protocol:传输层协议

示例

SOME/IP-SD Multicast:
  VLAN ID: 100
  SD Multicast Address: 239.255.0.1
  Port Num: 30490
  Protocol: UDP

ARXML示例

<SOMEIP-SD-CONFIG>
  <MULTICAST-CONFIG>
    <ENABLED>true</ENABLED>
    <MULTICAST-ADDRESS>239.255.0.1</MULTICAST-ADDRESS>
    <PORT-NUMBER>30490</PORT-NUMBER>
    <PROTOCOL>UDP</PROTOCOL>
  </MULTICAST-CONFIG>
</SOMEIP-SD-CONFIG>

1. VLAN ID

  • 定义:服务发现组播所在的VLAN标识符。

  • 说明

    • 范围1-4094(0和4095保留)
    • 必须与业务通信的VLAN ID一致
    • 确保服务发现报文能到达同一VLAN内的所有ECU
  • 示例

VLAN ID: 100 (Body Domain VLAN)
  • ARXML示例
<ETHERNET-COMMUNICATION-CONNECTOR>
  <VLAN-ID>100</VLAN-ID>
</ETHERNET-COMMUNICATION-CONNECTOR>

2. SD Multicast Address

  • 定义:SOME/IP服务发现使用的组播IP地址。

  • 说明

    • 标准SOME/IP-SD组播地址范围:239.255.0.0/16
    • 常用默认地址:239.255.0.1
    • 同一网络域内所有ECU必须使用相同组播地址
  • 示例

SD Multicast Address: 239.255.0.1
  • 规范

  • 范围:239.255.0.0/16

  • 默认地址:239.255.0.1

  • ARXML示例

<IPV-4-CONFIGURATION>
  <MULTICAST-ADDRESS>239.255.0.1</MULTICAST-ADDRESS>
</IPV-4-CONFIGURATION>

3. Port Num

  • 定义:SOME/IP服务发现使用的UDP端口号。

  • 说明

  • 标准端口号:30490

  • 所有ECU必须使用相同端口进行服务发现

  • 端口号必须在IANA注册端口范围内(1024-49151)

  • 示例

Port Num: 30490
  • ARXML示例
<UDP-PROPERTIES>
  <PORT-NUMBER>30490</PORT-NUMBER>
</UDP-PROPERTIES>

4. Protocol

  • 定义:SOME/IP服务发现使用的传输层协议。

  • 说明

    • 组播必须使用UDP
    • 原因:组播通信只支持UDP
    • 单播可选UDPTCP
  • 示例

Protocol: UDP
  • ARXML示例
<TRANSPORT-PROTOCOL>UDP</TRANSPORT-PROTOCOL>

2.5 SOME/IP-SD Unicast 配置

  • 定义:服务发现使用的单播通信配置。

  • 说明

    • 用于ECU之间的直接服务发现通信
    • 当组播不可用时作为备用方案
    • 也可用于特定ECU之间的直接通信
  • 子参数说明

    • Port Num:服务发现单播端口号
    • Protocol:传输层协议
  • 示例

SOME/IP-SD Unicast:
  Port Num: 30490
  Protocol: UDP
  1. Port Num(单播端口号)
  • 定义:SOME/IP服务发现单播通信使用的端口号。

  • 说明

    • 通常与组播端口号相同(30490)
    • 允许配置不同的端口号
    • 必须在ECU之间保持一致
  • 示例

Port Num: 30490
  1. Protocol(单播协议)
  • 定义:SOME/IP服务发现单播使用的传输层协议。

  • 说明

    • 通常使用UDP协议
    • 某些实现可能支持TCP
    • 必须与组播协议保持一致
  • 示例

Protocol: UDP
  • ARXML示例
<SOMEIP-SD-CONFIG>
  <UNICAST-CONFIG>
    <PORT-NUMBER>30490</PORT-NUMBER>
    <PROTOCOL>UDP</PROTOCOL>
  </UNICAST-CONFIG>
</SOMEIP-SD-CONFIG>
  • 部分通信矩阵如下表:
配置项VLAN ID地址/端口协议备注
SOME/IP-SD Multicast100239.255.0.1:30490UDP主服务发现通道
SOME/IP-SD Unicast-<ECU_IP>:30490UDP备用服务发现通道
  • 完整ARXML服务发现配置示例
<AR-PACKAGE>
  <SHORT-NAME>SdConfig</SHORT-NAME>
  <ELEMENTS>
    <!-- 组播配置 -->
    <SOMEIP-SD-CONFIG>
      <SHORT-NAME>SdMulticastConfig</SHORT-NAME>
      <MULTICAST-CONFIG>
        <ENABLED>true</ENABLED>
        <MULTICAST-ADDRESS>239.255.0.1</MULTICAST-ADDRESS>
        <PORT-NUMBER>30490</PORT-NUMBER>
        <PROTOCOL>UDP</PROTOCOL>
      </MULTICAST-CONFIG>
      
      <!-- 单播配置 -->
      <UNICAST-CONFIG>
        <PORT-NUMBER>30490</PORT-NUMBER>
        <PROTOCOL>UDP</PROTOCOL>
      </UNICAST-CONFIG>
      
      <!-- VLAN绑定 -->
      <NETWORK-BINDING>
        <ETHERNET-COMMUNICATION-CONNECTOR>
          <VLAN-ID>100</VLAN-ID>
          <VLAN-PRIORITY>4</VLAN-PRIORITY>
        </ETHERNET-COMMUNICATION-CONNECTOR>
      </NETWORK-BINDING>
    </SOMEIP-SD-CONFIG>
  </ELEMENTS>
</AR-PACKAGE>

2.6 SOME/IP-SD ECU 配置参数详解

SOME/IP-SD(Service Discovery)是SOME/IP协议的服务发现机制,用于ECU(电子控制单元)之间的服务注册、订阅和查找。以下是SOME/IP-SD相关的ECU配置参数定义及详细说明。

SOME/IP-SD ECU Configuration

  • 定义:ECU级别的服务发现行为控制参数集
  • ARXML位置/SdClientConfig/SdServerConfig节点
<SD-CLIENT-CONFIG>
  <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
  <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX>
</SD-CLIENT-CONFIG>

1. ECU Name

  • 定义:ECU的唯一标识名称,通常采用AUTOSAR标准命名(如BCMECM)。
  • 要求
    • 在整车通信矩阵中唯一
    • 建议使用大写字母和下划线(如DOOR_MODULE_LF
  • 示例
ECU Name: BCM (Body Control Module)
  • ARXML示例
<ECU-INSTANCE>
  <SHORT-NAME>BCM_MAIN</SHORT-NAME>
  <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS>
</ECU-INSTANCE>

2. MAC地址

  • 定义:ECU网络接口的物理地址(48位,如00:1A:2B:3C:4D:5E)。
  • 作用
    • 用于二层通信(如VLAN内的ECU识别)
    • SOME/IP-SD不直接使用MAC,但底层网络依赖它
  • 示例
MAC地址: 00:1A:2B:3C:4D:5E
  • ARXML约束
<ETHERNET-PHYSICAL-PORT>
  <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS>
</ETHERNET-PHYSICAL-PORT>

3. Init_Delay_Min(初始延迟最小值)

  • 定义:ECU启动后,首次发送OfferService(服务提供)消息的最小延迟时间(单位:ms)。
  • 作用
    • 避免所有ECU同时启动导致网络拥塞
    • 随机化初始延迟,减少冲突
  • 取值范围10ms ~ 5000ms(AUTOSAR推荐)
  • 示例
Init_Delay_Min: 100ms

4. Init_Delay_Max(初始延迟最大值)

  • 定义:ECU启动后,首次发送OfferService消息的最大延迟时间(单位:ms)。
  • 作用
    • Init_Delay_Min共同定义随机延迟范围
    • 确保ECU在合理时间内完成服务注册
  • 要求Init_Delay_Max > Init_Delay_Min
  • 示例
Init_Delay_Max: 500ms
  • 工程规则
    • 最小值建议≥100ms
    • 最大值应≤2000ms
  • ARXML示例
<INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
<INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX>

5. Repetition_Base_Delay

  • 定义:服务发现消息(如OfferService)的重传基准间隔(单位:ms)。
  • 作用
    • 控制消息的重复频率
    • 防止消息丢失或未被接收
  • 典型值200ms ~ 1000ms
  • 示例
Repetition_Base_Delay: 500ms
  • ARXML示例
<REPETITION-BASE-DELAY>500</REPETITION-BASE-DELAY>

6. Repetitions_Max

  • 定义OfferService消息的最大重复发送次数。
  • 作用
    • 确保服务信息被可靠传播
    • 避免无限重传浪费带宽
  • 典型值3次(AUTOSAR推荐)
  • 示例
Repetitions_Max: 3
  • AUTOSAR约束
<REPETITIONS-MAX>3</REPETITIONS-MAX> <!-- 固定值3 -->

7. Cyclic_Offer_Delay(周期性服务提供延迟)

  • 定义:ECU周期性广播OfferService消息的间隔(单位:ms)。
  • 作用
    • 维持服务可见性(类似心跳机制)
    • 适用于长期运行的服务
  • 典型值1000ms ~ 5000ms
  • 示例
Cyclic_Offer_Delay: 2000ms
  • ARXML示例
<CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY>

8. Request_Response_Delay_Min(请求响应延迟最小值)

  • 定义:ECU响应FindService(服务查找)请求的最小延迟(单位:ms)。
  • 作用
    • 避免瞬时高负载
    • 模拟真实网络响应时间
  • 典型值10ms ~ 100ms
  • 示例
Request_Response_Delay_Min: 20ms

9. Request_Response_Delay_Max(请求响应延迟最大值)

  • 定义:ECU响应FindService请求的最大延迟(单位:ms)。
  • 作用
    • Request_Response_Delay_Min共同定义随机延迟范围
    • 模拟网络抖动
  • 要求Request_Response_Delay_Max > Request_Response_Delay_Min
  • 示例
Request_Response_Delay_Max: 100ms
  • ARXML示例
<REQUEST-RESPONSE-DELAY-MIN>20</REQUEST-RESPONSE-DELAY-MIN>
<REQUEST-RESPONSE-DELAY-MAX>100</REQUEST-RESPONSE-DELAY-MAX>
  • 部分通信矩阵如下表
ECU NameMAC地址Init_Delay_MinInit_Delay_MaxRepetition_Base_DelayRepetitions_MaxCyclic_Offer_DelayRequest_Response_Delay_MinRequest_Response_Delay_Max
BCM00:1A:2B:3C:4D:5E100ms500ms500ms32000ms20ms100ms
DCM_LF00:1A:2B:3C:4D:5F150ms600ms400ms33000ms30ms150ms
  • 完整ARXML配置示例
<AR-PACKAGE>
  <SHORT-NAME>SdEcuConfig</SHORT-NAME>
  <ELEMENTS>
    <SD-CLIENT-CONFIG>
      <SHORT-NAME>BCM_SdClient</SHORT-NAME>
      <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
      <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX>
      <REPETITION-BASE-DELAY>500</REPETITION-BASE-DELAY>
      <REPETITIONS-MAX>3</REPETITIONS-MAX>
      <REQUEST-RESPONSE-DELAY-MIN>20</REQUEST-RESPONSE-DELAY-MIN>
      <REQUEST-RESPONSE-DELAY-MAX>100</REQUEST-RESPONSE-DELAY-MAX>
    </SD-CLIENT-CONFIG>

    <SD-SERVER-CONFIG>
      <SHORT-NAME>BCM_SdServer</SHORT-NAME>
      <CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY>
      <TTL>3</TTL>
    </SD-SERVER-CONFIG>
  </ELEMENTS>
</AR-PACKAGE>

关键配置规则

  1. 时间参数单位

    <!-- 所有时间参数单位必须为毫秒 -->
    <CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY> <!-- 2000ms -->
    
  2. MAC地址格式

    <!-- 必须符合IEEE 802格式 -->
    <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS> <!-- 合法 -->
    <MAC-ADDRESS>00-1A-2B-3C-4D-5E</MAC-ADDRESS> <!-- 非法 -->
    
  3. 延迟范围验证

    <!-- 必须满足 Min ≤ Max -->
    <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
    <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX> <!-- 合法 -->
    
  4. 重传次数约束

    <!-- 必须为固定值3 -->
    <REPETITIONS-MAX>3</REPETITIONS-MAX> <!-- 合法 -->
    <REPETITIONS-MAX>5</REPETITIONS-MAX> <!-- 违反AUTOSAR标准 -->
    

工程实施建议

  1. 网络负载优化

    • 建议Cyclic_Offer_Delay ≥ 1000ms
    • 同一VLAN内ECU的Init_Delay_Max应错开配置
  2. 实时性要求

    <!-- 安全关键服务应减小响应延迟 -->
    <REQUEST-RESPONSE-DELAY-MAX>50</REQUEST-RESPONSE-DELAY-MAX>
    
  3. 诊断接口

    <!-- 可添加诊断监控配置 -->
    <SD-DIAGNOSTIC-CONFIG>
      <ERROR-HANDLING>ENABLED</ERROR-HANDLING>
    </SD-DIAGNOSTIC-CONFIG>
    

3 总结

本文主要对SOME/IP通信矩阵进行了详细介绍,有利于车载测试工程师更好地应对车载SOME/IP通信测试的相关需求,希望能对大家有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理 - HTTP/HTTPS

1. HTTP 1.1 HTTP是什么&#xff1f; HTTP (全称为 “超文本传输协议”) 是⼀种应用非常广泛的应用层协议. HTTP发展史&#xff1a; HTTP 诞生于1991年. 目前已经发展为最主流使用的⼀种应用层协议 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经…

OCC Shape 操作

#pragma once #include <iostream> #include <string> #include <filesystem> #include <TopoDS_Shape.hxx> #include <string>class GeometryIO { public:// 加载几何模型&#xff1a;支持 .brep, .step/.stp, .iges/.igsstatic TopoDS_Shape L…

深度学习入门(四):误差反向传播法

文章目录 前言链式法则什么是链式法则链式法则和计算图 反向传播加法节点的反向传播乘法节点的反向传播苹果的例子 简单层的实现乘法层的实现加法层的实现 激活函数层的实现ReLu层Sigmoid层 Affine层/SoftMax层的实现Affine层Softmax层 误差反向传播的实现参考资料 前言 上一篇…

Linux:页表详解(虚拟地址到物理地址转换过程)

文章目录 前言一、分页式存储管理1.1 虚拟地址和页表的由来1.2 物理内存管理与页表的数据结构 二、 多级页表2.1 页表项2.2 多级页表的组成 总结 前言 在我们之前的学习中&#xff0c;我们对于页表的认识仅限于虚拟地址到物理地址转换的桥梁&#xff0c;然而对于具体的转换实现…

PostgreSQL 一文从安装到入门掌握基本应用开发能力!

本篇文章主要讲解 PostgreSQL 的安装及入门的基础开发能力,包括增删改查,建库建表等操作的说明。navcat 的日常管理方法等相关知识。 日期:2025年4月6日 作者:任聪聪 一、 PostgreSQL的介绍 特点:开源、免费、高性能、关系数据库、可靠性、稳定性。 官网地址:https://w…

WEB安全--内网渗透--LMNTLM基础

一、前言 LM Hash和NTLM Hash是Windows系统中的两种加密算法&#xff0c;不过LM Hash加密算法存在缺陷&#xff0c;在Windows Vista 和 Windows Server 2008开始&#xff0c;默认情况下只存储NTLM Hash&#xff0c;LM Hash将不再存在。所以我们会着重分析NTLM Hash。 在我们内…

8.用户管理专栏主页面开发

用户管理专栏主页面开发 写在前面用户权限控制用户列表接口设计主页面开发前端account/Index.vuelangs/zh.jsstore.js 后端Paginator概述基本用法代码示例属性与方法 urls.pyviews.py 运行效果 总结 欢迎加入Gerapy二次开发教程专栏&#xff01; 本专栏专为新手开发者精心策划了…

室内指路机器人是否支持与第三方软件对接?

嘿&#xff0c;你知道吗&#xff1f;叁仟室内指路机器人可有个超厉害的技能&#xff0c;那就是能和第三方软件 “手牵手” 哦&#xff0c;接下来就带你一探究竟&#xff01; 从技术魔法角度看哈&#xff1a;好多室内指路机器人都像拥有超能力的小魔法师&#xff0c;采用开放式…

从代码上深入学习GraphRag

网上关于该算法的解析都停留在大概流程上&#xff0c;但是具体解析细节未知&#xff0c;由于代码是PipeLine形式因此阅读起来比较麻烦&#xff0c;本文希望通过阅读项目代码来解析其算法的具体实现细节&#xff0c;特别是如何利用大模型来完成图谱生成和检索增强的实现细节。 …

【Redis】通用命令

使用者通过redis-cli客户端和redis服务器交互&#xff0c;涉及到很多的redis命令&#xff0c;redis的命令非常多&#xff0c;我们需要多练习常用的命令&#xff0c;以及学会使用redis的文档。 一、get和set命令&#xff08;最核心的命令&#xff09; Redis中最核心的两个命令&…

微前端随笔

✨ single-spa&#xff1a; js-entry 通过es-module 或 umd 动态插入 js 脚本 &#xff0c;在主应用中发送请求&#xff0c;来获取子应用的包&#xff0c; 该子应用的包 singleSpa.registerApplication({name: app1,app: () > import(http://localhost:8080/app1.js),active…

C++中的浅拷贝和深拷贝

浅拷贝只是将变量的值赋予给另外一个变量&#xff0c;在遇到指针类型时&#xff0c;浅拷贝只会把当前指针的值&#xff0c;也就是该指针指向的地址赋予给另外一个指针&#xff0c;二者指向相同的地址&#xff1b; 深拷贝在遇到指针类型时&#xff0c;会先将当前指针指向地址包…

车载诊断架构 --- 整车重启先后顺序带来的思考

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

【C++11(下)】—— 我与C++的不解之缘(三十二)

前言 随着 C11 的引入&#xff0c;现代 C 语言在语法层面上变得更加灵活、简洁。其中最受欢迎的新特性之一就是 lambda 表达式&#xff08;Lambda Expression&#xff09;&#xff0c;它让我们可以在函数内部直接定义匿名函数。配合 std::function 包装器 使用&#xff0c;可以…

Windows 10/11系统优化工具

家庭或工作电脑使用时间久了&#xff0c;会出现各种各样问题&#xff0c;今天给大家推荐一款专为Windows 10/11系统设计的全能优化工具&#xff0c;该软件集成了超过40项专业级实用程序&#xff0c;可针对系统性能进行深度优化、精准调校、全面清理、加速响应及故障修复。通过系…

浅谈在HTTP中GET与POST的区别

从 HTTP 报文来看&#xff1a; GET请求方式将请求信息放在 URL 后面&#xff0c;请求信息和 URL 之间以 &#xff1f;隔开&#xff0c;请求信息的格式为键值对&#xff0c;这种请求方式将请求信息直接暴露在 URL 中&#xff0c;安全性比较低。另外从报文结构上来看&#xff0c…

LightRAG实战:轻松构建知识图谱,破解传统RAG多跳推理难题

作者&#xff1a;后端小肥肠 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 2025防失业预警&#xff1a;不会用DeepSeek-RAG建知识库的人正在被淘汰_deepseek-embedding-CSDN博客 从PDF到精准答案&#xff1a;Coze…

C++多线程编码二

1.lock和try_lock lock是一个函数模板&#xff0c;可以支持多个锁对象同时锁定同一个&#xff0c;如果其中一个锁对象没有锁住&#xff0c;lock函数会把已经锁定的对象解锁并进入阻塞&#xff0c;直到多个锁锁定一个对象。 try_lock也是一个函数模板&#xff0c;尝试对多个锁…

垃圾回收——三色标记法(golang使用)

三色标记法(tricolor mark-and-sweep algorithm)是传统 Mark-Sweep 的一个改进&#xff0c;它是一个并发的 GC 算法&#xff0c;在Golang中被用作垃圾回收的算法&#xff0c;但是也会有一个缺陷&#xff0c;可能程序中的垃圾产生的速度会大于垃圾收集的速度&#xff0c;这样会导…

Windows环境下开发pyspark程序

Windows环境下开发pyspark程序 一、环境准备 1.1. Anaconda/Miniconda&#xff08;Python环境&#xff09; 如果不怕包的版本管理混乱&#xff0c;可以直接使用已有的Python环境。 需要安装anaconda/miniconda&#xff08;python3.8版本以上&#xff09;&#xff1a;Anaconda…