前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[081]AI教你快速入门someip

[081]AI教你快速入门someip

作者头像
王小二
发布于 2023-05-23 02:46:15
发布于 2023-05-23 02:46:15
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

一、问:someip是什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种用于汽车电子系统和其他嵌入式系统的网络通信协议,它的设计旨在为分布式系统中的服务发现、通信和管理提供标准化的解决方案。SOME/IP 协议可以用于不同的物理层网络,包括以太网、CAN、FlexRay等,其目标是在这些网络之间提供互操作性。

SOME/IP 协议采用了面向服务的架构,通过将系统划分为服务提供者和服务使用者两个角色,实现了服务的发布、发现、绑定和调用。协议还提供了安全性和可靠性保障的机制,支持多种数据类型的传输,具有可扩展性和灵活性等优点。

在汽车领域,SOME/IP 协议已经被广泛应用于车辆网络和汽车电子系统的通信中,它使得不同的电子控制单元(ECUs)能够相互通信,从而实现了更加智能和高效的汽车系统。

二、问:比较一下Binder和SomeIP的相同点和不同点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Binder和SomeIP都是用于实现进程间通信的协议,它们有以下相同点和不同点:

相同点:

1. 都是用于实现进程间通信的协议。

2. 都提供了类似于RPC(远程过程调用)的机制,使得进程可以通过调用远程接口来实现数据的交换和处理。

3. 都支持在底层使用TCP/IP协议栈来实现数据传输。

4. 都具有可扩展性和灵活性,可以根据需要进行定制和配置。

不同点:

1. Binder主要用于Android系统中的进程间通信,而SomeIP则可以应用于各种不同的系统和场景中。

2. Binder使用了基于共享内存的进程间通信机制,而SomeIP则使用了基于网络协议栈的通信机制。

3. Binder提供了更强的安全机制,可以对数据进行加密和签名,以保证通信的安全性。SomeIP的安全机制相对较弱,需要用户自行实现安全措施。

4. Binder提供了更高的性能和更低的延迟,因为它是专门为Android系统设计的。SomeIP则更注重可扩展性和通用性,可以应用于不同的系统和场景中。

三、问:SomeIP有没有类似Binder AIDL的机制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SomeIP没有像Binder AIDL(Android Interface Definition Language)那样的机制,但是它提供了类似于RPC(远程过程调用)的机制,使得进程可以通过调用远程接口来实现数据的交换和处理。具体来说,SomeIP定义了消息格式和编解码方式,可以通过指定服务ID和方法ID来调用远程服务。

SomeIP使用了基于网络协议栈的通信机制,它通过传输层协议(如TCPUDPIP)来实现进程间的通信,而不像Binder使用共享内存等机制来实现。SomeIP的通信机制相对于Binder更加通用和灵活,可以在不同平台和系统之间使用。

虽然SomeIP没有AIDL这样的接口描述语言,但是可以使用IDL(Interface Definition Language)来定义接口和方法。IDL是一种标准的接口描述语言,可以定义接口、方法、参数、返回值和异常等信息。使用IDL可以在不同的语言之间共享接口定义,以便实现跨平台和跨语言的通信。

四、问:用vsomeip写一个简单的demo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AI的回答有点问题,我决定运行vsomeip的helloworld

五、vsomeip的hello world

5.1 下载代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/COVESA/vsomeip.git

5.2 编译代码并安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir build
cd build
cmake ..
make
sudo make install

5.3 编译hello world

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kobe@41001005-26-0:~/study/vsomeip/examples/hello_world/build$ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kobe/study/vsomeip/examples/hello_world/build
kobe@41001005-26-0:~/study/vsomeip/examples/hello_world/build$ make
[ 50%] Built target hello_world_client
[100%] Built target hello_world_service

5.4 运行hello world

修改examples/hello_world/helloworld-local.json中IP为本机的IP,其实不改也没事,如果要两个设备之间运行就得改了。

5.4.1 server端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
VSOMEIP_CONFIGURATION=../helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_service \
./hello_world_service

运行的结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kobe@41001005-26-0:~/study/vsomeip/examples/hello_world/build$ VSOMEIP_CONFIGURATION=../helloworld-local.json \
> VSOMEIP_APPLICATION_NAME=hello_world_service \
/hello_> ./hello_world_service
2023-05-11 10:30:07.931895 [info] Using configuration file: "../helloworld-local.json".
2023-05-11 10:30:07.932418 [info] Parsed vsomeip configuration in 0ms
2023-05-11 10:30:07.932491 [info] Configuration module loaded.
2023-05-11 10:30:07.932557 [info] Initializing vsomeip application "hello_world_service".
2023-05-11 10:30:07.932930 [info] Instantiating routing manager [Host].
2023-05-11 10:30:07.933651 [info] create_routing_root: Routing root @ /tmp/vsomeip-0
2023-05-11 10:30:07.934118 [info] Application(hello_world_service, 4444) is initialized (11, 100).
2023-05-11 10:30:07.934376 [info] Starting vsomeip application "hello_world_service" (4444) using 2 threads I/O nice 255
2023-05-11 10:30:07.935706 [info] Client [4444] routes unicast:172.31.68.132, netmask:255.255.255.0
2023-05-11 10:30:07.935720 [info] main dispatch thread id from application: 4444 (hello_world_service) is: 7f2651916700 TID: 480
2023-05-11 10:30:07.936521 [info] shutdown thread id from application: 4444 (hello_world_service) is: 7f2651115700 TID: 481
2023-05-11 10:30:07.937274 [info] Watchdog is disabled!
2023-05-11 10:30:07.938821 [info] OFFER(4444): [1111.2222:0.0] (true)
2023-05-11 10:30:07.939884 [info] io thread id from application: 4444 (hello_world_service) is: 7f2654b7d740 TID: 477
2023-05-11 10:30:07.940103 [info] io thread id from application: 4444 (hello_world_service) is: 7f264bfff700 TID: 483
2023-05-11 10:30:07.939991 [info] create_local_server: Listening @ /tmp/vsomeip-4444
2023-05-11 10:30:07.941220 [info] Network interface "eth0" state changed: up
2023-05-11 10:30:07.941826 [info] Service Discovery disabled. Using static routing information.
2023-05-11 10:30:07.942377 [info] udp_server_endpoint_impl: SO_RCVBUF is: 212992 (1703936) local port:30509
2023-05-11 10:30:07.942499 [info] SOME/IP routing ready.
2023-05-11 10:30:07.940854 [info] vSomeIP 3.3.0 | (default)
2023-05-11 10:30:07.942903 [warning] Route "default route (0.0.0.0/0) if: eth0 gw: 172.31.64.1" state changed: up
2023-05-11 10:30:17.943506 [info] vSomeIP 3.3.0 | (default)
2023-05-11 10:30:27.944112 [info] vSomeIP 3.3.0 | (default)
2023-05-11 10:30:37.945107 [info] vSomeIP 3.3.0 | (default)
2023-05-11 10:30:41.325295 [info] Application/Client 5555 is registering.
2023-05-11 10:30:41.327004 [info] Client [4444] is connecting to [5555] at /tmp/vsomeip-5555
2023-05-11 10:30:41.331377 [info] REGISTERED_ACK(5555)
2023-05-11 10:30:41.434295 [info] REQUEST(5555): [1111.2222:255.4294967295]
2023-05-11 10:30:41.442904 [info] RELEASE(5555): [1111.2222]
2023-05-11 10:30:41.443599 [info] Application/Client 5555 is deregistering.
2023-05-11 10:30:41.456640 [info] receive_cbk local_uds_client_endpoint: connection_reset/EOF/bad_descriptor
2023-05-11 10:30:41.546013 [info] Client [4444] is closing connection to [5555]
2023-05-11 10:30:46.442785 [info] STOP OFFER(4444): [1111.2222:0.0] (true)
2023-05-11 10:30:46.443757 [info] Stopping vsomeip application "hello_world_service" (4444).

5.4.2 client端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
VSOMEIP_CONFIGURATION=../helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_client \
./hello_world_client

运行的结果,可以看到关键的Sending: WorldReceived: Hello World,证明两者就通了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kobe@41001005-26-0:~/study/vsomeip/examples/hello_world/build$ VSOMEIP_CONFIGURATION=../helloworld-local.json \
PPLI> VSOMEIP_APPLICATION_NAME=hello_world_client \
hello_world_cl> ./hello_world_client
2023-05-11 10:30:41.316299 [info] Using configuration file: "../helloworld-local.json".
2023-05-11 10:30:41.316950 [info] Parsed vsomeip configuration in 0ms
2023-05-11 10:30:41.317019 [info] Configuration module loaded.
2023-05-11 10:30:41.317239 [info] Initializing vsomeip application "hello_world_client".
2023-05-11 10:30:41.317442 [info] Instantiating routing manager [Proxy].
2023-05-11 10:30:41.317602 [info] Client [5555] is connecting to [0] at /tmp/vsomeip-0
2023-05-11 10:30:41.317810 [info] Application(hello_world_client, 5555) is initialized (11, 100).
2023-05-11 10:30:41.318359 [info] Starting vsomeip application "hello_world_client" (5555) using 2 threads I/O nice 255
2023-05-11 10:30:41.319383 [info] main dispatch thread id from application: 5555 (hello_world_client) is: 7fda3262b700 TID: 485
2023-05-11 10:30:41.319900 [info] shutdown thread id from application: 5555 (hello_world_client) is: 7fda31e2a700 TID: 486
2023-05-11 10:30:41.320597 [info] io thread id from application: 5555 (hello_world_client) is: 7fda34890740 TID: 484
2023-05-11 10:30:41.320686 [info] io thread id from application: 5555 (hello_world_client) is: 7fda31629700 TID: 487
2023-05-11 10:30:41.323761 [info] create_local_server: Listening @ /tmp/vsomeip-5555
2023-05-11 10:30:41.324015 [info] Client 5555 (hello_world_client) successfully connected to routing  ~> registering..
2023-05-11 10:30:41.324078 [info] Registering to routing manager @ vsomeip-0
2023-05-11 10:30:41.330196 [info] Application/Client 5555 (hello_world_client) is registered.
2023-05-11 10:30:41.435897 [info] ON_AVAILABLE(5555): [1111.2222:0.0]
Sending: World
2023-05-11 10:30:41.437515 [info] Client [5555] is connecting to [4444] at /tmp/vsomeip-4444
Received: Hello World
2023-05-11 10:30:41.442398 [info] Stopping vsomeip application "hello_world_client" (5555).
2023-05-11 10:30:41.444793 [info] Application/Client 5555 (hello_world_client) is deregistered.
2023-05-11 10:30:41.446893 [info] Client [5555] is closing connection to [4444]

六、总结

首先someip是一个基于IP的跨进程跨设备的通信协议,协议说白了只是规范,但是并没有实现,vsomeip就是对这个协议的C++实现,并提供API,不同的实现库的API可以不同,但是他们却可以通信。

Binder中是通过AIDL生成使用Binder API的模板代码,someip的很多实现库也提供了类似的功能,方便开发者可以专注于接口的设计,忽略一下不同someip实现库的使用差异。

尾巴

最后再问AI一个问题,如何学习someip?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
学习 SOME/IP 需要掌握以下几个方面:

1. 网络协议的基础知识:了解计算机网络的基本概念和通信协议的基础知识,包括 OSI 参考模型、TCP/IP 协议栈等。

2. SOME/IP 协议的规范:深入学习 SOME/IP 协议的消息格式、消息传输、服务发现等方面的规范,可以通过 AUTOSAR 官网、Vector 官网等网站查找相关资料。

3. 编程语言和工具的应用:使用一些流行的编程语言和工具,如 C/C++、Python、Wireshark 等,实现 SOME/IP 协议的通信和调试。

以下是一些学习 SOME/IP 的建议:

1. 学习网络协议的基础知识:在学习 SOME/IP 协议之前,需要了解计算机网络的基础知识,理解 OSI 参考模型和 TCP/IP 协议栈等。

2. 深入了解 SOME/IP 协议的规范:通过阅读 SOME/IP 协议的规范文档,可以深入了解协议的各个方面,包括消息格式、消息传输、服务发现等。

3. 练习使用工具和编程语言:可以使用 Wireshark 等工具进行 SOME/IP 协议的抓包和分析,使用 C/C++、Python 等编程语言实现 SOME/IP 协议的通信和调试。

4. 参与相关的开源项目:参与一些开源项目,如 Eclipse Iceoryx,可以深入了解 SOME/IP 协议的实现和应用。

总之,学习 SOME/IP 需要结合理论和实践,深入了解协议规范,同时掌握一些编程语言和工具的使用。

参考文献 https://github.com/COVESA/vsomeip/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
常见数据库简答题_数据库基础知识试题
第一章 1.简述数据、数据库、数据库管理系统、数据库系统的概念(期末题库、课后题、大纲要求、试题三)
全栈程序员站长
2022/10/02
2.6K0
数据库系统概论考试心得+复习指南
试后感悟:老师给的大纲完全就是按照试卷的顺序来的,比如触发器是第一题,数据库恢复是第二题。
wsuo
2020/07/31
9070
数据库系统概论考试心得+复习指南
数据库复习题 考试题库(填空题)
1.数据库系统一般由(数据库)、应用系统、(数据库管理系统)、(数据库管理员)和用户构成。
Meng小羽
2019/12/23
6.4K0
数据库系统:第七章 数据库设计
三分技术,七分管理,十二分基础数据。十二分基础数据强调了数据的收集、入库、更新维护是数据库建设中的重要环节。
Here_SDUT
2022/08/09
2.1K0
数据库系统:第七章 数据库设计
数据库原理复习笔记(实用)
这是大三上学期复习数据库时自己整理的,有些地方可能有误,大家可以参考参考,欢迎讨论哦~
全栈程序员站长
2022/11/03
1.3K0
[每天五分钟,备战架构师-8]数据库系统
对于IT从业人员,一定听到过数据库的概念。顾名思义,数据库系统就是管理数据存储的软件。本篇就软件等级考试相关的数据库系统知识从整体上进行总结,方便大家复习。
大江小浪
2018/07/24
1.7K0
[每天五分钟,备战架构师-8]数据库系统
数据库全册选择题
DBS包括DB和DBMS DBMS包括DB和DBS DB包括DBS和DBMS DBS就是DB,也就是DBMS 正确答案: A
Twcat_tree
2022/11/30
1.2K0
数据库系统与数据挖掘的区别_数据挖掘与大数据的关系
本章属于基础知识,主要是对一些概念的理解和记忆。没有难点,相对的重点在于ER模型的设计和关系模型的掌握。
全栈程序员站长
2022/09/20
1.3K0
数据库原理期末复习总结
本文内容为我大三上学期数据库原理期末复习时总结的知识点,文章分为三部分:第一部分是手写的知识点总结,第二部分是电子版的简答题总结,第三部分是部分SQL练习题及其解析!
Cyril-KI
2022/09/19
7690
数据库原理期末复习总结
数据库系统概况(数据库学习)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
营琪
2019/11/05
1K0
数据库系统概况(数据库学习)
数据库复习资料整理
**数据(Data)**是描述事物的符号记录,是信息的符号表示或载体,也是数据库中存储的基本对象,数据描述现实世界中各种具体事物或抽象概念的、可存储并具有明确意义的符号记录。
十二惊惶
2024/02/28
3230
数据库系统第一章知识点总结
数据:data 数据库:DataBase,简称DB 数据库管理系统:DataBase Management System,简称DBMS 数据库系统:DataBase System,简称DBS
炒香菇的书呆子
2020/08/13
6100
数据库系统第一章知识点总结
数据库系统概述——第一章 绪论(知识点复习+练习题)
本章主要考点:数据、数据库、■数据库管理系统的概念、概念模型、■ER图、三种数据模型、数据库的三级模式结构
命运之光
2024/03/20
3590
数据库系统概述——第一章 绪论(知识点复习+练习题)
[每天五分钟,备战架构师-9]数据库系统
日常数据库使用过程中,离不开SQL语言。Structured Query Language由Boyce和Chamberlin在1974年提出,1975-1979年BIM San Jose Research Lab的关系型数据库管理系统原型 System R实现了这种语言。SQL-86是第一个SQL标准,后续的有SQL-89、SQL-92、SQL-99。现在大部分DBMS都支持SQL,甚至一些Key-Value型的数据库都支持SQL方式进行查询。
大江小浪
2018/07/24
1.7K0
[每天五分钟,备战架构师-9]数据库系统
【数据库】数据库系统概论(一)— 概念
数据库中的数据按一定的数据模型组织、描述和储存。具有较小冗余度、较高数据独立性、易扩展性,并可为各种用户共享。
且陶陶
2023/10/16
4530
【数据库】数据库系统概论(一)— 概念
数据库复习题 考试题库(简答题)
基本表是实际存储在数据库中的二维表,它是本身独立存在的表,在SQL中一个关系就对应一个表。
Meng小羽
2019/12/23
3.1K0
考研-数据库_数据库系统考研看什么书
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
6250
快速学完数据库管理
本来想写文章来复习的,后面发现越写越多,而且感觉本末倒置了,查询语句写的最少,其他倒是写的很详细,数据库知识真的太细太碎了,整理起来难度真的挺大的,如果是数据库小白,这篇文章肯定很有用,它没有过多的实战,带你了解数据库的基本框架和能够完成的任务,如果是数据库学过的话,那这篇文章可能对你而言只有前面数据库概述和设计数据库有用,数据库sql语句这部分非常的精简,几乎只是了解个框架,第一次写长文欢迎评论区大佬们的指正。
wresource
2022/07/31
2K0
快速学完数据库管理
【数据库】入门基础概念 第三周作业 记录 +答案+个人分析
1、外模式 对应数据库的升级、外模式包括(子模式 用户模式) 用来描述用户看到或者使用那部分的数据的逻辑结构,用户根据外模式用户数据操作语句或者程序去操作数据库中的数据,外模式的主要特点用来描述组成用户视图各个记录的组成、相互联系、数据的完整性和安全性、数据项的特征等。 2、概念模式 对应数据库的概念模式,概念模式(概念、逻辑模式)用以描述整个数据库中的逻辑结构、用来描叙现实生活中的实体,以及它们之间的关系、从而定义记录数据项的完整性约束条件以及记录之间的联系是数据项的框架 概念模式是数据库中全体数据的逻辑结构和特征的描叙是所有用户数据的公共数据视图。 3、内模式 内模式对应物理级数据库,内模式是所有模式中的最低层的表示,不同于物理层,假设外存是一个无限性的地址空间,内模式是存储记录的类型,存储域以及表示以及存储记录的物理顺序,指示元索引,和存储路径的等数据的存储组织从而形成一个完整的系统。
韩旭051
2020/06/23
1.5K0
数据库概论
数据库的相关概念 数据独立性:指应用程序与数据库的数据结构之间相互独立。 数据库(DB):DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。 数据库管理系统(DBMS):是位于用户和操作系统之间的一层数据库管理软件,它为用户或应用程序提供访问DB的方法。 数据库系统(DBS):是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。 数据库技术:是研究数据库的结构、存储、设计、管理和使用的一门软件学科。 数据描述 数据描述历
SuperHeroes
2018/05/30
9130
相关推荐
常见数据库简答题_数据库基础知识试题
更多 >
目录
  • 一、问:someip是什么
  • 二、问:比较一下Binder和SomeIP的相同点和不同点
  • 三、问:SomeIP有没有类似Binder AIDL的机制
  • 四、问:用vsomeip写一个简单的demo
  • 五、vsomeip的hello world
    • 5.1 下载代码
    • 5.2 编译代码并安装
    • 5.3 编译hello world
    • 5.4 运行hello world
    • 5.4.1 server端
    • 5.4.2 client端
  • 六、总结
  • 尾巴
    • 最后再问AI一个问题,如何学习someip?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档