- 博客(19)
- 收藏
- 关注
原创 LCD驱动
Framebuffer(帧缓冲)是系统为LCD分配的专用显存区域,用于存储所有像素的颜色数据,是应用程序与LCD硬件之间的“数据桥梁”。Framebuffer大小分辨率xres×yres×bpp8\text{Framebuffer大小} = \text{分辨率}(xres×yres) × \text{bpp} / 8大小分辨率xres×yres×bpp/8。
2025-10-13 20:17:34
1157
原创 Linux中input子系统
input_dev匹配场景判断逻辑无match函数仅需在中即可匹配有match函数先满足id_table匹配,再通过match函数的自定义逻辑(如设备树属性检查)示例(evdev handler)evdev的id_table为,支持所有bustype,因此几乎所有input_dev都能匹配。
2025-10-08 22:26:24
1004
原创 Linux I2C 子系统
因多数设备实现 SMBus,Linux 建议优先使用。即使 I2C 控制器无 SMBus 硬件支持,也可通过软件模拟 SMBus 协议。用于匹配i2c_client与i2c_driver。
2025-10-07 21:43:33
1458
原创 GPIO 子系统和 pinctrl 子系统
GPIO 控制器节点则用于描述 GPIO 控制器的相关信息,如“gpio - controller”属性标识该节点是一个 GPIO 控制器,“#gpio - cells = <2>”属性表示该控制器下每一个引脚要用 2 个 32 位的数(cell)来描述,其中第一个 cell 表示引脚编号,第二个 cell 表示有效电平。在设备树中,通过节点来描述硬件信息。pinctrl 子系统的节点用于指定引脚的复用配置,例如将某个引脚配置为 GPIO 功能或者其他功能(如 UART、I2C 等)。属性用于设备树匹配,
2025-10-03 00:00:12
1137
原创 同步与互斥
需求场景优先选择的机制核心考量简单计数器/标志位(无等待)原子操作(atomic_t)无上下文切换开销,性能最高中断/软中断上下文、短临界区自旋锁不能睡眠,且临界区短,自旋开销小于上下文切换开销用户上下文、独占访问互斥锁支持所有权、优先级继承,避免误操作和优先级反转用户上下文、多进程共享资源信号量(count>1)需控制访问进程数量,如“最多3个进程同时访问设备”
2025-09-30 23:55:44
717
原创 视频监控学习笔记
基于开发板的视频监控实现,本质是“底层驱动→数据采集→编码传输→外网访问→应用集成驱动确认:用v4l2-ctl和arecord确认摄像头、声卡驱动正常;局域网监控快速调试:用 mjpg-streamer 启动 HTTP 视频服务,浏览器查看;音视频同步:用 FFmpeg 推流到 Nginx,VLC 拉流观看;外网访问简单方案:花生壳映射 Nginx 端口,用公网域名拉流;稳定方案:公网服务器 + frp 实现内网穿透;应用集成。
2025-09-25 23:35:12
1311
原创 V4L2摄像头驱动系统
初始化设备→循环处理帧→释放资源”。只要记住 10 步标准化流程,再结合本文的代码示例,就能快速实现 Linux 下的视频捕获功能。用mmap映射缓冲区,避免数据拷贝,提升效率;始终用“队列-出队”模式管理缓冲区,确保循环复用;任何步骤失败都要调用cleanup释放资源,避免内存泄漏或设备占用。
2025-09-23 20:53:57
880
原创 Opencv的学习笔记
/ 重新定义大小:缩放图像(放大或缩小)// resize:图像缩放函数// 参数3:目标大小(Size(width, height)),若设为空,则按缩放因子计算// 参数4:x方向缩放因子;参数5:y方向缩放因子(0.5表示缩小到原来的1/2)// 若要固定尺寸(如缩放到400x300),可改为:waitKey(0);
2025-09-21 19:13:06
803
原创 Python学习笔记
Lambda 表达式是一种匿名函数,语法为 lambda 参数: 表达式,它可以快速定义简单的函数,常用于需要临时函数的场景,比如和 map、filter 等函数配合使用。常见的数据类型有整数、浮点数、字符串、布尔值、列表、元组、字典、集合等。括起来,内容不可修改,相比列表更节省内存,适合存储不可变的序列数据。函数能实现代码的复用,让程序结构更清晰。字符串是 Python 中常用的数据类型,有丰富的操作方法。是一种有序、可修改的容器,可存储多个元素。(小于等于),用于比较两个值的关系,结果为布尔类型(
2025-09-18 10:33:31
1025
原创 GPS定位在百度地图
首先需要创建一个本地HTML文件(如),在其中初始化百度地图,并定义一个接收Qt参数的JS函数(如注意:HTML中加载百度地图JS时,需替换为你的AK(与坐标转换API的AK可共用),加载代码如下:v=3.0&ak=你的百度AK " > </ script >v=3.0&ak=你的百度AK " > </ script >v=3.0&ak=你的百度AK " > </ script >v=3.0&ak=你的百度AK " > </ script >
2025-09-17 22:18:13
1088
原创 Qt 下基于 Modbus RTU(RS485)读取温湿度数据的实现
在工业自动化和物联网领域,Modbus 协议是常用的通信协议,结合 RS485 总线可实现设备间可靠的数据传输。
2025-09-17 00:06:27
808
原创 语音识别项目总结
通过以上各个环节的协同工作,实现了从音频采集、播放,到通过网络与百度语音服务交互,最终完成语音识别的全流程,为音频相关的应用开发提供了完整的技术路径。
2025-09-16 22:51:49
643
原创 视频播放器的学习笔记
这里将 QVideoWidget 的父对象设置为 ui->label,是为了利用 label 作为视频播放区域的容器。在播放按钮的实现中,再次调用 resize 方法是为了确保视频窗口能正确适应 label 的大小。这段代码实现了选择多个视频文件并加载到播放列表的功能,用户可以一次性添加多个文件进行连续播放。
2025-09-16 21:12:53
593
原创 树与二叉树:从基础到哈夫曼编码
本文系统介绍了树与二叉树的基本概念、核心性质和应用场景。主要内容包括:1)树的基础概念与术语,如根节点、叶子节点、度数等,以及树的核心性质;2)二叉树的特殊结构与性质,包括满二叉树、完全二叉树等类型及其遍历方法;3)哈夫曼树的构建原理及其在数据压缩中的应用;4)树与二叉树之间的转换规则。文章通过图示和示例,深入浅出地阐述了这些重要数据结构的内在联系和实际应用价值,为理解更复杂的树形结构奠定了基础。
2025-09-11 16:15:15
804
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅