- 博客(30)
- 收藏
- 关注
原创 为什么someip find到offer端的服务后,后续再发find报文会提示其handle是empty
问题解释为什么后续 FIND 收不到 OFFER?因为服务端已将你标记为“已知客户端”,按 AUTOSAR 规范不再响应重复 FIND。“Handle is empty” 是什么?表示 SOME/IP-SD 报文中的Entries 数组为空(无服务实例信息)。这是 Bug 吗?❌不是 Bug,而是标准行为。正确做法是什么?收到 OFFER 后,直接使用其中的 IP/Port 进行单播通信,不要再发 FIND。如果你正在开发SOME/IP 客户端stop_sending_find() # 关键!
2025-12-08 11:25:31
601
原创 什么是一级boot和二级boot
一级Boot是“守门人”和“搬运工”,它非常小,只做最关键的事:决定是否刷写,并把“主力军”(二级Boot)请出来。二级Boot是“主力军”和“工程师”,它功能齐全,负责与外界沟通、接收新软件、验证安全、写入存储器等一系列复杂的刷写任务。安全性:一级Boot极难被篡改,为整个更新过程提供了信任根(Root of Trust)。灵活性:二级Boot可以随着需求变化而更新,增加新的功能或支持新的协议。可靠性:即使二级Boot或应用程序损坏,一级Boot通常仍能工作,可以重新刷写修复系统。
2025-10-31 14:02:04
479
原创 DDS和SOMEIP区别以及应用场景
选择DDS:当你需要一个数据为中心、QoS能力极其强大、支持动态发现、松耦合的系统,并且运行平台资源充足时,DDS是理想选择。它特别适合复杂、高可靠性的分布式实时系统。选择SOME/IP:当你在汽车电子领域工作,需要与AUTOSAR标准兼容,在资源受限的ECU上实现高效的服务调用和事件通知,并且网络拓扑相对稳定时,SOME/IP是更自然和主流的选择。在现代智能汽车架构中,两者并非完全互斥。例如,SOME/IP常用于车载网络内部(如域控制器与传感器/执行器之间),而DDS可能用于高性能计算平台内部或。
2025-10-27 17:23:09
600
原创 唤醒源一般有哪些
唤醒源类型具体示例触发条件典型应用场景硬线唤醒KL15信号点火开关打开发动机控制、车身控制等制动踏板信号驾驶员踩制动ABS、ESP、自动驻车门把手/遥控信号门锁开关动作车身控制模块(BCM)网络唤醒CAN网络管理报文总线活动或特定报文大部分联网ECULIN唤醒帧主节点发送唤醒信号车窗、后视镜控制等接收Magic Packet智能座舱、ADAS控制器定时唤醒RTC定时器到达预设时间BMS、远程监控、OTA。
2025-08-29 13:56:27
750
原创 BasicTask 与 ExtendedTask 在 CP AUTOSAR 中的使用场景及实例
BasicTaskSuspended(挂起)、Ready(就绪)或Running(运行)。它不能显式地进入Waiting状态。SuspendedReadyRunning和Waiting。它可以调用主动进入等待状态,并通过SetEvent()被其他任务或 ISR 唤醒。特性BasicTask状态数量4 (含 Waiting)是否支持❌ 否✅ 是是否支持事件唤醒❌ 否✅ 是资源开销小稍大适用场景周期性、简单控制事件驱动、复杂同步典型应用传感器采集、PWM 控制。
2025-08-18 10:23:04
618
原创 SOMEIP-TP用于TCP还是UDP
SOME/IP-TP(Transport Protocol)是SOME/IP协议的扩展,其传输层基于,而非TCP协议:ml-citation{ref=“1,2” data=“citationList”}。
2025-07-22 14:29:31
388
原创 QNX简要接口清单
消息传递机制:同步阻塞式消息发送:接收消息:消息回复需配合和使用:ml-citation{ref=“1,4” data=“citationList”}脉冲通知:轻量级异步通知(仅8/64位数据):ml-citation{ref=“4” data=“citationList”}
2025-07-17 10:06:55
1701
原创 c++中 promise和future CS模型实现
本文将基于promise和future实现异步的CS模型,AP autosar中SOMEIP的通信就是基于这个模型实现的。
2025-05-28 15:40:27
248
原创 SOMEIP TLV是什么
Type(类型):标识数据的类型,如整数、字符串、数组等。Length(长度):指示Value部分的字节长度。Value(值):存放实际的数据内容。这种格式具有自描述性强和扩展性好的优点,适用于在不同系统间传递异构数据。服务质量(QoS)参数。安全凭证。配置参数。
2025-05-14 10:43:36
400
原创 共享内存实现
本文参考:https://zhuanlan.zhihu.com/p/331573872使用ftok设置share memory ID数据读取端代码 shm2.c编译运行结果写端读端本示例使用IPC_PRIVATE参数创建共享内存create_shm.cwrite_shm.cread_shm.c运行create_shm./write_shm 393263./read_shm 393263
2025-05-07 17:17:30
368
原创 两个功能安全等级不同的SWC为什么可以通过RTE进行数据传输
对于从低安全等级 SWC 传输到高安全等级 SWC 的数据,RTE 会依据高安全等级 SWC 的要求对数据进行检查,确保数据的完整性和安全性。例如,RTE 可采用内存隔离技术,保证不同安全等级的 SWC 拥有各自独立的内存空间,防止一个 SWC 的数据意外覆盖另一个 SWC 的数据。RTE 为 SWC 提供了标准化的接口,不同安全等级的 SWC 只需遵循这些接口规范进行数据传输,而无需关心对方的安全等级。这样,即使 SWC 的安全等级不同,也能通过统一的接口进行数据交互。
2025-05-07 14:12:33
415
原创 SOMEIP需要在找到service之后发送stopfindservice 吗
在 SOME/IP(Scalable service-Oriented MiddlewarE over IP)中,找到服务之后是否发送 Stop Find Service 消息并不是强制要求,但在很多实际场景下,这样做是一个很好的实践。
2025-05-06 15:43:30
201
原创 DTLS介绍
DTLS(Datagram Transport Layer Security)即数据报传输层安全协议,它是基于传输层安全协议(TLS)发展而来的,旨在为使用数据报协议(如 UDP)的通信提供类似 TLS 为 TCP 通信所提供的安全保障。
2025-04-29 09:51:23
1034
原创 通信服务发现方式的介绍及比较
静态服务发现是指服务的位置(如 IP 地址、端口号等)和相关元数据(如服务名称、版本等)是预先配置好的,系统中的客户端通过读取这些预定义的配置信息来找到所需的服务。与动态服务发现不同,静态服务发现不会在运行时自动更新服务的位置信息。
2025-04-22 16:17:45
1572
原创 vSOMEIP系列 - 5:request - response 以及 subscribe -notify 模型demo双机跨域实现
本文将讲解如何配置实现vSOMEIP的基于method的请求 - 订阅的双机跨域demo实现以及基于event的订阅-通知的双机跨域demo实现。
2025-04-16 10:40:28
525
原创 vSOMEIP系列 - 4:request - response 以及 subscribe -notify 模型demo单机实现
本文将进行vSOMEIP的请求-响应以及订阅-发布模型的demo实现。
2025-04-15 18:00:56
313
原创 vSOMEIP部署,单机实现以及双击实现demo - 1
在网上搜了很多资料,发现没有vSOMEIP系列将单机实现以及双机(跨域)实现一次性进行demo实现,本专栏将进行一次系统的实现。
2025-04-14 14:38:30
306
原创 刷leetcode之删除链表节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: ...
2019-06-02 22:02:53
174
原创 刷leetcode之删除链表中指定值的节点
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5但要注意两个值连在一起的情况:实例:输入:1->1, val = 1输出:[]如果有两个连续的节点值要删除,注意在删除这个节点后,节点不要后移,否则会少删除后一个相同值的节...
2019-06-02 21:32:59
341
原创 循环单链表
这里对单链表的循环模式写了一些代码,只是单纯从原理上做出了说明,并没有加入相关的容错单链表的循环模式和非循环的单链表有什么很大的区别,只是在初始时要把head->next = NULL 变成 head->next = head即可,另外在判断链表结束时的条件也要相应的从p->next == NULL 改成 p->next = head.下面是代码//// main...
2019-05-25 22:01:26
411
原创 刷leetcode之删除链表的倒数第n个节点
首先采用了最一般的办法,就是先统计出该链表里面有多少个element,然后再执行一次遍历,遍历到倒数第n个节点的前一个节点,再使用p->next = p->next->next就可以删除倒数第n个节点但不是one pass实现的,代码如下:/** * Definition for singly-linked list. * struct ListNode { * ...
2019-05-23 21:22:58
174
原创 刷leetcode之翻转单链表
本文参考下面资料:https://www.cnblogs.com/byrhuangqiang/p/4311336.html采用了其中第一种方法代码如下:``/**Definition for singly-linked list.struct ListNode {int val;struct ListNode *next;};*/struct ListNod...
2019-05-20 23:04:18
212
原创 刷leetcode笔记之链表相交处查找
刷leetcode笔记之链表相交处查找参考:https://blog.youkuaiyun.com/fengxinlinux/article/details/78885764时间复杂度 O(n)使用的方法是:先判断两个链表的最后一个node是不是在同一地址,顺便计算出两个链表的长度找到两个链表的长度差diff,将更长的那个链表的头指针偏移diff个node两个链表同时偏移,判断其node的指针...
2019-05-19 18:49:16
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅