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

SOME/IP学习随笔

1. mcal模块和someip的关系?
        SOMEIP位于AutoSar的服务层,和应用打交道
        MCAL位于Autosar的底层,和硬件微控制器打交道
        SOMEIP依赖MCAL的以太网控制器模块的以太网驱动对外进行通信

2. someip和CAN之间的联系?
        SOMEIP的HEADER有ServiceID(16bit) + Method(16bit)
        可以将ServiceID+Methoid这32bit(4字节)映射到CANID上
        其中ServiceID仍然可以保留,表示后面的CANID是属于哪一块业务的(例如车身,底盘,控制域等)
        后面的MethodID这16bit(2字节)需要重新划分
a. 表示CAN报文属于通知还是方法 (1bit)
b. CAN通道ID (4bit)
c. CANID (11bit)
        然后CAN报文的payload就放在SOMEIP的payload部分就可以了
        当使用Someip的域和使用CAN的域之间想要互相通信,一般需要一个网关来做中转,类似的使用DDS和CAN之间的域也需要一个网关模块来做中转,这个网关可以是一个独立的硬件模块。

3. field中的notifier是否也要包含在eventgroup中?
        是的,field中的notifier和event一样,都需要在eventgroup中

4. 订阅的Subscriber报文中是否需要指定要订阅的eventgroup
        需要指定eventgroup

5. 什么是TLV格式结构?
TLV结构是一种常见的数据序列化格式,这种格式将数据分为三个部分:
    a. 标签(tag):用于标识字段的类型(例如ID, NAME, AGE这种,相当于KEY)
    b. 长度(length):用于表示字段的长度,不同字段类型的长度所占字节数是不一样的
    c. 值(value):用于存储字段值

6. vsomeip配置文件中的单播地址的作用是什么?
单播地址出现在配置文件的最开始位置,是用来对外发布offer报文的时候,填写在service的option中的

7. 如果客户端只是request了service,没有request event,那么routingmanagerd还会发送subscribe报文吗?
A: 1. 从协议规范上判断
   2. 从实际vsomeip实现和测试结果来看

8.Session ID的设置规则是怎样的?
因为Session ID都是SOME/IP消息的发送方设置在SOME/IP的Header中的,
如果该SOME/IP消息是发给组播地址的,不管是几个组播地址,都是共用一个Session ID计数器。
如果该SOME/IP消息是发送给单播地址的,那么应当根据(src ip / src port / dst ip / dst port)四元组维护Session ID计数器。

9. SD消息Header部分的Reboot Flag的作用是什么?
SOME/IP-SD消息的SD Header中的Reboot Flag在整个SOME/IP协议栈重启后设置为1,当且仅当已发送的SOME/IP-SD消息的Session ID已经完成一次循环从1重新开始的时候,才会将Reboot Flag设置为0。
SOME/IP-SD消息的SD Header中的Reboot Flag的复位(从1变为0)是根据SD消息的发送目标地址而分开设置的。
因此,针对Reboot Flag,发送端和接收端都需要维护一个计数器
对于发送端:
对组播地址维护一个定时器
对每一对单播地址的通信对(src IP/src Port/dst IP/dst Port)维护一个定时器

对于接收端:
对每个组播地址维护一个定时器
对每一对单播地址的通信对(src IP/src Port/dst IP/dst Port)维护一个定时器

如下两种情况可以判断SD消息的发送端发生了重启
a. 该发送端上一包SD消息中的Reboot Flag=0,本次收到的SD消息中Reboot Flag=1
b. 本次收到的SD消息Reboot Flag没有变化,还是1,但是Session ID变小了

10. 如何处理Reboot的情况?
对于服务的提供方,收到服务订阅方的SD消息(Subscribe)中有Reboot的情况,则服务的提供方应当按收到订阅方UnSubscribe消息的方式进行处理
对于服务的订阅方,收到服务提供方的SD消息(OFFER)中有Reboot的情况, 则服务的订阅方应当按照收到提供方StopOffer消息的方式进行处理

11. 如何找到Offer报文中的ServiceEntry的Option?

每个SOME/IP Service Instance的ServiceEntry都有两个重要的成员

a. index of option1(2)

b. number of option1(2)

index代表option1(2) 在Options中的序号

number代表option1(2)有几个option(通常是0或者1个)

例如:

代表ServiceID=0x2004的实例0x0001只有Option1(因为Number Of Opts 2 = 0,说明Option2中没有内容),然后Option1的起始索引为0x04(在下方的Options中从上往下数第五个),总共有两个Option Entry 

相关文章:

  • Trae - 非科班在建模比赛中的 AI 编程手|AI编程社知识库精选
  • vscode snippet 工程模板文件分享
  • 【SSH】在VScode中配置SSH
  • 一次硬件恢复之后数据文件0kb的故障恢复---惜分飞
  • 本地生活是如何进行抽佣的
  • 19|Whisper+ChatGPT:请AI代你听播客
  • Flask 快速精通:从入门到实战的轻量级 Web 框架指南
  • git submodule 和git repo介绍
  • 告别微服务,迎接SCS(Self-Contained Systems)?新概念还是炒冷饭?
  • 算法 学习 排序 2025年6月16日10:25:37
  • MySQL 命令行的核心操作命令详解
  • 始理解NLP:我的第一章学习心得
  • SQL注入漏洞-下篇
  • Hive 3.x集成Apache Ranger:打造精细化数据权限管理体系
  • 【Unity笔记】Unity URP 渲染中的灯光数量设置— 场景、使用方法与渲染原理详解
  • Mac Mini M4 安装 jdk8 以及 隐藏 设置内的Java菜单
  • Mac 安装JD-GUI
  • Windows PPT/word怎么pdf不降低分辨率,插入可编辑
  • CSS 选择器、PxCook软件、盒子模型
  • UE5 自动寻路AI Move To节点学习笔记
  • 湖北智能网站建设推荐/廊坊首页霸屏排名优化
  • 创网通信科技有限公司/中小企业网站优化
  • 教育考试类网站建设/查域名
  • 网页制作与设计在工作中的应用/宁波seo怎么做优化
  • qq网页版一键登录/上海官网seo
  • 英文响应式网站建设/什么平台可以免费发广告