系统-驱动
文章平均质量分 96
Linux 驱动相关知识;
野火少年
梦想成为中间层或者系统层开发工作,有缘人可推荐!!!
1)8年智能语音、IOT 产品开发经验,熟悉物联网平台、智慧安防、酒店客控系统
2)能够独立完成后端服务器开发、熟悉 Linux 系统、Android 系统
3)3年研发总监管理经验 1年半Framework层开发经验 10年Android应用开发经验
4)从事10年智能硬件相关产品开发:基于RK、全志、MTK 平台开发;主导各种类型服务、教育、安防机器人产品、物联网网关中控产品、背景音乐KTV娱乐产品、故事机平板、广告机、微投投影、各种商显、校话机等智能硬件产品。
5)物联网平台熟悉 米家、涂鸦系平台产品;熟悉中控智能家居产品。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux驱动-GPIO-动态切换引脚复用
动态切换 引脚复用这里测试了 引脚复用功能具体实验这里了用了一千的知识点,给设备对象写一个属性,通过属性来判断。当然也可以通过其它方法与驱动通信即可,实现驱动传参来进行公引脚复用功能。原创 2025-11-18 20:15:04 · 870 阅读 · 0 评论 -
Linux驱动-GPIO子系统与pinctrl子系统相结合
如果对于一个初学者来说,GPIO 子系统已经了解了部分,这里目标就是GPIO子系统结合pinctrl 子系统的知识理解。gpio 子系统理解,包括基本GPIO的APIpinctrl 子系统的理解,包括pinctrl 子系统的基本API函数作用调用时机获取引脚控制句柄驱动探测时查找引脚状态获取句柄后应用引脚状态需要切换状态时释放引脚控制句柄驱动卸载或出错时这里只是对gpio-pinctrl 两个子系统结合起来用的一个总结、规整知识点而已,实际上我们一直都是这么用的。原创 2025-11-18 10:41:19 · 633 阅读 · 0 评论 -
Linux 驱动-GPIO 三级节点获取和控制相关API
在 Linux 内核中,操作 GPIO(通用输入输出)主要有两套 API:一套是基于描述符(descriptor-based) 的现代接口,另一套是基于整数(legacy) 的传统接口。核心内容,对于二级节点下的三级节点的gpio 属性相关获取的基本方法,讨论、验证 api.获取到了三级节点下的gpio 描述符,剩下的就是递归、基本gpio 调用方法了。原创 2025-11-17 10:52:05 · 828 阅读 · 0 评论 -
Linux驱动-GPIO基本函数api
位置:在根节点下定义gpio 节点-my_gpio在pin-ctrl 设备树节点中定义my_gpio在根节点定义:声明一个GPIO资源。意思是“系统中存在这么一组GPIO引脚,它的控制权在这里定义”。在pinctrl节点中定义:配置这些GPIO引脚的电气特性和复用状态。意思是“当我的设备要使用这些引脚时,请把它们设置为以下具体状态(如上下拉、驱动强度、复用为GPIO功能等)”。GPIO控制器节点:描述硬件资源本身。内核需要知道有哪些GPIO端口、它们的地址在哪里,才能进行底层的读写操作。原创 2025-11-14 17:02:00 · 881 阅读 · 0 评论 -
驱动GPIO-获取单个gpio描述符
通过获取gpio ,初步认识几个函数gpiod_get(基于 Linux 内核 5.x 版本,位置通常在include/linux/gpio/consumer.h 和 drivers/gpio/gpiolib.h// 指向所属的GPIO设备// 状态标志位/* 关键标志位包括: */#define FLAG_REQUESTED 0 // 引脚已被请求#define FLAG_IS_OUT 1 // 引脚配置为输出#define FLAG_EXPORT 2 // 引脚已导出到sysfs。原创 2025-11-02 22:59:50 · 924 阅读 · 0 评论 -
将原理图中的一个引脚复用为gpio功能
需求很简单, 就是验证gpio函数功能,但是gpio功能必须有gpio口呀,那么这里就举例把某一个引脚复用为gpio,并设置自己的节点。会看基本的原理图:从地板原理图和核心板原理图中 来找自己相关的pin脚。设备树配置:pin脚可能默认的其它功能,比如I2c 功能,知道如何屏蔽和如何配置设备树,让系统加载时候复用为gpio功能pinctrl 配置: 根据需要的功能,用pinctrl 来实现配置GPIO1_A0_u,那么配置就是一一对应罢了。1)&gpio1- 引用GPIO控制器节点。原创 2025-11-02 16:15:39 · 686 阅读 · 0 评论 -
mem 设备控制 GPIO - C程序通过sysfs文件系统使用GPIO中断
通过io 操作实现点亮LED灯操作。但是IO操作的都是寄存器地址,所以先搞清楚寄存器知识点。int fd;/* 文件描述符 *//* 等待的事件 *//* 实际发生的事件 */了解 mem 控制GPIO的 这种机制C程序如何监听GPIO中断。原创 2025-10-11 17:33:46 · 1087 阅读 · 0 评论 -
操作寄存器来控制GPIO-点亮LED灯
通过io 操作实现点亮LED灯操作。但是IO操作的都是寄存器地址,所以先搞清楚寄存器知识点。简单来说,GPIO_SWPORT_DDR_L管一个GPIO Bank里编号小的那一半引脚是输入还是输出,而GPIO_SWPORT_DDR_H则管编号大的那一半。在实际编程中,需要注意:务必根据目标引脚在Bank中的具体编号(0-15还是16-31)来选择合适的寄存器。在配置寄存器时,请务必参考你所使用的具体RK芯片型号的官方技术参考手册,因为不同型号的地址偏移量可能会有差异。原创 2025-10-11 12:46:25 · 1140 阅读 · 0 评论 -
使用C程序通过sysfs文件系统控制gpio
上面一篇章介绍了使用命令通过sysfs文件系统控制GPIO。这种方式在实际开发中很常见,特别是调试阶段。那么如果在实战商用阶段,那肯定是需要用程序来控制的。所以,用可执行程序来控制GPIO的实际场景就很有意义了,可执行程序又是用C代码编写的,那么就需要写一个C代码编译成可执行程序来进行GPIO控制了。用C程序代码进行实际的gpio 控制实验read / write 操作,注意api 使用方式、模式等。原创 2025-10-10 00:15:00 · 700 阅读 · 0 评论 -
GPIO 控制和操作-使用命令通过sysfs文件系统控制GPIO
了解 sysfs 如何通过命令控制GPIO通过控制GPIO来控制LED灯亮灭GPIO 基本知识了解,通过命令控制使用命令通过sysfs文件系统控制GPIO,间接控制了LED灯亮、灭。原创 2025-09-29 18:05:15 · 689 阅读 · 0 评论 -
Linux驱动_热插拔_挂载U盘和TF卡
内核如何发送事件到用户空间uevent事件结构体netlink监听广播知识点机制 【暂未讲解,网上很多资料说明】那么实际热插拔在驱动上面怎么应用的呢?基本上这里要将的首先是知识点udev/mdev是具体的应用知识点,然后实际举例说明 如何配置驱动的。其实系统基于热插拔技术已经很完善了,写好了的。但是还是需要工程师配置规则,配置实现方式的。特性udevmdev全称mini-udev来源systemd 项目BusyBox 工具集体积/资源较大,功能完整极小,非常轻量应用场景。原创 2025-08-27 20:31:04 · 812 阅读 · 0 评论 -
驱动-热插拔-Netlink广播监听内核状态
前面了解过uevent事件,内核发送事件到用户空间。监听方式 使用udevadm命令 后台监听事件,查看打印内核信息。那么 我们看看其它方式来监听 内核信息开发者可以创建自己的 Netlink 协议号(或更高)来编写内核模块和对应的用户空间程序,实现自定义的、高性能的内核-用户通信。这在某些特殊需求的驱动或内核模块开发中非常有用。Netlink作用蛮多,这里举例用Netlink来实现 内核监听的一个实例,实际开发当中使用很多,能够快速获取内核相关信息,调试、开发等。原创 2025-08-25 18:30:00 · 1214 阅读 · 0 评论 -
驱动-热插拔-kset_uevent_ops知识点
前面了解了驱动-热插拔-内核发送事件到用户空间-uevent其实就是uevent 事件传递流程的过程,通过分析函数API,了解了整个流程。这里再次分析一下流程中uevent_ops结构体。这里其实进一步了解、熟悉了uevent事件中涉及到的结构体知识点,在实际应用中可以通过这个结构体进行过滤、定制uevent消息了。原创 2025-08-23 12:33:24 · 1397 阅读 · 0 评论 -
驱动-热插拔-内核发送事件到用户空间-uevent
通过uevent模拟内核发送事件来理解uevent机制通过uevent机制,进一步熟悉 数据模型框架。原创 2025-08-22 18:25:48 · 692 阅读 · 0 评论 -
驱动-在自定义总线上创建驱动-分析驱动注册流程
了解数据模型keyObjectkeyset;了解总线模型:设备、驱动、总线了解了 注册自己的总线并创建属性文件驱动总线bus注册流程分析platform平台总线注册流程分析在总线下注册设备及设备注册流程分析平台总线设备注册流程分析这里 就开始分析总线下驱动注册和总线下驱动注册流程分析。其实 就是以总线设备、总线驱动、总线为知识点展开理论知识,深化理解。之前了解过 自定义自己的总线、总线下注册设备、这里了解总线下注册自己的驱动。原创 2025-08-21 19:57:59 · 1038 阅读 · 0 评论 -
Linux驱动之platform 总线设备注册流程分析
了解数据模型keyObjectkeyset;了解总线模型:设备、驱动、总线了解了 注册自己的总线并创建属性文件驱动总线bus注册流程分析platform平台总线注册流程分析在总线下注册设备及设备注册流程分析这里 就开始分析platform平台总线设备注册流程分析。其实 就是以总线设备、总线驱动、总线为知识点展开理论知识,以platform平台总线为例展开进一步讨论研究知识点,深化理解。Linux驱动之platform总线设备注册流程分析流程,对比总线下设备注册,思路其实都是一样的。原创 2025-08-21 14:20:08 · 753 阅读 · 0 评论 -
在总线下注册设备及设备注册流程分析
前面了解过注册设备及设备注册流程分析,通过设备注册实验+注册流程中几个文件或文件夹创建来逐步分析流程。原创 2025-08-19 01:34:07 · 1106 阅读 · 0 评论 -
platform总线注册流程分析
通过了解设备模型 相关知识点:设备模型keyset/kobject;总线流程分析等来进一步了解平台总线注册流程。同步之前的platform 总线相关知识点串联起来。虽然是一个案例分析,分析到了平台总线匹配规则,但是还是从这个里面延伸了好多知识点,也对以前知识点进行了温习,知道所以然。这个对理解设备模型也很有帮助的。原创 2025-08-15 22:55:28 · 1049 阅读 · 0 评论 -
驱动-总线bus注册流程分析
在在总线目录下创建属性文件驱动-注册自己的总线并创建属性文件中,我们在总线目录 /sys/bus 目录下创建了自己的总线。总线下面有几个目录:devices/drivers/drivers_autoproobe/drivers_probe/uevent, 那么这几个目录是怎么来的。注册总线我们就调用了一个方法:bus_register,那么这个api 做了什么事情。解决上面两个疑惑,就是分析 bus_register 这个方法,里面到底做了什么,理解流程、分析过程,通过这些来初步理解总线。原创 2025-08-15 17:06:35 · 946 阅读 · 0 评论 -
驱动-注册自己的总线并创建属性文件
如前言所说,设备模型中包含总线、设备、驱动、类四个概念,这里我们从总线的角度看看总线的真面目总线bus 相关最基础知识了解创建总线、创建总线下的属性并读写知识点了解。原创 2025-08-14 16:03:22 · 1223 阅读 · 0 评论 -
驱动-设备模型kobject实现属性文件读写终篇
在了解过驱动-设备模型kobject实现属性文件读写功能驱动-设备模型kobject实现属性文件读写功能后,我们需要掌握以下几个知识点,进一步优化和掌握设备模型中读写属性的知识点。也就是这里我们需要讨论和阐述的知识点驱动-设备模型kobject实现属性文件读写功能中演示了两个属性读写,我们是通过kobj_type来定义成员结构体 属性操作。在属性中定义属性数组,同步声明数组每个属性的声明和权限;在sysfs_ops结构体里面定义读写方法。在读写方法中通过kobject。原创 2025-08-14 01:27:02 · 1175 阅读 · 0 评论 -
驱动-设备模型kobject实现属性文件读写功能
前面了解了设备模型基础,设备模型框架kobject/kset 的创建,那么针对kobject 属性如何读写?这里就讲这个知识点。release 参数结构体回调:释放结构体时候回调,前面一节Linux驱动-引用计数器kref篇已经验证过。sysfs_ops 如同之前知识点 像是文件相关操作,大概那就是kobject 的一些读写操作attribute 不就是属性相关操作嘛了解读写属性操作基本步骤了解、学习机构体 kobj_type。原创 2025-08-13 18:46:49 · 646 阅读 · 0 评论 -
Linux驱动-引用计数器kref
引用计数器()是一种内存管理技术,用于跟踪对象或资源的引用数量。它通过在对象被引用时增加计数值,并在引用被释放时减少计数值,以确定何时可以安全地释放对象或资源。对象或资源被创建时,引用计数器初始化为 1。当有新的引用指向对象或资源时,引用计数器增加。当引用不再指向对象或资源时(引用被删除、超出作用域等),引用计数器减少。当引用计数器的值为 0 时,表示没有任何引用指向对象或资源,可以安全地释放对象或资源,并进行相关的清理操作。原创 2025-08-13 01:18:34 · 966 阅读 · 0 评论 -
设备模型基本框架-kobject-kset
这里是kobject/kset 基础知识了解,也是设备模型开篇。设备模型可以让大家更好理解前面学习的知识,也可以为后面知识点做铺垫。了解设备模型基础知识。原创 2025-08-12 18:03:33 · 960 阅读 · 0 评论 -
驱动_ConfigFS多级目录操作
前面的知识点从ConfigFS概念 ->ConfigFS基础必备 ->ConfigFS注册子系统->ConfigFS注册group组->ConfigFS注册Item->ConfigFS释放资源->再到这里ConfigFS属性读取->ConfigFS实现多级目录创建。其实都是从一个简单例子,一步一步到各个知识点,对同一个实例不断添加知识点的功能。这里就开始理解属性相关知识了。其实就是要在子group中继续创建group实现这样的一个功能或者需求。理解组group创建子组group方案,通过结构体配置实现。原创 2025-08-11 18:46:05 · 949 阅读 · 0 评论 -
Linux驱动-ConfigFS-读写属性操作
前面的知识点从ConfigFS 概念 -> ConfigFS基础必备 ->ConfigFS注册子系统->ConfigFS注册group组->ConfigFS 注册Item-> ConfigFS 释放资源->再到这里ConfigFS 属性读取。其实都是从一个简单例子,一步一步到各个知识点,对同一个实例不断添加知识点的功能。这里就开始理解属性相关知识了。如上分析了 configfs_attribute 属性定义的属性数组,那么属性如何定义呢?我个人分析如下;内核属性如果生成成功就是这个 name 属性。原创 2025-08-11 17:51:21 · 1084 阅读 · 0 评论 -
驱动-ConfigFS-释放资源篇
这里对ConfigFS 体系资源回收知识点做一个了解、熟悉。。这里就是具体去了解 这两个api 关联的知识点。这里其实就是讲了一个知识点:ConfigFS 里面资源释放机制,针对性的对drop_item和release 方法结构体的了解和被调用的结构体的知识点回顾。原创 2025-08-10 00:15:00 · 2231 阅读 · 0 评论 -
驱动-设备数插件-创建Item
ConfigFS重要的数据结构设备树、设备树插件 这个树的概念已经ConfigFS体系是怎么由重要数据结构组成。每个数据结构功能ConfigFS里面创建groupConfigFS基础实验等但是:基于上一篇知识点创建新的子group后,在新的子group下面并不能够实现mkdir命令等?那是因为我们驱动代码里面对于设备树插件里面结构体使用过程中没有声明回调方法。说白了 这个创建会同步调用到configFS里面的动态创建的方法。先看这里整理的内容其实都是通过需求设备数插件-创建Item。原创 2025-08-09 01:50:48 · 848 阅读 · 0 评论 -
驱动-设备树插件-注册group
前面设备树插件相关的基本知识点可供参考Linux驱动-设备树插件语法设备树插件基础必备驱动-设备树插件注册子系统设备树插件-注册group容器实验进一步理解了子系统和组的概念、联系、如何注册的,组注册到子系统通过这个简单的新增子group案例,再次分析细节基础知识。原创 2025-08-09 00:15:00 · 2259 阅读 · 0 评论 -
驱动-设备树插件注册子系统
前面了解了设备树插件语法,设备树插件基础知识,特别是在基础知识中或者其它设备树插件入门篇中 了解了ConfigFS体系基础知识和ConfigFS 结构体。那么 接下来就是需要一步一步根据结构体实现业务流程,最终实现内核配置编程。这里仅从顶层子系统 案例来了解、学习 子系统注册知识点。实际简单案例说明顶层子系统的注册 演示子系统注册演示,最终结果在路径下看到我们注册的子系统简单demo 演示,理解子系统。重温ConfigFS 重要结构体。理解为什么属性名就是那些。原创 2025-08-08 00:02:32 · 1044 阅读 · 0 评论 -
设备树插件基础必备
这里需要了解指令:`cat /proc/filesystemscat /proc/filesystems 命令用于 列出当前 Linux 内核支持的文件系统类型。显示已注册的文件系统:输出包含内核编译时支持或运行时动态加载的所有文件系统类型(如 ext4, xfs, btrfs, proc, tmpfs 等)。区分内核原生支持与模块加载的文件系统:如果一行开头有 nodev,表示该文件系统不需要物理设备(如虚拟文件系统 proc, sysfs, tmpfs)。原创 2025-08-08 00:02:24 · 923 阅读 · 0 评论 -
Linux驱动-设备树插件语法
如果你对设备树已经了解,就能解决工作上决绝大多数设备数相关问题,这里了解一个新的知识点,设备树相关的知识:设备树插件设备树插件(Device Tree Overlay)是Linux设备树机制的扩展,允许在不修改原始设备树(DTB)的情况下动态添加或修改设备节点。主要特点动态性:可以在系统运行时加载和卸载模块化:将硬件配置分解为可管理的部分非侵入式:不需要重新编译整个设备树可重用性:同一插件可用于不同平台设备树插件基本语法首先添加插件头部声明/dts-v1/;/plugin/;原创 2025-08-05 01:49:20 · 690 阅读 · 0 评论 -
总结-平台总线-中断-gpio-pinctrl-设备树
前面了解熟悉了中断、平台总线、gpio、pinctrl、设备树 知识点蛮多的,前面了解后面遗忘,为加深理解,知识点穿插在一起,这里小结下RK3568-中断-触摸屏中断了解了中断类型、中断触发类型、中断号IRQ、通过原理图查看触摸屏或者外设的 引脚标号如TP_INT_L_GPIO3_A5常用中断函数 gpio_to_irq 、request_irq 请求中断、free_irq 释放中断。原创 2025-08-02 00:15:00 · 1782 阅读 · 0 评论 -
驱动设备数-of函数-获取中断资源
前面了解了of 函数获取设备节点、设备属性 相关内容,这里通过 of 函数获取中断相关信息这里还是通过设备树,了解设备树获取中断资源方案进一步了解中断-设备树吧基础知识务必掌握,后面才能熟练运用核心方法platform_get_irq、irq_get_irq_data、gpio_to_irq。原创 2025-08-01 07:13:26 · 1006 阅读 · 0 评论 -
Linux驱动-设备树-获取节点属性of函数分析
我们前面一致再看设备树关联的内容:设备树语法、设备树节点、设备树配置、设备树中设备和驱动匹配等。总言之 设备数就是来描述设备属性的配置文件、映射文件。那么就像服务器、前端开发那样 js、json、dom 最终都是需要解析拿到节点数据的。前面也初步了解了 device_node 等基本知识。这里其实就是获取 节点的相关知识,同时也理解相关的获取属性的相关知识。这里对于of 函数 api 的了解、测试、简单应用,后面实际开发中会经常用到。只有自己测试验证过,基础打好了后面实际开发才能灵活运用。原创 2025-08-01 00:15:00 · 1039 阅读 · 0 评论 -
驱动开发-开发工具-VsCode 提高生产效率_代码补全
VsCode 只是一款编辑器、IDE开发工具而已,但是我自己这么多年用的AS、IDEA、PCharm比较多,对VS 其实不太熟悉。但是VS强大确实如此,好多编程语言都用它这里主要针对自己在学习 驱动内核过程中,需要引入指定的文件夹下的头文件并可以有代码提示的功能,加快学习、开发效率这里主要是为了实现代自动补全功能,无论在Linux、windows、mac 环境下,配置方式基本一致。原创 2025-07-31 18:30:00 · 1005 阅读 · 0 评论 -
驱动-设备树和驱动自动匹配
前面通过设设备树了解过设备树语法、中断、时钟、GPIO、pinctrl,设备树描述设备属性,同时部分硬件设备描述放在设备树里面。对于硬件外设等接口放到设备树中,在平台总线篇章 是需要驱动和设备匹配的。那么现在的问题就是如何在设备树中描述硬件信息,驱动起来后自动和设备树中的设备匹配起来,建立通信桥梁?这里我们终于从之前了解的设备树属性关联延伸到具体设备树到设备的实战了解了设备树到device及device和driver 匹配过程。原创 2025-07-31 00:15:00 · 1656 阅读 · 0 评论 -
Linux驱动设备树-pinctrl篇
Pinmux(引脚复用)是指在系统中配置和管理引脚功能的过程。在许多现代集成电路中,单个引脚可以具有多个功能,例如作为 GPIO、UART、SPI 或 I2C 等。通过使用引脚复用功能,可以在这些不同的功能之间切换从右边往左边看,USB_HOST_PWREN_H_GPIO0_A6 这个引脚,它可以有四个功能预选项吧,看你自己怎么配置。可以作为 左边:GPU_PWREN、SATA_CP_POO、PCIE30X2_CLKREQn_MO、GPIO0_A6_d 中其中一个功能的脚,这;原创 2025-07-30 01:59:30 · 1333 阅读 · 0 评论 -
Linux驱动设备树-GPIO分析
了解了gpio 在设备树中的几个属性,会写gpio相关的设备树对比interrupt 中断关联的设备树,有相似之处为后面设备树的应用打一个基础。原创 2025-07-30 00:15:00 · 1082 阅读 · 0 评论 -
Linux驱动设备树-时钟篇
属性用途常见位置定义时钟控制器的输出参数数量时钟控制器节点固定时钟源的频率固定时钟节点(如晶振)需动态配置的时钟列表时钟消费者节点动态配置的目标频率时钟消费者节点显式声明时钟控制器的输出索引时钟控制器节点动态配置时钟的父源时钟消费者节点clocks外设引用的时钟列表时钟消费者节点为外设引用的时钟命名时钟消费者节点了解、熟悉 设备树中时钟模块的配置对于实际中设备树配置中的时钟模块需要看到能够读懂并根据实际需求进行配置。理解这些属性后,可以更灵活地描述硬件时钟关系。原创 2025-07-29 08:00:00 · 1696 阅读 · 0 评论
分享