自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 《创作一周年有感》

到现在我写下的文章也有26篇了,他确确实实帮助我理解,温故,同时写下也让我对于内容印象更深刻,不至于读完就忘记。感恩csdn,感恩大家!

2025-10-29 14:09:19 252 1

原创 《从 register_chrdev 到 cdev:Linux 新字符设备驱动详解》

之前写的旧驱动是入门的必修课,这个新驱动是进阶到“真正 Linux 驱动”的那一步。两者关系就像:学手动挡(理解发动机) → 开自动挡(方便实用)。参考文档:《正点原子驱动开发指南》

2025-10-27 16:12:45 493

原创 《i.MX6ULL LED 驱动实战:内核模块开发与 GPIO 控制》

本文介绍了Linux驱动开发中访问硬件寄存器的关键方法。由于Linux启用了MMU虚拟内存机制,不能直接操作物理地址,必须通过ioremap()将物理地址映射为虚拟地址才能访问。文章详细讲解了ioremap()和iounmap()函数的使用方法、参数说明和注意事项,并通过LED驱动代码示例展示了实际应用场景。在驱动代码中,首先映射多个GPIO寄存器物理地址,然后通过readl()和writel()安全访问这些寄存器,最后在模块卸载时解除映射。这种机制确保了在内核态下对硬件寄存器的安全访问。

2025-10-21 17:45:00 945

原创 《i.MX6ULL LED 裸机开发实战:从寄存器到点亮》

本文通过一个 LED 裸机开发实验,带领读者从汇编到 C 语言,理解 GPIO 控制与寄存器操作的基本流程。文章介绍了引脚复用(MUX)和管脚属性(PAD)的概念,并演示了如何通过寄存器配置实现 LED 点亮。通过汇编展示底层原理,再通过 C 语言封装结构体和宏定义提高代码可读性和维护性。本文帮助读者建立裸机开发框架,为后续 Linux 驱动开发打下基础,同时为理解物理地址与虚拟地址在内核下的操作做铺垫。

2025-10-19 12:37:01 932

原创 《从系统调用到驱动回调:read() 如何映射到 chrdev_read()》

Linux字符设备驱动机制:用户态read()如何触发内核态回调 本文分析了Linux字符设备驱动中用户态系统调用与内核态驱动的映射机制。当用户程序执行read(fd,buf,size)时,内核通过以下路径完成调用: read()系统调用入口 根据fd查找file对象 通过file->f_op获取驱动操作函数集指针 调用file_operations结构体中注册的read回调函数 最终执行驱动自定义的chrdev_read()实现 关键点在于file_operations结构体建立了用户操作与驱动函数

2025-10-14 18:23:01 314

原创 《基于Qt的车载系统项目》

本文介绍了一个基于Qt开发的车载系统项目,包含五个核心功能模块:时间显示、音乐播放、视频播放、天气显示和地图显示。项目采用多界面跳转设计,通过信号槽机制实现主界面与子界面的切换。时间模块利用定时器每秒刷新显示;音视频播放模块支持播放列表管理、音量调节和进度控制,视频播放还提供点击列表切换功能;音乐播放额外支持播放模式切换。系统整体框架清晰,核心功能实现简洁高效,适合作为车载信息娱乐系统的开发参考。

2025-09-24 17:52:10 1339

原创 《基于stm32的智慧家居基础项目》

开发文档:OneNet开发文档。

2025-09-05 20:27:06 862

原创 《TCP多线程通信代码C语言开发流程解析》

本文系统讲解了基于 TCP 多线程通信 的服务端与客户端实现流程。服务端通过主线程接收客户端连接,为每个客户端创建独立会话线程,并在会话线程中启动读写子线程处理消息收发;客户端通过 connect 与服务端建立连接,同样使用子线程进行读写操作。文章重点解析了 文件描述符的作用(作为客户端连接的通信通道)、线程管理及资源释放流程,并通过完整示例代码展示了从初始化、连接、数据传输到关闭的完整实现。整体思路可以概括为:主线程接收连接 → 会话线程管理客户端 → 子线程处理读写,帮助读者对 TCP 网络编程流程建立

2025-08-23 12:42:35 354

原创 《Qt————Mysql连接》

本文详细介绍了如何使用 Qt 连接 MySQL 数据库,并实现对数据库表的插入与查询操作。内容涵盖数据库和数据表的创建、Qt 工程配置、MySQL 驱动安装及关键代码实现。通过本示例,读者能够掌握 Qt 操作 MySQL 数据库的基本流程,为后续复杂的数据库管理和应用开发打下坚实基础。

2025-08-12 17:28:18 454

原创 《Qt————Tcp通讯》

只用在ui界面加一个lineEdit,用于存放客户端发送的数据。1.由于函数结束局部变量会被释放,我们需要在堆上创建元素。在客户端连接成功后,隐藏连接界面。

2025-08-10 17:25:32 340

原创 《Qt————Tcp连接》

本文介绍了使用 Qt 实现基于 TCP 协议的客户端和服务端连接。在客户端部分,首先通过 Qt Designer 设计图形界面,包括 IP 和端口输入框、连接按钮和取消按钮。项目中添加了 network 模块,并在代码中引入 QTcpSocket、QHostAddress、QMessageBox 等头文件。在构造函数中初始化 QTcpSocket 对象。取消按钮用于关闭窗口,连接按钮则读取输入的 IP 和端口,通过 connectToHost() 方法连接服务端,并利用信号槽机制提示连接是否成功。服

2025-06-24 14:53:49 418

原创 《Qt————文件操作》

本项目基于 Qt 框架,使用 QMainWindow 创建了一个简易的文本编辑器,具备基本的文件操作功能,包括新建、打开、保存,并支持 Ctrl+S 快捷键保存操作。主要功能如下:新建功能通过清空文本编辑框,并设置窗口标题为“新建文本文档.txt”实现;打开功能使用 QFileDialog 获取用户选择的文件路径,并通过 QFile 读取文件内容,显示在 QTextEdit 中;保存功能使用 QFileDialog 获取保存路径,通过 QFile 将 QTextEdit 中的文本内容以 UT

2025-06-22 16:10:51 391

原创 《Qt 定时器——QObject and QTimer》

本文通过实现一个定时刷新图片的功能,对 Qt 中两种定时器机制——QObject::startTimer() 与 QTimer 的使用方式进行了详细对比。首先使用 QObject 的定时器,通过重写 timerEvent() 函数实现定时切换图片;随后使用 QTimer,通过 connect() 信号与槽机制,实现相同的图片轮播效果。两种方法分别在初始化、触发机制、资源管理和代码结构上有所区别。文章最后对两者的使用特点进行了总结,帮助读者理解 Qt 定时器的不同实现方式以及在实际项目中的应用选择。

2025-06-21 17:49:23 294

原创 《Docker安装一气呵成》

Docker安装指南:记录了完整的Docker安装流程,解决常见的安装问题。首先安装必要依赖,然后导入Docker官方GPG密钥(通过阿里云镜像),配置阿里云Docker源,更新软件包索引后安装Docker引擎及相关组件。最后可通过docker version命令验证安装成功。该流程解决了网络代理和依赖问题,适用于Ubuntu/Debian系统。

2025-06-16 18:47:30 180

原创 《Qt——计算器》

本文介绍了使用Qt框架实现计算器功能的主要步骤。1) 准备工作包括新建Widget项目和UI设计;2) 数字和符号功能通过字符串处理和信号槽机制实现;3) 清空功能使用clear()方法;4) 删除功能借助chop()函数实现;5) 核心运算功能采用栈结构处理表达式,包括优先级判断和括号处理。整个实现过程展示了Qt的信号槽机制和基本数据结构在GUI开发中的应用,最终完成了一个支持四则运算和括号的计算器。

2025-06-16 14:31:51 419

原创 《Qt 简介 + 安装 + 第一个小程序》一条龙教程

Qt 是一个跨平台的 C++ 开发框架,主要用来做图形界面应用,也能做后台程序。它有很多模块,比如做界面、网络、数据库、多媒体等。你可以用 Qt Creator 来写代码、设计界面。安装很简单,Linux 下几条命令就搞定。写第一个程序时,用 Designer 拖按钮,然后写槽函数实现功能,比如点击执行命令、取消操作、回车触发等,主要靠信号和槽来连接界面和逻辑。上手快,功能强,适合做各种桌面或嵌入式应用。

2025-06-11 19:11:29 855

原创 C/C++————多态

本文系统讲解了 C++ 中的多态机制,涵盖静态多态与动态多态的区别、实现方式(如虚函数、函数重载、模板等),以及多态在实际开发中的应用场景。通过示例代码演示了多态如何提高代码复用性、可扩展性与模块化能力,并进一步分析了虚函数表(vtable)背后的底层原理。文章适合初学者建立面向对象编程的系统认知。

2025-05-28 20:15:17 504

原创 C/C++————继承

本文系统讲解了 C++ 中的继承机制,包括继承的基本语法、访问控制(public/protected/private 继承)、构造和析构的执行顺序、同名成员的处理、以及菱形继承及虚继承的问题与解决方案。通过多个实例和图示,帮助读者理解继承在代码复用、结构设计中的实际意义。适合正在学习 C++ 面向对象编程的初学者

2025-05-27 19:46:57 778

原创 C/C++ ———— 运算符重载

学会 C++ 运算符重载,让你的类像 int 一样丝滑!本文通过实用例子讲解如何正确重载比较运算符,避免常见坑,提高代码优雅度。你是否曾经在类对象之间比较时遇到报错?为什么 p1 == p2 编译不过?运算符重载能完美解决这些问题。本文手把手教你重载 C++ 运算符,写出更自然、简洁、专业的代码

2025-05-26 14:30:46 979

原创 C/C++通讯录管理系统:个人信息管理与操作实现(入门级)

本文介绍了一个基于C++编写的通讯录管理系统。该系统允许用户执行基本的联系人操作,包括添加、删除、修改、查找、显示和清空通讯录等功能。

2025-05-11 21:21:02 912

原创 《TCP与UDP通信原理与实践》

通过C语言网络编程实例,本文带你掌握UDP与TCP的通信流程。结合生活类比快速理解协议特点,并通过多线程实现一个支持并发连接的TCP服务器,深入体会 socket 编程的魅力。

2025-04-23 21:12:56 680

原创 《线程同步机制全解析:锁、条件变量与信号量》

你是否在多线程编程中遭遇过数据混乱、性能瓶颈?是否对“竞态条件”束手无策,分不清锁的使用场景?本文从零解析线程同步的核心机制,深入剖析互斥锁、读写锁、自旋锁的底层逻辑,揭秘条件变量与信号量的实战技巧,并重点对比有名信号量 vs 无名信号量的关键区别!

2025-04-13 18:08:15 770 1

原创 《线程终止函数详解:pthread_join / detach / cancel 使用指南》

围绕线程终止的三个核心函数 —— pthread_join、pthread_detach 和 pthread_cancel 展开,结合原理说明与实际示例,对它们的使用方法、功能特点及适用场景进行详细讲解

2025-04-08 15:01:51 1783 1

原创 《Ubuntu(or kali)没有网络标志(or 网络功能失效)了?》

每次Ubuntu黑屏或者卡顿,重启时总会发现网络标志不见,网站访问不了,如下图

2025-04-02 19:46:36 1917 2

原创 文件 I/O(输入/输出)

文件io基础函数使用方法

2025-03-11 15:23:12 473 1

原创 010editor 实现文件还原(File Reconstruction)

已有十六进制编码,复原文件

2024-12-05 14:59:31 1606

原创 ModuleNotFoundError: No module named ‘XXXX‘

看看是不是有两个版本的python环境呢

2024-10-29 13:31:56 717

空空如也

空空如也

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

TA关注的人

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