- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 posix_spawn环境变量处理
posix_spawn 是 POSIX 标准中用于创建新进程并执行指定程序的函数,它结合了fork()和exec()的功能,但设计更高效简洁。posix_spawn的第五个参数char *const __envp[__restrict_arr]用于控制子进程的环境变量。通过自定义envp,可以精确控制子进程的运行环境。
2025-03-28 10:37:17
276
原创 eprosima fastdds sequence类型长度超过100收发失败解决办法
以上idl当sequence类型的data长度超过100时,会导致接收和发送都失败。例如以上修改后的idl,指定最大长度为2000。在idl中指定sequece最大值。在rqos和wqos中把。看一下各种内存分配的策略。
2025-02-27 11:25:59
186
原创 周期协程调度器
libucontext用法和ucontext基本完全一致,不一样的地方是他提供了汇编和c源码,可以不依赖操作系统的ucontext,因此可以方便移植到不支持ucontext的操作系统,例如qnx。为每个任务创建入口context、设置返回context指针,初始化完成后,SingleThreadScheduler会找出最小过期时间的任务,并切换到该任务,任务应在合适的时候执行。:这是Boost库中的新协程库,提供了更加现代的协程支持,但它仍然不是基于C++20标准的协程。库,它支持简单的协程功能。
2024-08-08 09:05:59
1105
1
原创 使用API删除Gitlab Pipeline
不知道为何在Gitlab网页上找不到删除pipiline记录的按钮,查找了Gitlab文档发现可以通过API来删除。根据文档,删除一个Pipeline需要access token, project id和pipeline id,分别可以在以下页面获取:获取账户的access token:在User Settings -> Access Tokens页面,输入token名字并勾选api,创建一个access token。详细请参考。
2024-03-16 10:16:17
881
1
原创 通过pidin观察进程信息
pidin在qnx里是一个非常有用的命令,该命令提供了多个选项来获取关于进程的详细信息,包括进程ID(PID)、进程状态、CPU使用情况、内存使用情况、线程信息等。从中看可以看到进程ID是1232925,进程名字是test,一共两个线程,名字分别为1,2。其中线程2处于sleep状态,线程1处于被线程2阻塞的join状态。pidin通过threads参数可以观察进程ID,线程ID,线程名字,线程状态等。可以看到线程名字已经变成了我们设置的名字。给线程设置名字,以方便区分不同的线程。
2024-03-11 17:29:14
1450
原创 qnx du统计目录大小单位
与Linux不同的是,du -s显示的大小是以512byte为单位的,也就是说du -s的值x512后等于实际大小。如果想直接以1byte为单位显示,把-s参数改为-p参数即可。比如目录下有个已知1gb大小的问题,但du统计出来的值跟1gb差太多了。在qnx上使用du命令统计目录大小时,发现统计数值与实际大小不一样。查看qnx关于du命令的文档。
2024-03-02 09:43:15
730
原创 git仓库批量备份
在git中,--mirror是一个用于克隆和推送操作的参数。它用于创建一个镜像仓库,包含了源仓库的所有分支、标签和提交历史记录。当使用命令时,会创建一个完全相同的镜像仓库,其中包含源仓库的所有内容。与普通克隆不同,镜像仓库会将所有的分支和标签都设为跟踪远程仓库的分支和标签。这意味着可以使用镜像仓库进行完整的版本控制操作,包括查看历史记录、切换分支等。对于已经clone下载的仓库,如果远程仓库更新了,则可以用对本地仓库保持同步。
2024-01-27 15:08:25
2893
原创 创建自定义ros2 message包
编写自定义message存放在src目录下(或者其他你喜欢的目录)。message是一种.msg为后缀名,记录消息成员及类型的文本文件,和idl差不多,一般可以通过idl转换过来。
2024-01-23 17:51:45
518
原创 QNX Fast-DDS交叉编译
编译fastdds一共需要2个仓库(其实还依赖了Fast-CDR, tinyxml2…等其他仓库,但它们是作为Fast-DDS的submodule,不需要手动clone),下面列出了clone地址(注意是clone地址,不是web地址)根据需要选择fastdds的版本,这里我们以2.6.0, 编译目标平台是qnx710的fastdds。
2024-01-18 14:34:07
1301
4
原创 简易gitlab-runner“集群”
你在开发过程中有没有遇到过类似的情况:在甲方超级超级敏捷的开发速度下,一天要发100个版本,当你把代码提交到git上时,发现12核24线程的CI/CD服务器上的gitlab-runner根本忙不过来……这时候你想,要是有互联网那套集群服务器来分担一下CI的编译任务就好了……你别说还真有,gitlab是支持k8s的,但k8s这么专业的东西,对于汽车程序员一般玩不转。其实除了k8s,gitlab还支持一种方法,可以支持“集群”,方法非常简单,就是在项目里多添加几个gitlab-runner。
2024-01-16 09:16:15
542
1
原创 多实例tinyfsm
tinyfsm (https://github.com/digint/tinyfsm)是一款基于c++模板实现的状态机,因为模板所以效率很高,但又因为是模板,所以无法支持多实例,据说可以通过静态模板支持多实例,但静态模板需要在代码阶段就定义出来,那这多实例也太鸡肋了。因此基于tinyfsm,魔改了一款支持多实例的fsm。
2024-01-14 08:19:02
618
1
原创 基于glog使用UDP往以太网发送log
在实际生产中,很多时候需要测试配合查找问题,为了方便测试抓取log,基于glog使用UDP往以太网发送log,只需要wireshark或者一些通用工具就能把log记录下来。该方法需要一个输出参数LogSink,通过继承google::LogSink实现,新类需要实现send函数。send函数即为自定义的发送函数。在glog上,我们可以通过AddLogSink函数添加自定义的日志输出目标。我在send函数里实现了通过UDP发送log的代码。UDPLog是发送log的实现。测试代码main.cpp。
2023-10-09 09:44:08
367
1
原创 TDA4核间通信
传统的多核处理器一般为SMP架构,SMP即对称多处理器,在开发者看来就是一个单核处理器,写代码的时候只需要写一份程序,因此开发起来比较简单。但TDA4不一样,TDA4是AMP架构,AMP即非对称多处理器结构,简单理解为将好几种处理器集成在一块硅片上,并且不同的核运行不同的操作系统。TDA4一共有6个Cortex-R5F核,2个Cortex-A72核,2个C66核,1个C71核。如果把所有核都利用起来,需要写处于2个A72的Linux或者QNX的1份程序(其中openvx可以调用其他其他核的资源,Open..
2021-11-09 16:55:32
1516
1
原创 TDA4 RTOS内存分配(c:malloc,c++:new)
在TDA4 PSDK里有三种内存分配api,分别是c语言的malloc,c++的new以及psdk提供的appMemAlloc。其中malloc和new的内存来源是一样的,由xdc的xdc.runtime.Memory模块提供api,内存来源是DDR_XXXX_X。appMemAlloc由openvx提供api,内存来源是DDR_XXXX_X_LOCAL_HEAP。内存的布局请参考各个核目录下的linker_mem_map.cmd文件,这里不做展开。本来想把所有内存分配a...
2021-10-26 16:00:18
1082
1
原创 c语言中不同函数中static修饰的同名变量
static修饰的变量存储在全局区。那问题来了,不同函数中static修饰的同名变量是怎么区分的?做一个测试,在同一个源文件里实现两个函数,在函数里添加一个同名的,static修饰的,int类型的variable。将源文件编译成静态库,注意不要加入-O等优化参数,避免把变量优化掉(加入main函数编译成可执行文件也是一样的,不限定静态库)用nm查看静态库的符号可以看到编译器自动在变量后面添加了一个数字,有点类似c++的多态。但这个数字是怎么来的还不清楚,不同编..
2021-10-20 15:01:05
2938
1
原创 车载相机(摄像头)诊断
相机作为视觉控制器最重要的传感器之一,并且作为一种可拔插的设备,判断其功能是否正常工作是非常重要的。相机的诊断我认为可以分为以下三种类型:电源诊断,包括相机开路、短路、过流过压等电源故障的判断 图像信号诊断,包括视频流信号是否正常、控制信号是否正常、帧率、分辨率等图像信号故障的判断 图像质量诊断,包括相机是否被遮挡、安装位置是否正常等故障的判断电源诊断我们的控制器使用了Maxim的max20087作为相机PoC的PMIC,按美信的说法是该款芯片是“业界唯一的ASIL级摄像机保护器”,最..
2021-10-19 19:45:31
4303
5
原创 基于HSV的颜色渐变
最近在学习颜色识别,openCV里颜色识别要用到HSV模型,但对HSV模型不熟悉,因此写了一个基于HSV的颜色展示小程序关于HSV在openCV里,H
2016-05-01 10:49:59
2238
原创 Linux下用eclipse查看opencv源码
我觉得我是个不主流的人。我不喜欢Windows下的visual studio,也不喜欢Linux下的vim,我喜欢Linux下的eclipse……好吧,我只是喜欢IDE的隐藏细节,因为细节对初学者是个非常大的障碍。细节的东西可以在熟练后再去看看领会。正题,怎样在eclipse里面查看opencv的源码呢?据说现在opencv的版本需要用cmake来生成makefile文
2016-04-30 13:05:40
1227
原创 启用树莓派文件类型配色方案
在使用树莓派的时候,发现树莓派使用ls命令时并没有像桌面Ubuntu那样的文件类型配色。如果想要实现文件类型配色,只需要修改HOME目录的.bashrc文件即可alias是“别名”的意思,上图两个语句的意思是将 ls 替换成 ls --color=auto将黄色框内语句前的注释去掉,保存退出,执行source .bashrc
2016-03-18 18:47:08
732
原创 解决树莓派没有/dev/video0
最近在做一台基于树莓派和opencv的智能小车,买了树莓派的官方摄像头,但在/dev并没有video0这个节点,导致opencv无法读取摄像头在网上找了几个帖子,所只要在/etc/modules中添加bcm2835-v412就可以(请注意,是v412),但我试了,不行。原来是楼主打错字,应该是bcm2835-v4l2 是l不是1添加重启后能在/dev看到video0
2016-03-18 14:11:21
11850
4
原创 java端口扫描器
因为找不到win8下趁手的端口扫描工具,刚好学了java不久,决定自己动手写个端口扫描练练手使用了多线程扫描,加快扫描速度程序很简单,直接上代码package com.lyp.portscan;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.net.Soc
2016-03-05 12:11:35
911
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人