- 博客(33)
- 收藏
- 关注
原创 Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
如何通过设备树(Device Tree)优雅地描述硬件资源平台设备驱动(Platform Driver)的注册与匹配机制GPIO资源的申请、配置与原子化操作以gpio1节点为例:#gpio2;2;
2025-04-02 22:23:47
949
原创 Linux驱动开发实战(十):pinctrl子系统实验:RGB LED引脚初始化详解
前文都是对pinctrl内核实现的解析,希望学内核裁剪的可以多看几遍,本文是对pinctrl如何初始化rgb进行解释,教大家如何运行pinctrl子系统
2025-04-01 15:00:58
1239
1
原创 Linux驱动开发实战(九):Linux内核pinctrl_map详解与优势分析
在嵌入式Linux开发中,引脚控制pinctrl是一个非常重要的概念。无论是开发板级支持包(BSP)还是设备驱动,我们都需要正确配置芯片引脚的功能和电气特性。本文将深入分析Linux内核中的机制,解析其工作原理,并与传统引脚控制方式进行对比,展示其在现代嵌入式系统开发中的优势现代SoC(片上系统)的物理引脚通常支持多种功能。例如,同一个引脚可能既可以作为GPIO(通用输入输出),也可以作为I2C、SPI或UART等接口的一部分。如何选择和配置这些引脚的功能,就是pinctrl子系统要解决的问题。
2025-03-31 13:20:42
974
原创 FreeRTOS学习(十二):时间片轮转调度详解 (众生平等!)
在多任务操作系统中,时间片轮转(Round Robin, RR)是一种常见的任务调度算法。它的核心思想是将处理器的时间分成一个个时间片,每个任务获得一个时间片,在时间片用完之前,任务不能被抢占执行。FreeRTOS 是一个广泛应用的实时操作系统,它提供了时间片轮转的调度机制。本文将通过一个实验案例来介绍 FreeRTOS 的时间片轮转调度原理,并结合代码示例来帮助大家更好地理解如何使用这一调度策略。时间片轮转是一种简单且高效的任务调度算法。
2025-03-30 21:46:07
1089
原创 FreeRTOS学习(十一):列表和列表项详解(一篇讲懂!简单易懂!)
FreeRTOS中的列表是一个重要的数据结构,它在概念上类似于链表。它是一个双向环形链表列表项之间的地址是非连续的,是通过指针人为连接到一起的列表项的数目可以动态改变,随时可以添加或删除非常适合管理OS中数量不确定且状态会发生改变的任务
2025-03-27 21:54:27
1715
原创 FreeRTOS学习(十):任务调度器挂起与恢复机制详解
在FreeRTOS中,任务挂起和恢复是重要的任务管理机制。通过使用vTaskSuspendAll()和xTaskResumeAll()这两个API函数,我们可以实现任务的挂起和恢复操作FreeRTOS的任务挂起与恢复机制提供了一种灵活的任务管理方式,相比临界区保护更加轻量级,同时保持了中断响应能力。在需要防止任务切换但又不想完全关闭中断的场景下,可以很好的保证这个任务做完为止。
2025-03-26 21:36:49
1251
原创 Qt在IMX6ULL嵌入式系统中图片加载问题排查与解决
嵌入式系统图片加载需要特别注意文件路径和格式优先使用 BMP 格式进行兼容性测试使用 qDebug() 进行详细的日志记录重新编译和部署程序后务必重新运行。
2025-03-25 21:39:02
651
1
原创 FreeRTOS学习(九):中断管理
本章节带大家来先回顾中断的相关知识,然后根据中断来做实验FreeRTOS的"中断关闭"实际上是一种优先级阈值机制,而不是真正意义上的全部中断关闭。这种设计允许关键的高优先级中断(如TIM3)即使在临界区内也能执行,同时阻止低优先级中断(如TIM5)干扰系统的关键代码执行,这是RTOS实时特性的重要保障。
2025-03-24 21:26:59
1101
2
原创 Linux驱动开发实战(八):Pinctrl驱动中pins和npins的传递流程以及引脚状态记录详解
本文将深入剖析i.MX6UL系列处理器的pinctrl驱动中,pins和npins这两个关键数据的传递流程以及获取引脚状态和注册引脚,我们可以更好地理解Linux内核中pinctrl子系统的工作机制,为后续的驱动开发打下坚实基础。// ... 更多引脚定义// ... 更多引脚这个宏将枚举值转换为struct pinctrl_pin_desc类型的结构体,包含引脚的编号和名称。// ... 其他字段。
2025-03-21 13:08:27
864
原创 电路基础【3】:三极管基础:三极管开关电路与三极管放大电路(一篇讲明白!建议收藏!)
本文详细分析了三极管开关电路与放大电路中各电阻元件的具体作用,揭示了不同应用场景下电阻选择的技术考量,帮助读者深入理解三极管基本应用电路的设计原理。开关电路与放大电路的电阻选择有根本性差异基极电路电阻的选择决定了三极管的工作区域集电极电路电阻影响输出特性和功耗合理的电阻配置是电路稳定可靠工作的基础。
2025-03-20 21:21:19
1097
1
原创 Linux驱动开发实战(七):pinctrl引脚管理入门结合数据手册分析
引脚复用(Pin Multiplexing/Muxing)引脚配置(Pin Configuration)比如设置引脚用作GPIO、UART、I2C等功能,以及设置引脚的上拉下拉、驱动强度等电气特性。Pinctrl 子系统是现代嵌入式 Linux 系统的关键组件,通过提供统一、灵活的引脚管理机制,它解决了引脚资源有限与功能需求多样之间的矛盾,是设备驱动开发中不可或缺的基础设施。下一篇我会更深入的讲解Pinctrl 子系统的内容。
2025-03-17 15:11:54
1184
1
原创 Linux驱动开发实战(六):设备树升级!插件设备树点灯!
插件设备树极大地提高了Linux嵌入式系统的灵活性和可扩展性。通过允许动态修改硬件描述,它使得系统能够适应更广泛的使用场景,特别是在需要热插拔和动态配置的应用中。掌握插件设备树的开发,将使您的嵌入式Linux系统开发能力更上一层楼。
2025-03-16 16:14:41
843
2
原创 电路基础【2】:三极管基础:PNP与NPN三极管详解
三极管是电子电路中不可或缺的半导体器件,被广泛应用于放大电路、开关电路和各种信号处理系统中。三极管主要分为PNP型和NPN型两种,虽然工作原理相似,但在实际应用中有着明显差异。本文将详细介绍这两种三极管的结构、工作原理、特性和应用场景,帮助大家深入理解三极管。上面添加电阻的作用是为了提供一个微小电流来驱动大电流上面这个图以8050npn为例来进行实验当然拿开电阻,从b端(中间)引出一条导线,用手触碰的时候也会有微亮的效果NPN和PNP三极管是电子电路设计中的基础元件,各有特点和适用场景。
2025-03-15 22:00:36
1305
原创 FreeRTOS学习(八):任务挂起与恢复实践详解
前面讲解过任务创建与删除及临界区保护本文将详细介绍FreeRTOS中任务挂起(suspend)和恢复(resume)的实现方法,并通过实际代码示例展示如何在项目中使用这些功能。在多任务系统中,有时需要暂时停止某个任务的执行,然后在适当的时候再恢复其运行。FreeRTOS提供了和: 将指定任务挂起,任务将不再参与调度,即使其时间片到了也不会运行。: 将挂起的任务恢复到就绪状态,使其能够再次参与调度。
2025-03-15 15:58:09
1205
1
原创 Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)
在上一篇文章中设备树点RGB灯,我们介绍了如何通过设备树驱动来控制RGB LED,并使用简单的echo命令向设备文件写入字符来操作LED。本文将进一步探讨如何通过Qt图形界面应用程序来实现同样的功能,为用户提供一个直观、友好的操作界面。本文介绍了如何使用Qt框架开发一个RGB LED控制应用,实现了通过图形界面控制硬件设备的功能。相比于命令行操作,图形界面应用提供了更好的用户体验和更丰富的功能可能性。
2025-03-14 16:54:10
1100
3
原创 Linux驱动开发实战(四):设备树点RGB灯
在嵌入式Linux开发中,如何将硬件与软件紧密结合是一项基础却重要的技能。本文将详细讲解如何通过驱动程序控制i.MX6平台上的RGB LED,并深入分析从驱动代码、设备树配置到硬件原理图之间的关系提示:以下是本篇文章正文内容,下面案例可供参考编写驱动程序控制RGB LED配置设备树定义硬件资源根据原理图理解硬件连接与设备树配置的关系这种基于设备树的驱动开发方式具有良好的可移植性和可维护性,是现代嵌入式Linux开发的标准实践。
2025-03-13 21:59:16
1401
9
原创 Linux驱动开发实战(三):设备树入门(万字详解!建议收藏!Linux驱动开发必掌握!)
在上一篇文章中,我们介绍了Linux驱动开发中的虚拟平台总线(Platform Bus),先看->Platform 驱动的核心思想:代码分离!它为不存在实际总线的设备提供了统一的驱动框架。然而,在实际的嵌入式系统开发中,尤其是ARM架构下,我们还面临另一个问题:如何描述硬件信息并传递给内核?代码冗余:不同板卡的硬件信息都在内核中,即使不使用也会编译维护困难:任何硬件更改都需要修改内核代码并重新编译可扩展性差:新增硬件需要大量改动内核代码在根节点添加
2025-03-12 21:22:32
1313
3
原创 FreeRTOS学习(七):通过实例深入理解栈的作用(二)
看本文章前先看FreeRTOS学习(六)栈的作用(一)本章节讲栈的大小该如何定义,该给多少字节才够。
2025-03-07 21:19:50
673
3
原创 C++常见错误:[Error] ‘Status‘ does not name a type
在c++的项目练习的时候发生变量未定义问题 [Error] 'Status' does not name a type
2025-03-07 14:30:14
382
2
原创 电路基础:【1】PN结二极管制作电桥点亮LED灯
在本章中,我们将探讨如何通过PN结二极管制作电桥电路,并利用该电路点亮LED灯。LED(Light Emitting Diode,发光二极管)因其低能耗、高亮度、长寿命等优点广泛应用于电子设备中。我们将通过简单的电桥电路,展示如何利用二极管的整流特性,驱动LED。提示:以下是本篇文章正文内容,下面案例可供参考通过本实验,我们成功地使用PN结二极管制作了一个电桥电路,并利用该电路点亮了LED灯。在实际应用中,这种电桥电路可以用来将交流电转化为直流电,为各种电子设备提供电源。
2025-03-06 23:59:37
744
1
原创 Linux驱动开发实战(二):Platform 驱动的核心思想:代码分离!(完整代码!)
看这篇前先看字符型设备!!Platform 总线 是 Linux 内核为 片上系统(SoC)外设 设计的虚拟总线,用于管理 CPU 内部集成的硬件控制器(如 GPIO、I2C、SPI 等)。通过 platform_device 描述设备资源,platform_driver 实现驱动逻辑,二者通过总线匹配后完成硬件初始化。后面会讲设备树的相关内容
2025-03-05 19:25:07
1049
2
原创 C语言多级指针详解 - 通过实例理解一级、二级、三级指针
指针是C语言中的重要概念,而多级指针(指向指针的指针)往往让初学者感到困惑。本文将通过一个完整的示例程序,帮助大家理解多级指针的工作原理。这对后面数据结构的学习很有用!
2025-03-01 23:41:50
1148
1
原创 Linux驱动开发实战(一):LED控制驱动详解
字符设备(Character Device)是Linux中最基本的设备类型之一,它的特点是数据以字符流的方式被访问,像串口、键盘、LED等都属于字符设备。与块设备不同,字符设备不能随机访问,只能顺序读写。基本概念和原理完整的代码实现详细的流程图解实际操作通过本文的学习,大家应该能够掌握字符设备驱动的开发方法,并能够开发简单的字符设备驱动程序。
2025-02-27 23:41:11
1206
3
原创 FreeRTOS学习(六):通过实例深入理解栈的作用(不学FreeRTOS也值得看,对程序运行机制的理解很有帮助!)
在程序执行过程中,栈(Stack)扮演着至关重要的角色。本文将通过一个简单的C语言例子,结合其反汇编代码,来深入理解栈的作用。
2025-02-25 12:34:01
984
2
原创 FreeRTOS学习(五):ARM架构基础:寄存器、栈操作与指令详解(必看!超重要!建议收藏!)
ARM架构是当今最流行的嵌入式处理器架构之一。本文将详细介绍ARM架构中的核心概念,包括重要寄存器、基本指令和栈操作。因为FreeRTOS后面的讲解会用,所以现在给大家普及一下本文详细介绍了ARM架构的核心概念,包括:重要寄存器的功能和用途栈操作的基本原理常用指令的使用方法实际应用场景这些知识对于理解ARM架构程序执行流程、编写底层代码和驱动、以及程序调试和优化都具有重要意义重要寄存器系统通用寄存器(R0-R12):R0-R3常用于函数参数传递和返回值。
2025-02-23 22:28:14
1807
7
原创 FreeRTOS学习(四)FreeRTOS(动态)任务创建与删除及临界区保护
本文详细介绍了FreeRTOS动态任务创建删除的实现方法,以及在多任务环境下必要的临界区保护机制。通过正确使用这些机制,可以确保系统的稳定性和可靠性。
2025-02-23 01:25:08
688
原创 FreeRTOS学习(三) - 系统配置文件详解
在使用FreeRTOS时,FreeRTOSConfig.h是一个核心的配置文件,通过它我们可以灵活配置系统的各项功能。本文将详细讲解这个配置文件中的重要配置项,帮助大家更好地理解和使用FreeRTOS。FreeRTOSConfig.h配置文件的正确配置对系统的运行至关重要。我们需要根据具体的项目需求来合理配置各个参数,既要保证系统功能的完整性,又要考虑资源的合理利用。
2025-02-22 00:47:29
1122
2
原创 FreeRTOS学习(二):FreeRTOS的移植F1系列(保姆级教学!!!)
在上一篇文章中,我们介绍了如何获取FreeRTOS的源码。本文将详细讲解如何将FreeRTOS移植到我们的目标硬件平台上。本文详细介绍了FreeRTOS的移植过程,包括准备工作、具体步骤和验证方法。移植是使用RTOS的第一步,正确的移植对后续应用开发至关重要。
2025-02-21 00:51:26
997
1
原创 FreeRTOS学习(一):源码获取与文件结构
FreeRTOS是目前最流行的嵌入式实时操作系统之一开源、免费、代码精简、本文详细介绍了FreeRTOS源码的目录结构组织,文章通过目录结构图和详细表格,突出了各个文件的重要程度和功能特点,帮助读者理解FreeRTOS源码的整体架构,为后续深入学习提供了清晰的指引。接下来我会更新FreeRTOS的相关学习内容!!!
2025-02-18 16:27:17
402
3
原创 ESP32-S3相机开发实现拍照存储到SD卡(JPG格式)功能详解(含完整代码!!)
本文详细介绍如何使用ESP32-S3开发板实现拍照功能,并将照片保存到SD卡。主要包括摄像头配置、SD卡初始化、拍照触发、照片怎么转化为jpg格式、照片保存等核心功能的完整实现过程摄像头实时预览按键触发拍照照片自动编号存储JPEG格式保存到SD卡I2C、SPI外设通信本文介绍了ESP32-S3摄像头开发中JPEG转换和照片编号管理的实现方案。通过合理的文件命名规则和冲突处理机制,确保了照片存储的可靠性。同时,完善的错误处理和资源管理机制保证了系统的稳定运行。
2025-02-17 01:47:53
1213
6
原创 鸿蒙嵌入式 LiteOS 任务管理【1】
在本章中,我们将深入探讨鸿蒙嵌入式 LiteOS 中的任务管理机制。通过示例代码,我们将了解如何创建、管理和调度任务,以实现多任务处理。关于LiteOS的介绍在前一章有讲解,可以往前看FreeRTOS 与 LiteOS 的区别在使用 LiteOS 进行任务管理时,首先需要包含一些必要的头文件:提供标准输入输出功能。提供 POSIX 标准库的功能,如 sleep 函数。鸿蒙操作系统的初始化头文件。CMSIS-RTOS API 的头文件,提供实时操作系统的接口。
2025-02-14 15:11:03
904
3
原创 FreeRTOS 与 LiteOS 的区别
在嵌入式系统中,实时操作系统(RTOS)是至关重要的组成部分。随着物联网和嵌入式设备的广泛应用,市场上涌现了许多实时操作系统,其中 FreeRTOS 和 LiteOS 是两个重要的开源操作系统。尽管两者都属于实时操作系统,并且都提供了多任务调度、任务管理、同步和通信等核心功能,但它们在设计理念、应用场景以及实现方式上有着明显的差异。FreeRTOS 是一个广泛使用的开源实时操作系统,旨在为嵌入式系统提供轻量级的实时性能。
2025-02-13 17:15:42
1105
2
原创 ESP32S3实现利用Flash储存WiFi信息并自动连接与扫描功能ESP-IDF开发
在ESP32S3项目开发中,WiFi连接是一个基础且重要的功能。本文将介绍如何实现通过存储WiFi的信息来达到自动连接以及WiFi扫描功能,并着重讲解如何优化代码结构,避免重复初始化。
2025-01-23 00:52:51
1349
6
c++顺序表图书管理系统
2025-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人