- 博客(29)
- 收藏
- 关注
原创 视频输入设备-V4L2的开发流程简述
此篇文章是为了帮助初学者理解V4L2的开发流程,除了设计摄像头硬件,YUV格式解读及转换,还会涉及对V4L2源码,文档、man手册中函数的解读。内容足够细致,介绍足够简洁明了
2025-03-06 12:30:33
1585
原创 Linux系统基于ARM平台的LVGL移植
此篇文章是为了展示如何将LVGL移植到ARM开发板的流程,所设计的LVGL源码可以在文章最后的链接中找到。
2025-03-06 09:18:19
890
原创 Git版本管理工具(基本功能)
2.初始化仓库 git init假设存在文件main.c,我希望保存该文件,并给当前保存写一些提示信息 所谓的分支指的是一系列的版本所形成的时间轴,一个仓库可以有多条分支, 也就是可以有多条版本发展的路径,在开始初始化的时候,git会为我们自动 创建一条默认分支,即master分支。以上信息表明:当前所在的分支是git默认分支master,并且当前的整个 仓库(包括工作区、暂存区和最新分支节点)数据都是一致的(clean), 没有任何东西需要commit。上述信息的意思是,当前文件 main.c 被做
2025-02-11 13:46:14
356
原创 CMakeLists.txt基础语法
我们可以直接在 CMakeLists.txt 中设置跟工具链相关的所有细节,但有时候工具的设置项比较多,而且同一项目可能要部署到不同的平台中去,不同平台可能对工具链的配置信息不尽相同且都需要保留,那么如果能将跟平台相关的工具链的配置信息单独放在一个文件中,然后在执行 cmake 指令的时候临时指定,将会很大地提升工作效率。这样,就可以通过顶层的 CMakeLists.txt 来间接执行子目录工程配置信息,最终在 build/ 中生成动态库和静态库。
2025-02-09 20:53:04
577
原创 CMake使用指南(基础入门)
在早期和当今的Linux工程管理中,make工程管理器占据了半壁江山,但make的配置文件Makefile的语法晦涩难懂,接触过的人都清楚,Makefile写起来非常困难。一般而言,为了项目工程观感更干净、利落,我们不希望源码跟编译工具文档像上面的例子那样混在一起,因此对于cmake而言,通常的操作是:在源码中创建一个专门用于存储编译输出文件的存储区域,不妨命名为。是一款跨平台的免费开源软件工具,用于使用与编译器无关的方法来管理软件的构建过程。的版本,若需要升级版本,可直接使用。
2025-02-09 20:45:44
1512
原创 autotools工具使用样例
最后,我们应该要来编写configure.ac了,但是懒人创造世界,GNU-autotools将这一思想精髓发挥到极致,因为还有一个工具叫做configascon,在顶层目录执行它!虽然看起来挺复杂,需要很多乱七八糟的中间文件(sundry files),但他们大多数都是由autotools的套件自动生成的,只有两种文件要亲自操刀:configure.ac和Makefile.am(上图中绿色标注)。此时我们进入build就会发现,该有的文件都有了,只需要执行bin文件夹下的main就可以了。
2025-02-09 17:25:43
663
原创 ARM(sp56818)结合摄像头(V4L2)开发项目--畅行V1行车记录仪
当用户点击查看历史记录时,可以把每个文件夹的第一帧BMP图像作为界面,以列表的形式显示在LCD屏,当用户点击某个BMP图像时可以以视频流的方式显示出录像画面,当视频过多的时候,可以通过上下翻页选择查看不同的视频。行车记录仪具有循环录像功能,当用户打开循环录像功能后,可以把摄像头采集的画面以BMP图片的形式存储到一个文件夹中,并且当数量达到20张时,可以把最新画面重新覆盖到BMP图片中。当行车记录仪启动之后,可以显示系统主界面,主界面布局合理美观,用户可以通过触摸屏实现和行车记录仪的人机交互。
2025-01-23 15:49:21
227
原创 单链表实现两数相加
请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。的方式存储的,并且每个节点只能存储。
2024-12-27 23:12:52
148
原创 单链表的初始化、头插法、尾插法、头删法、尾删法、链表反转(力扣 单链表 206题)
【代码】单链表的初始化、头插法、尾插法、头删法、尾删法、链表反转(力扣 单链表 206题)
2024-12-27 19:04:27
125
原创 c语言 求数组的最大子数组
注意:当加到一个很大的负数的时候,即整个数可能<0了,这时候我们把整个数置为0。从0开始加,如果下一次还是负数那么我们依旧置为0,如果下一次是正数那么我们就还是与之前的数比较,如果大就说明可以从这个数字开始求最大子数组。简单叙述一下代码的整体思想:为了求最大子数组,我们循环遍历整个数组,找到第一个不是负数的数(如果从负数开始就不是最大的子数组了)。从这个数开始往后加,每加一个数就与前面的数比较,如果大就保留。可以问一下人工智能。但代码应该是没有问题的。
2024-12-18 00:06:41
117
原创 c语言 字符串去除重复字符
大致思想就是双指针,第一个指针负责遍历整个数组,第二个指针在第一个指针后遍历数组,要是两个指针内容相同,就把后面这个指针内容置为‘\0’。这样把整个数组存入另外一个数组,遇到不是'\0'的就存入,否则就跳过。
2024-12-17 23:57:08
250
原创 关于VScode显示#include错误
这个问题我也不是很懂,只是知道gdb是一个调试工具,在调试代码是应该会用到,第一次调试时需要配置launch,因为我这个下载的CYgwin64没有gdb工具,就不在这里演示了。也有人可能会问为什么点击Run Code下面的运行C/C++文件会出现提示。下面这张图片可以对于你们下载Mingw有帮助(图片来自于。如果有谁知道可以私信我或者评论。随便点击一个后会出现。
2024-11-27 21:54:30
388
原创 关于配置ssh服务器远程连接Linux(VScode)
更新库(Update Repositories)升级库(Upgrade Packages)
2024-11-27 21:50:05
528
原创 关于虚拟机VMWare提示另一个程序已锁定文件的一部分,进程无法访问,打不开磁盘…或它所依赖的某个快照磁盘,模块“Disk”导致的无法打开虚拟机
解决方法:在存放虚拟机目录下,找到.lck文件,把这些文件删除,如果存放虚拟机的目录下找不到,可以去虚拟机所用操作系统的目录下寻找(我的是在ubuntu的目录下找到的)。
2024-11-26 12:09:16
696
原创 关于开发板显示器的分辨率宽800个像素,高480,但触摸板的可触控范围是1024*600,如何正确显示图片且让两者像素点重合
问题场景:当你让一张800*480的图片显示在开发板的时候,如果这块开发板的触控范围恰巧也与图片相同是800*480,那么当你点击图片某个部分时,触摸板获取的点击坐标与你想点击的位置是刚好相同的,不会发生任何偏移。我们在800*480的屏幕上显示一张800*480尺寸的图片,在上面定一个点位,700*300,当我们把显示器的尺寸变为1024*600时,图片会放大,坐标(700*300)虽然保持不变,但和图片相比就是往左上移动了。这意味着图片的左上角保持不变,而右下角会被拉伸或压缩以适应新的分辨率。
2024-11-23 22:07:58
220
原创 long int占几个字节?
64位操作系统的long int 所占字节就是8位。32位系统的long int 占位是4个字节。long int 占几个字节是由系统决定的。
2024-11-19 19:57:36
219
原创 关于int的取值范围为-2,147,483,648~2,147,483,647
可是在补码这里会发现补码可以再小一位,即补码为:10000000 00000000 00000000 00000000,十进制上就是-2,147,483,648,但二进制上没有反码,原码,这是计算机的特性决定的,需要注意的是计算机上的运算往往采用的是补码。最小数为应该为:11111111 11111111 11111111 11111111。原码:00000000 00000000 00000000 00000000。原码:11111111 11111111 11111111 11111111。
2024-11-19 19:36:16
259
原创 (C语言)hello world
头文件作为一种包含功能函数,数据接口声明的载体文件 用户程序只需要按照头文件中的接口声明来调用相关的函数或变量即可使用。//include 意味“引入”,和“”不同在于前者是只会在系统默认的环境环境中去索引文件,后者是直接在工程里面索引头文件,如果没有再去环境变量中索引头文件。World\n");//printf:打印函数。//std:stdand 标准的。.h:head的缩写,头文件。//返回值,程序运行到这里就结束了,并以0的结果返回出去。为什么要引入头文件?
2024-11-19 19:10:02
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人