自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux字符设备驱动的演进:从传统框架到现代实践

本文系统梳理了Linux字符设备驱动从传统框架到现代实践的演进过程。传统框架通过register_chrdev()单次调用完成注册,存在设备号管理粗放、需手动创建设备节点等局限。现代框架采用模块化设计,将注册过程分解为设备号动态分配、字符设备初始化与添加、设备类创建等独立步骤,支持自动节点创建和精细资源管理。这种转变使驱动开发更加模块化、健壮,适应了热插拔、多设备支持等现代需求,显著提升了开发效率和系统兼容性。

2025-12-09 21:14:11 845

原创 一文教你学会Linux现代字符设备驱动框架开发

本文详细介绍了Linux现代字符设备驱动框架的设计与实现。框架采用模块化设计,通过分步注册策略实现精细化管理:包括设备号动态/静态分配(alloc_chrdev_region/register_chrdev_region)、字符设备注册(cdev_init/cdev_add)以及设备节点自动创建(class_create/device_create)。文件操作接口(file_operations)作为用户与硬件的桥梁,定义了open、read、write等关键操作函数。相比传统方式,现代框架具有资源精细管理

2025-12-09 20:48:06 861

原创 手把手教你使用CLion远程开发Linux驱动

借助CLion的远程开发功能,我们可以打造高效的Linux驱动开发环境,特别适合ARM等嵌入式设备的开发场景。该方法能有效解决虚拟机环境下常见的编译卡顿、代码提示不完整等问题,大幅提升开发体验。在本地使用CLion编写代码,充分利用其智能提示和调试功能;同时让远程Linux服务器(或开发板)负责实际的编译和运行。这样就能完美结合两者的优势。下面咱们就一步步来配置。

2025-12-06 11:24:22 763

原创 嵌入式Linux开发:内核与设备树的获取与编译

本文介绍了嵌入式Linux开发中内核与设备树的获取与编译流程。主要内容包括:1)从官方仓库或芯片厂商获取内核源码;2)配置和编译Linux内核生成zImage镜像;3)设备树文件的获取与编译方法。文章详细说明了交叉编译环境的搭建、内核配置选项、编译命令以及生成文件的验证和部署方法,为嵌入式系统开发提供了完整的内核和设备树处理指南。

2025-11-25 11:49:58 290

原创 U-Boot详解:嵌入式系统的引导加载程序

本文介绍了嵌入式系统引导加载程序U-Boot的核心概念和使用方法。主要内容包括:U-Boot的功能特性及重要性;如何获取官方或厂商提供的U-Boot源码;交叉编译工具链的安装和U-Boot编译步骤;通过厂商工具、TFTP网络或USB烧写U-Boot到设备的方法;以及U-Boot常用命令详解,如环境变量操作、内存操作和存储设备操作等。文章为嵌入式开发人员提供了U-Boot从获取到使用的完整指南,帮助开发者掌握这一关键的嵌入式系统组件。

2025-11-24 21:21:02 830

原创 在开发板上使用TFTP加载内核与NFS挂载根文件系统,用于帮助快速linux驱动开发测试

本文详细介绍了在开发板上使用TFTP加载内核与NFS挂载根文件系统的高效开发方法。相比传统烧写方式,该方案具有快速启动、实时更新、保护存储和便于调试等优势。文章分步骤讲解了TFTP和NFS服务器的配置过程,包括服务安装、目录设置和权限管理,并详细说明了内核镜像、设备树文件和根文件系统的准备方法。最后,重点介绍了U-Boot中的网络参数配置和启动命令设置,确保开发板能正确从网络加载系统。这套方案可显著提升嵌入式开发效率,避免频繁烧写带来的时间损耗和硬件损伤。

2025-11-24 20:46:42 957

原创 基于Qt的多参数监控队列警报弹窗系统

基于Qt的多参数监控警报系统摘要 本文介绍了一个基于Qt框架开发的多参数监控警报系统,采用模块化分层架构设计,包含数据管理层、警报处理层和UI展示层三大核心模块。系统支持多种数据类型的阈值监控,通过静态数组配置参数类型、名称、单位和阈值。采用先进队列管理算法实现智能警报处理,包括警告更新机制、动态重排和队列缓冲功能。UI界面使用Qt样式表实现美观的警告窗口,最多同时显示4条警告,相同数据源警告会自动更新而非创建新窗口。系统具有内存管理完善、可扩展性强等特点,适用于工业监控和环境监测等场景。

2025-08-28 10:06:22 1021

原创 QT数据库QSqlite

本文介绍了QT中QSqlite数据库的基本操作,重点讲解了QSqlDatabase和QSqlQuery两个核心类的使用方法。QSqlDatabase用于数据库连接管理,包括创建连接、设置参数等操作;QSqlQuery用于执行SQL语句,支持参数绑定、结果集遍历等功能。文章还详细说明了QSqlTableModel类的常用成员函数,包括数据操作、访问、过滤排序等功能,并提供了典型使用示例,如基础查询显示、数据增删改等操作。这些内容为开发者在QT环境下进行SQLite数据库编程提供了清晰的指导。

2025-08-10 17:44:11 525

原创 QT中MQTT的订阅和发布

本文介绍了Qt中MQTT协议的核心类及其使用方法,主要包括: QMqttClient类:提供MQTT客户端功能,包括连接管理(设置服务器、用户名密码、连接/断开)、订阅发布(subscribe/publish)和重要信号处理(连接状态、消息接收、错误处理)。 QMqttSubscription类:用于管理主题订阅,包含订阅状态管理、QoS等级控制和消息接收信号。 示例代码: 服务器连接配置 主题订阅与消息处理 消息发布函数 断线重连机制(采用指数退避算法) 文章提供了完整的MQTT开发框架,涵盖连接建立、消

2025-08-10 17:27:45 983

原创 qt多线程操作

Qt多线程操作摘要 Qt框架中,主线程同时处理UI和业务逻辑会导致界面卡顿。解决方案是采用多线程,将耗时任务放到子线程中执行。本文介绍了三种Qt多线程实现方式: QThread子类化:继承QThread并重写run()方法,适合简单任务但不推荐常规使用。 Worker对象+moveToThread(推荐):创建QObject派生类作为工作对象,使用moveToThread()将其移至子线程,通过信号槽通信,更符合Qt事件模型。 QRunnable+QThreadPool:配合线程池使用,适合大量短任务,高效

2025-07-12 15:35:30 806

原创 c++命名空间

定义命名空间假设我们要创建一个命名空间来包含与圆形相关的功能。” << endl;在这个头文件中,我们定义了一个名为 Cir 的命名空间,其中包含了计算圆的面积和周长的函数,以及圆周率常量 PI。使用命名空间int main()printf("半径为%f的圆,周长为%f,面积为%f\n",return 0;在 main.cpp 中,我们首先包含了定义 Cir 命名空间的头文件。然后,我们可以使用 Cir:: 前缀来访问该命名空间中的函数和常量。

2025-05-13 22:04:25 1735

原创 c++内联函数

内联函数是C++中用于优化程序性能的一种特殊函数,其定义在每个调用点展开,以减少函数调用的开销。内联函数适用于小型、频繁调用的函数,能够避免参数传递和栈操作等常规开销。然而,编译器有权决定是否进行内联,特别是对于复杂或递归函数。内联函数的定义必须对每个使用它的文件可见,通常定义在头文件中。在类内定义的函数自动成为内联函数。使用内联函数时,需注意避免过度使用,以防止代码膨胀和性能下降。内联函数最适合小型函数和性能要求高的代码场景,合理使用可以平衡代码的可维护性和性能。

2025-05-12 21:44:34 240

原创 c语言:函数的递归调用原理,缺陷,优化与应用

c语言:函数的递归调用原理,缺陷,优化与应用

2025-04-16 00:04:06 1820 2

原创 数据结构课程设计:迷宫游戏 (prim生成算法,DFS寻路,BFS寻路,路径回溯)

迷宫问题是数据结构中最值得实践的大项目之一,本文主要讲解思路,提供的代码大部分都有注释。为了更好的表现效果,该程序使用了easyx可视化。该程序由c语言实现,本人水平有限程序可优化空间很大。本文我会简明的讲解该项目。

2024-10-07 21:47:09 3316 6

空空如也

空空如也

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

TA关注的人

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