自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(219)
  • 资源 (6)
  • 收藏
  • 关注

原创 RTPS代码阅读记录

A: void PDP::set_initial_announcement_interval()函数中设置。

2024-08-16 16:18:15 331

转载 一次解决Ubuntu拓展屏出现白屏的问题

我的笔记本是安装的22.04版本的Ubuntu系统,今天上午重启系统的时候可能做了自动更新,然后重启完成后,笔记本外接的拓展屏突然就大片变白,只能看到最上面的工具栏。将屏幕和其他PC机连接,确认屏幕显示良好,无硬件故障,因此,怀疑是系统更新修改了什么配置导致的问题。即修改gdm3/custom.conf,将Wayland那行的注释放开就可以了。

2024-08-16 11:09:01 334

原创 linux创建网卡,删除网卡以及添加vlan

/ vlanprio 优先级(0~7)针对虚拟的 net interface,这个优先级会出现在vlan header中。// vlan 70 标识将网卡eth070 加入VLAN7。// vlanif 指定vlan7在那个物理网卡上通信。

2024-08-14 19:55:44 313

原创 由于Offer报文引起的事件订阅失败

最后排查为什么S32G上someip服务端发出来的offer报文中缺少了tcp:198.18.2.252:50001的服务选项,发现之前在S32G上netstat看到占用了50001端口进行tcp监听的不是someip进程,而是另一个进程,由于vsomeip的endpoint中没有设置端口复用的属性,因此,如果服务依赖的端口无法绑定上去,对应的连接的地址就不会出现在Offer报文里面。然后Android端上层应用反馈说收到的GNSS数据有问题,缺少卫星状态,导致上层解析时认为数据非法。

2024-08-13 16:00:18 346

原创 DDS-RTPS 常见子消息

如果心跳包中的存在有Reader没有读取到的Change,则需要将这些Change的序号收集起来放到ACKNACK消息中,其中要告知对端Writer我的Reader缺少了这些Change,这些Change的序号从A开始,然后有B个Change。心跳包的作用是Writer将自己History中的Change的情况告知匹配的对端Reader,然后接收Reader的ACKNACK消息,来判断是否需要发送Reader丢失没有收到的Change。

2024-08-12 16:19:59 534

原创 RTPS去除SharedMemoryDescriptor的方法

为了验证同一个主机内,FastDDS的发布端和订阅端是否通过SharedMemory通信的,因此通过gdb加在dds订阅端程序,在SubListener::on_data_available上添加断点,然后启动发布端程序,触发断点,打印调用堆栈。然后,在不同设备中分别运行订阅端和发布端然后用tcpdump抓包,就可以抓取到正常topic上的业务数据通信,因此怀疑是在同一个主机内的时候,发布端和订阅端是通过SharedMemory的方式进行通信的。

2024-08-09 18:40:27 345

原创 Android车机STR启动后someip出现的tcp握手失败

接着Android从STR回复,之前的someip服务端进行继续运行(进程号都不变,还是STR之前的进程), QNX侧重启后的someip客户端进程收到了Android侧发送的offer报文,希望获取该service,并且建立TCP连接,因此绑定了QNX的30490端口来连接Android侧的someip服务端socket,因为Android侧还为之前QNX端的TCP socket(30490端口)还是有效的,因此对这次新的TCP握手请求没有相应(因为SYNC包中的远端端口还是30490)。

2024-08-07 19:42:07 929

原创 Android HandlerThread泄漏FD问题

当使用第二种方式获取Looper时,因为Looper是在用户创建的LooperThread中,其中是包含了EentFd的,如果该LooperThread没有正确的结束并且释放资源,则会造成Fd泄漏。平时我们在Android中使用Handler,一般都是需要将Handler绑定到某个Looper上。

2024-08-06 13:32:17 286

原创 JAVA JNI开发流程概述

2. 通过JNIEnv的GetXXXArrayElements(isCopy参数要设置为JNI_False,即复用模式,会修改原JAVA数组的内容)接口将刚才创建的JAVA数组对象转换成C/C++的数组(两者实际指向的是同一个对象)JNI中的引用分为全部引用以及局部引用,这个引用就是java中的引用类型,引用了某个具体的java对象,释放引用类似与java语言中的=null操作。JNIEnv: 代表Java运行环境(上下文),一般是对应了Java的线程上下文,JNIEnv对象不能跨线程共享。

2024-07-29 18:16:09 523

转载 JAVA class文件结构

今天在查看一个关于JNI资料的博客时看到的,感觉非常清晰简介,因此记录一下。

2024-07-29 16:42:45 26

翻译 14.1. Overview of Dynamic Types

​ 本文主要描述了FastDDS中动态数据类型的相关内容,在文章的最后会有一个简短的例子来展示如何使用动态数据类型。

2024-07-13 15:44:18 40

转载 Android.mk中添加对AndroidX的依赖

背景大致是这样的,需要将AndroidStudio的工程移到Android源码中进行编译,使用的Android.mk。我一般都是直接全部加进来。

2024-06-28 21:05:53 99

原创 RTPS Reader接收数据流程

该文的目的是为了整体大致的梳理RTPS协议层从创建Reader到Reader收到数据的大致流程以及涉及到的相关类的关系。同时,在日常使用RTPS Reader时,总是对部分概念存在疑问,在这里也想提出这些问题并且从代码中找到答案。

2024-06-27 15:34:46 656

原创 CMake编译proto的方法(custom_target和custom_command)

之前一直使用protobuf_generate_cpp来编译proto文件,但这个有一个弊端,就是无法控制生成的.cc和.h文件的路径,这个会影响到依赖改proto文件的其他源代码文件的编译,例如a.cpp依赖message.proto,其头文件包含是这样写的。3.通过custom_command手动调用protoc来编译proto,通过--cpp_out, -I以及proto文件控制生成的.pb.h, .pb.cc文件的路径。2. custome_target依赖custom_command中的输出。

2024-06-18 20:23:18 427

原创 Android12 将成果物生成到system和vendor分区

最近工作中遇到这么个事情,之前项目中留存的动态库是生成在vendor分区中,现在需要在system_ext分区中也生成,以便Android的系统进程也能访问这个动态库。因此,需要修改对应动态库项目的Android.bp。

2024-05-29 18:23:34 711 1

原创 Android HAL Service开发总结

3.为了让HWServiceManager知晓有我们创建的这么一个hwservice(vendor.device.xxx_hwfunservice-1.1),需要将我们HWService的信息注册到供应商清单文件中(manifests.xml)那么我们的HWSerice信息也需要添加到 system FCM矩阵中(还有product FCM,如果product中的app用到了我们的HWService,那么Product的FCM文件中需要添加我们的HWService)

2024-05-23 17:47:02 626

原创 Gradle设置引用的JAR包不编译到APK中

为了缩减编译出来的APK的大小,将其引用的JAR包通过Android.bp编译到最终的img中,然后希望APK在编译的时候,对于这个JAR包的操作是只参与编译,不编译到最终的APK中(类似于动态链接)这需要修改项目的build.gradle,在dependencies中添加compileOnly files("引用的JAR包“)

2024-05-10 20:03:41 171 1

原创 浮点数运算

浮点数的运算有三个步骤,这里从http://rangercyh.blog.51cto.com/1444712/1313162转载这三个步骤1、对阶(就是使两个浮点数的两个指数部分相同,规定小数向大数对齐,因为如果是大数向小数对齐,那么就要左移大数的尾数部分,就有可能会丢失大数的最高有效位;小数向大数对齐是右移小数的尾数部分,而丢失小数的那点精度对结果来说是无关紧要的)

2024-05-10 11:26:10 184

原创 FastDDS编译安装说明

1.2 下载asio源码(git clone https://github.com/chriskohlhoff/asio.git)1.3 找到autogen.sh所在的目录。4.下载编译安装FastDDS。2.安装tinyxml。3.安装libssl。

2024-05-06 10:18:50 575

原创 CMakeLists.txt总结

注意,属性等设置应该放在target的add_library, add_execute的下面,否则cmake的时候会提示set_target_properties的target找不到的情况。其中,RUNTIME,LIBRARY,ARCHIVE代表的是目标文件的类型,分别代表可执行程序,动态库和静态库,此外还有FILE类型代表文件,我个人一般使用FILE类型来安装头文件。用于设置target的属性,例如target目标文件输出的目录位置,target目标文件的版本号,target目标文件的名称等。

2024-05-03 20:02:47 778

转载 GIT的working directory,stage area和repository

转载:Part 1: What is the Staging Area?🚀🌟。

2024-04-30 22:13:32 55

原创 Android12中JAVA项目中proto文件的编译方式

最近的工作有涉及到将原来Android9平台下的java工程防到Android12中编译,结果发现在Android9中可以编译的工程,没有修改Android.bp,在Android12中编译失败了,原因是java文件中以来项目中的proto文件生成的java类,而这些proto文件没有编译出来。在Android12中对于proto文件的编译,会先将其设置为一个文件组,然后在编译的地方饮用这个文件组。而最重要的改动是增加的。部分的规则,设置了proto头文件饮用的路径等。

2024-04-19 09:38:54 429

原创 RTPS协议概述

RTPS协议主要由四个部分组成:​ 发现模块是定义了RTPS的参与者(Participant)获取其他RTPS的参与者(Participant),端点(Endpoint)的协议,使得每个参与者(Participant)能够了解到整个网络中其他参与者的存在并且相互匹配。​ metatraffic通信使得RTPS的参与者(Participant)可以获取到所有Participant,Reader以及Writer的快照并且让本地Reader和远端Writer以及本地Writer和远端Reader之间通信。​ RT

2024-04-06 05:36:08 1344

原创 酷壳网居然要科学访问

结果发现需要科学++上网++才能访问了,尼玛太离谱了。

2024-04-05 08:15:27 111

原创 Ubuntu系统切换多版本JDK

2.通过update-alternatives命令sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java 1000。update-alternatives: 使用 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java 来在手动模式中提供 /usr/bin/java (java)

2024-01-29 10:13:25 810

原创 SOMEIP学习总结

​ 其中,SOMEIP-SD的消息都是通过UDP发送的。

2024-01-14 12:17:23 1148

转载 c++ RAII

C++的RAII是C++的发明者提出的一个使用C++面向对象特性管理关键的操作系统资源的编程方式,其核心想法就是通过类封装管理操作系统资源,并且利用了C++类的栈对象出栈的时候会调用析构函数的特性,在析构函数中释放系统资源来避免资源泄漏。

2023-11-30 14:48:32 105

原创 c++静态初始化map容器

前提:使用c++ 11及以上版本。

2023-10-11 21:04:30 337

原创 对日项目工作总结

5.一个公司分为很多机能组,例如media,hal,driver,hardware,framework,app这些,每个功能点的实现都需要一个或者多个机能组的参与,共同实现,式样会将式样书分发给不同的机能组做要件分析,就是分析这些功能点是否我机能组该当,是否主担当,或者是辅助,并且确认责务,就是这个功能点我这个机能组需要做什么,其他的机能组是否需要提供帮助,提供什么帮助,那么都需要在要件分析的文档中写出来,写清楚,并且展开给需要辅助我组实现该功能点的其他机能组让他们知晓。大致就是上面这套流程。

2023-09-29 12:15:23 241

原创 首次使用ninja的体验

首先编写CMakeLists.txt,然后cmake -G Ninja生成build.ninja,最后ninja all对该build文件进行编译,生成二进制成果物。首先总结说自己的理解,就是NINJA是一个和MAKE同一级别的编译工具,在CMAKE/GRADLE等工具之下工作。cmake目前可以生成makefile,也可以生成ninja文件(CMAKE选项中增加了-G Ninja)当然也可以直接编写build.ninja文件然后ninja all来编译工程。ninja:源码安装。

2023-08-14 18:02:46 271

原创 TypeScript初学记录【1】

let obj = { nm : "lcb", // 解构对象。let arr1 = [1, 2, 3] // 展开。let input = [1, 2] // 解构数组。主要涉及到基本类型,变量作用域。

2023-03-13 16:46:35 229

原创 JAVA使用socket outputstream中碰到的问题

JAVA socket的OutputStream 调用write发送int型数据碰到的问题

2023-02-24 17:31:30 905

原创 TCP网络编程整理总结

1.每一个TCP套机字中都存在I/O缓冲,该缓冲在创建套接字的时候自动生产2.即使关闭套接字,I/O缓冲中输出缓冲的遗留的数据也会继续传输3.关闭套接字会导致I/O缓冲中输入缓冲中遗留的数据丢失4.tcp数据包header中的seq表示本次发送出去的数据包的序列号,而ack则是在最后一次收到的对方的TCP包中的seq上+该TCP包数据的字节数 + 1 即: A发送的数据包(SEQ:1000, ACK:NULL, datalen:82) B回复数据包(SEQ:2000, ACK:...

2023-02-24 17:17:53 584

转载 c++ backtrace

今天在看apollo代码时,看到了C++中打印backtrace的方法:// 打印堆栈信息void ShowStack() { int i; void *buffer[STACK_BUF_LEN]; int n = backtrace(buffer, STACK_BUF_LEN); char **symbols = backtrace_symbols(buffer, n); AINFO << "=============call stack begin:=====

2023-02-24 17:15:41 307

原创 [C++][模板]char*作为模板实参时的一个问题

C++模板使用字符串作为类型参数时的注意点

2022-12-22 17:27:55 683

原创 linux C++注册程序退出信号处理的代码

linux C++注册程序退出信号处理的代码

2022-12-01 09:40:47 700

转载 OPENGL知识点整理(一)

概述内容为阅读相关博主文档后整理,因此,相当部分的内容直接引用自如下链接:https://www.jianshu.com/p/5da5a17ad5cbhttps://blog.csdn.net/u012861978/article/details/97833643在opengl中,根据处理的先后次序来分,主要有如下几个坐标系:就是以要被渲染物体的重心作为坐标体系,可以标识出该物体的各个定点的坐标(个人理解)不同的物体都有其自己的物体坐标系惯性坐标系原点域物体的物理坐标系相同,但是其x,y,z轴与世界

2022-11-16 22:55:56 403

原创 C++ tuple模板类使用体验

C++ tuple模板类使用体验make_tuplegettietuple类可以说是一种特殊的pair类型,其内部可以最大包含10个左右不同类型的成员(pair只能包含两个)使用tuple需要包含头文件对应std::make_pair,tuple也有对应的std::make_tuple模板函数用于创建特定类型的tuple对象tuple主要有如下常用的操作make_tuplemake_tuple用于创建一个指定类型的tuple对象,例如std::make_tuple<int, float,

2022-03-27 12:53:06 5526

原创 建造者模式

借用看到的一篇文章中的话来总结就是:当一个类的构造函数超过4个的时候,就应当考虑使用建造者模式来创建该类的对象。在java中,有一种简单的构造者模式实现,就是将类的构造函数全部放到其静态内部builder类中,而该类的构造函数以builder 类成员来构造。例如,通过builder类,用户可以选择构造的电脑的内存大小,硬盘大小,但是CPU和主板是不可更改的。那么将设置了内存或者内存和硬盘大小的builder对象给到computer类既可构造处对应配置的computer对象。个人感觉,bu

2022-02-02 10:57:40 517

原创 工厂模式总结

工厂模式主要有如下三种:1.简单工厂2.工厂方法模式3.抽象工厂简单工厂:简单工厂有一个工厂类,负责创建产品,而产品是所有具体产品的抽象,定义了产品的接口。糖果是产品的定义,而大白兔,荷氏薄荷,牛轧糖则是实际的产品,糖果工厂根据传入的名称参数生产不同的糖果。该模式的缺点在于所有创建产品的逻辑全部集中在工厂类中,随着产品的拓展可能会导致工厂的创建逻辑越发复杂,并且也违反了设计模式中高内聚的原则。工厂方法模式: 工厂方法模式一定程度上优化了简单工厂模式...

2022-02-01 20:34:48 559

opengl预习资料.md

opengl预习资料.md

2022-04-04

ICEORYX.pptx

ICEORYX.pptx

2021-08-28

SecureCRT.rar

SecureCRT,比较好用的ssh,串口连接工具,比putty在文字编辑,使用习惯上好很多,比finalshell也好不少

2020-09-01

teraterm.zip

类似与putty的软件,但是有很多额外功能,可以通过串口传文件等 软件需要解压后才能使用,经常在开发过程中使用他的marco菜单下的功能,配合ttl文件完成testmode模式下的设备的相关操作

2020-06-03

makefile中文手册

make中文手册 希望对大家有帮助 ~~~~~~~~~~ ~~~~~~~~~~ 谢谢~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~

2017-09-21

WINDOWS程序设计第五版中英文

C语言下编写WINDOWS程序的编程宝典,帮助你深入理解WINDOW程序的运行原理

2011-02-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除