- 博客(512)
- 资源 (145)
- 问答 (2)
- 收藏
- 关注
原创 platform总线注册流程分析
通过了解设备模型 相关知识点:设备模型keyset/kobject;总线流程分析等来进一步了解平台总线注册流程。同步之前的platform 总线相关知识点串联起来。虽然是一个案例分析,分析到了平台总线匹配规则,但是还是从这个里面延伸了好多知识点,也对以前知识点进行了温习,知道所以然。这个对理解设备模型也很有帮助的。
2025-08-15 22:55:28
917
原创 驱动-总线bus注册流程分析
在在总线目录下创建属性文件驱动-注册自己的总线并创建属性文件中,我们在总线目录 /sys/bus 目录下创建了自己的总线。总线下面有几个目录:devices/drivers/drivers_autoproobe/drivers_probe/uevent, 那么这几个目录是怎么来的。注册总线我们就调用了一个方法:bus_register,那么这个api 做了什么事情。解决上面两个疑惑,就是分析 bus_register 这个方法,里面到底做了什么,理解流程、分析过程,通过这些来初步理解总线。
2025-08-15 17:06:35
779
原创 驱动-注册自己的总线并创建属性文件
如前言所说,设备模型中包含总线、设备、驱动、类四个概念,这里我们从总线的角度看看总线的真面目总线bus 相关最基础知识了解创建总线、创建总线下的属性并读写知识点了解。
2025-08-14 16:03:22
1096
原创 驱动-设备模型kobject实现属性文件读写终篇
在了解过驱动-设备模型kobject实现属性文件读写功能驱动-设备模型kobject实现属性文件读写功能后,我们需要掌握以下几个知识点,进一步优化和掌握设备模型中读写属性的知识点。也就是这里我们需要讨论和阐述的知识点驱动-设备模型kobject实现属性文件读写功能中演示了两个属性读写,我们是通过kobj_type来定义成员结构体 属性操作。在属性中定义属性数组,同步声明数组每个属性的声明和权限;在sysfs_ops结构体里面定义读写方法。在读写方法中通过kobject。
2025-08-14 01:27:02
1094
原创 驱动-设备模型kobject实现属性文件读写功能
前面了解了设备模型基础,设备模型框架kobject/kset 的创建,那么针对kobject 属性如何读写?这里就讲这个知识点。release 参数结构体回调:释放结构体时候回调,前面一节Linux驱动-引用计数器kref篇已经验证过。sysfs_ops 如同之前知识点 像是文件相关操作,大概那就是kobject 的一些读写操作attribute 不就是属性相关操作嘛了解读写属性操作基本步骤了解、学习机构体 kobj_type。
2025-08-13 18:46:49
584
原创 Linux驱动-引用计数器kref
引用计数器()是一种内存管理技术,用于跟踪对象或资源的引用数量。它通过在对象被引用时增加计数值,并在引用被释放时减少计数值,以确定何时可以安全地释放对象或资源。对象或资源被创建时,引用计数器初始化为 1。当有新的引用指向对象或资源时,引用计数器增加。当引用不再指向对象或资源时(引用被删除、超出作用域等),引用计数器减少。当引用计数器的值为 0 时,表示没有任何引用指向对象或资源,可以安全地释放对象或资源,并进行相关的清理操作。
2025-08-13 01:18:34
889
原创 设备模型基本框架-kobject-kset
这里是kobject/kset 基础知识了解,也是设备模型开篇。设备模型可以让大家更好理解前面学习的知识,也可以为后面知识点做铺垫。了解设备模型基础知识。
2025-08-12 18:03:33
888
原创 驱动_ConfigFS多级目录操作
前面的知识点从ConfigFS概念 ->ConfigFS基础必备 ->ConfigFS注册子系统->ConfigFS注册group组->ConfigFS注册Item->ConfigFS释放资源->再到这里ConfigFS属性读取->ConfigFS实现多级目录创建。其实都是从一个简单例子,一步一步到各个知识点,对同一个实例不断添加知识点的功能。这里就开始理解属性相关知识了。其实就是要在子group中继续创建group实现这样的一个功能或者需求。理解组group创建子组group方案,通过结构体配置实现。
2025-08-11 18:46:05
877
原创 Linux驱动-ConfigFS-读写属性操作
前面的知识点从ConfigFS 概念 -> ConfigFS基础必备 ->ConfigFS注册子系统->ConfigFS注册group组->ConfigFS 注册Item-> ConfigFS 释放资源->再到这里ConfigFS 属性读取。其实都是从一个简单例子,一步一步到各个知识点,对同一个实例不断添加知识点的功能。这里就开始理解属性相关知识了。如上分析了 configfs_attribute 属性定义的属性数组,那么属性如何定义呢?我个人分析如下;内核属性如果生成成功就是这个 name 属性。
2025-08-11 17:51:21
947
原创 驱动-ConfigFS-释放资源篇
这里对ConfigFS 体系资源回收知识点做一个了解、熟悉。。这里就是具体去了解 这两个api 关联的知识点。这里其实就是讲了一个知识点:ConfigFS 里面资源释放机制,针对性的对drop_item和release 方法结构体的了解和被调用的结构体的知识点回顾。
2025-08-10 00:15:00
2147
原创 驱动-设备数插件-创建Item
ConfigFS重要的数据结构设备树、设备树插件 这个树的概念已经ConfigFS体系是怎么由重要数据结构组成。每个数据结构功能ConfigFS里面创建groupConfigFS基础实验等但是:基于上一篇知识点创建新的子group后,在新的子group下面并不能够实现mkdir命令等?那是因为我们驱动代码里面对于设备树插件里面结构体使用过程中没有声明回调方法。说白了 这个创建会同步调用到configFS里面的动态创建的方法。先看这里整理的内容其实都是通过需求设备数插件-创建Item。
2025-08-09 01:50:48
742
原创 驱动-设备树插件-注册group
前面设备树插件相关的基本知识点可供参考Linux驱动-设备树插件语法设备树插件基础必备驱动-设备树插件注册子系统设备树插件-注册group容器实验进一步理解了子系统和组的概念、联系、如何注册的,组注册到子系统通过这个简单的新增子group案例,再次分析细节基础知识。
2025-08-09 00:15:00
2162
原创 驱动-设备树插件注册子系统
前面了解了设备树插件语法,设备树插件基础知识,特别是在基础知识中或者其它设备树插件入门篇中 了解了ConfigFS体系基础知识和ConfigFS 结构体。那么 接下来就是需要一步一步根据结构体实现业务流程,最终实现内核配置编程。这里仅从顶层子系统 案例来了解、学习 子系统注册知识点。实际简单案例说明顶层子系统的注册 演示子系统注册演示,最终结果在路径下看到我们注册的子系统简单demo 演示,理解子系统。重温ConfigFS 重要结构体。理解为什么属性名就是那些。
2025-08-08 00:02:32
1010
原创 设备树插件基础必备
这里需要了解指令:`cat /proc/filesystemscat /proc/filesystems 命令用于 列出当前 Linux 内核支持的文件系统类型。显示已注册的文件系统:输出包含内核编译时支持或运行时动态加载的所有文件系统类型(如 ext4, xfs, btrfs, proc, tmpfs 等)。区分内核原生支持与模块加载的文件系统:如果一行开头有 nodev,表示该文件系统不需要物理设备(如虚拟文件系统 proc, sysfs, tmpfs)。
2025-08-08 00:02:24
828
原创 MTK-Android 系统拷贝预置资源
教育定制类客户:预置大量的音视频课件资源,客户应用可以直接获取系统课程资源,比如视频、文本、文档等静默安装功能:系统第一次开机时候需要静默安装部分app,那么这部分apk 资源需要提前预置到系统内部。系统第一次开机时候检测到应用未安装就进行安装开机启动可执行文件:对应一些二进制可执行文件,开机自启动服务或者执行这个二进制脚本需求。比如:开机加载开机动画,第一次拷贝需求:类似于系统一些必备资源,如开机动画,系统也会先预置到系统里面去。这里主要认识系统拷贝文件的方案和几种不同的场景。
2025-08-05 19:00:00
879
原创 Linux驱动-设备树插件语法
如果你对设备树已经了解,就能解决工作上决绝大多数设备数相关问题,这里了解一个新的知识点,设备树相关的知识:设备树插件设备树插件(Device Tree Overlay)是Linux设备树机制的扩展,允许在不修改原始设备树(DTB)的情况下动态添加或修改设备节点。主要特点动态性:可以在系统运行时加载和卸载模块化:将硬件配置分解为可管理的部分非侵入式:不需要重新编译整个设备树可重用性:同一插件可用于不同平台设备树插件基本语法首先添加插件头部声明/dts-v1/;/plugin/;
2025-08-05 01:49:20
559
原创 总结-平台总线-中断-gpio-pinctrl-设备树
前面了解熟悉了中断、平台总线、gpio、pinctrl、设备树 知识点蛮多的,前面了解后面遗忘,为加深理解,知识点穿插在一起,这里小结下RK3568-中断-触摸屏中断了解了中断类型、中断触发类型、中断号IRQ、通过原理图查看触摸屏或者外设的 引脚标号如TP_INT_L_GPIO3_A5常用中断函数 gpio_to_irq 、request_irq 请求中断、free_irq 释放中断。
2025-08-02 00:15:00
1685
原创 驱动设备数-of函数-获取中断资源
前面了解了of 函数获取设备节点、设备属性 相关内容,这里通过 of 函数获取中断相关信息这里还是通过设备树,了解设备树获取中断资源方案进一步了解中断-设备树吧基础知识务必掌握,后面才能熟练运用核心方法platform_get_irq、irq_get_irq_data、gpio_to_irq。
2025-08-01 07:13:26
898
原创 Linux驱动-设备树-获取节点属性of函数分析
我们前面一致再看设备树关联的内容:设备树语法、设备树节点、设备树配置、设备树中设备和驱动匹配等。总言之 设备数就是来描述设备属性的配置文件、映射文件。那么就像服务器、前端开发那样 js、json、dom 最终都是需要解析拿到节点数据的。前面也初步了解了 device_node 等基本知识。这里其实就是获取 节点的相关知识,同时也理解相关的获取属性的相关知识。这里对于of 函数 api 的了解、测试、简单应用,后面实际开发中会经常用到。只有自己测试验证过,基础打好了后面实际开发才能灵活运用。
2025-08-01 00:15:00
944
原创 驱动开发-开发工具-VsCode 提高生产效率_代码补全
VsCode 只是一款编辑器、IDE开发工具而已,但是我自己这么多年用的AS、IDEA、PCharm比较多,对VS 其实不太熟悉。但是VS强大确实如此,好多编程语言都用它这里主要针对自己在学习 驱动内核过程中,需要引入指定的文件夹下的头文件并可以有代码提示的功能,加快学习、开发效率这里主要是为了实现代自动补全功能,无论在Linux、windows、mac 环境下,配置方式基本一致。
2025-07-31 18:30:00
909
原创 驱动-设备树和驱动自动匹配
前面通过设设备树了解过设备树语法、中断、时钟、GPIO、pinctrl,设备树描述设备属性,同时部分硬件设备描述放在设备树里面。对于硬件外设等接口放到设备树中,在平台总线篇章 是需要驱动和设备匹配的。那么现在的问题就是如何在设备树中描述硬件信息,驱动起来后自动和设备树中的设备匹配起来,建立通信桥梁?这里我们终于从之前了解的设备树属性关联延伸到具体设备树到设备的实战了解了设备树到device及device和driver 匹配过程。
2025-07-31 00:15:00
1567
原创 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
980
原创 Linux驱动设备树-GPIO分析
了解了gpio 在设备树中的几个属性,会写gpio相关的设备树对比interrupt 中断关联的设备树,有相似之处为后面设备树的应用打一个基础。
2025-07-30 00:15:00
832
原创 Linux驱动设备树-时钟篇
属性用途常见位置定义时钟控制器的输出参数数量时钟控制器节点固定时钟源的频率固定时钟节点(如晶振)需动态配置的时钟列表时钟消费者节点动态配置的目标频率时钟消费者节点显式声明时钟控制器的输出索引时钟控制器节点动态配置时钟的父源时钟消费者节点clocks外设引用的时钟列表时钟消费者节点为外设引用的时钟命名时钟消费者节点了解、熟悉 设备树中时钟模块的配置对于实际中设备树配置中的时钟模块需要看到能够读懂并根据实际需求进行配置。理解这些属性后,可以更灵活地描述硬件时钟关系。
2025-07-29 08:00:00
1345
原创 Linux-驱动-设备树实案例分析-中断
这里写了一个中断的设备树 并 理解了相关语法、知识了解、理解 设备树中,中断相关属性interrupts、interrupt-controller、interrupt-parent、#interrupt-cells核心的东西 知道每个参数怎么配置比如:compatible、interrupt-parent 、interrupts、中断号,如何在系统里面去找。
2025-07-29 00:15:00
1143
原创 驱动-设备树-基本语法
我理解设备树就是一个配置文件,如上层应用或者服务器开发中的配置文件,太像了,只是语法不一样,描述的内容都是底层相关的,属性不一样。基于属性、语法稍微不一样,刚接触时候确实很难理解。多看看,多接触,多理解,这样才能为后续开发打好基础。这里只是对设备树知识的基本了解、设备树语法、节点属性基本了解这些都是基础中的基础,了解和熟悉基础知识后 后面才能延伸扩展自己的知识技能,基础打牢。
2025-07-26 15:45:00
1138
原创 驱动-平台总线-probe
驱动-平台总线-platform设备注册platform驱动注册篇的文章中,我们理解了platform 总线,了解了platform driver和platform device 的注册,配对 知识。
2025-07-25 00:58:39
947
原创 驱动-平台总线-platform设备注册platform驱动注册篇
平台总线(Platform Bus)是 Linux 内核中用于管理那些不直接连接到标准物理总线(如 PCI、USB 等)的设备的一种虚拟总线机制。它主要用于片上系统(SoC)中的外设和伪设备。平台总线(Platform Bus)是 Linux 内核中用于管理那些不直接连接到标准物理总线(如 PCI、USB 等)的设备的一种虚拟总线机制。它主要用于片上系统(SoC)中的外设和伪设备。当系统注册一个平台设备时, 平台总线会寻找与之匹配的平台驱动。它会遍历已注册的平。
2025-07-25 00:15:00
866
原创 中断线程化
首先还是特别有必要从概念上来理解这个知识点,如果概念都没有理解清除,何从去理解这个知识点存在的意义呢?我自己看很多文档,特别第一次看的时候,都是云里雾里,很难理解这到底是个什么东西,当我自己熟悉了理解了发现如此简单,一个简单机制而已。前面我们了解的知识点:中断触发了 中断函数,可以理解为中断上文。那么中断下文可以通过 tasklet - 共享queue-自定义queue-queue队列管理 来实现延时阻塞处理。
2025-07-24 18:30:00
1000
原创 驱动-并发管理工作队列
假设已经了解了共享工作队列,自定义工作队列,突然有个知识点 并发管理工作队列。从字眼上看就是并发处理相关的知识点吧。个人理解:当我们熟悉这个知识点后,在实际应用上面和自定义工作队列就是api 上面创建不一样而已。核心还是在于这样创建 并发管理工作队列 的意义、内核处理方式需要熟悉。并发管理工作队列,字面上讲 其实是一种队列的类型,和自定义工作队列一样定义,创建方式不一样而已。需要严格隔离的实时驱动必须保证特定优先级的任务运行在较旧内核版本(2.6.36之前)有特殊调度需求的专用硬件。
2025-07-24 01:25:04
953
原创 Linux驱动-中断-工作队列传参
假使已经对中断基本内容熟悉,中断共享工作队列、中断自定义工作队列按照以往经验,传参其实就是定义一个结构体,将必要数据、必要结构体封装一层,都是通过结构体来实现的。通过结构体,这个结构体要么是系统自定义、要么是系统提供的一个结构体数据结构。参数传递和结构体里面的结构体调用、赋值、获取 都是通过这个封装的结构体调用来实现。container_of,来实现结构体成员指针来获取包含该成员的结构体的指针,进而输出传递过来的参数值int a;int b;
2025-07-23 19:00:00
571
原创 Linux驱动-中断-自定义工作队列
create_workqueue():创建多线程工作队列(每个CPU一个工作者线程)create_singlethread_workqueue():创建单线程工作队列alloc_workqueue():更灵活的创建工作队列方式(推荐新代码使用)参数 name 是创建的工作队列的名字。使用这个函数可以给每个 CPU 都创建一个 CPU 相关的工作队列。创建成功返回一个 struct workqueue_struct 类型指针,创建失败返回 NULL。
2025-07-23 18:30:00
779
原创 Linux驱动-中断-共享队列
定义工作 → DECLARE_WORK 或 INIT_WORK编写处理函数 → 可以调用可能睡眠的函数调度工作 → schedule_work()(共享队列)清理工作 → cancel_work_sync()队列相关知识先了解到这里,在这里对比 tasklet 使用方式上 基本一致的。
2025-07-22 23:45:00
1607
原创 RK3568中断-tasklet
/ 定义 tasklet 处理函数// Tasklet 处理逻辑// ...} // 静态初始化 tasklet// 驱动程序的其他代码my_tasklet 是 tasklet 的名称, my_tasklet_handler 是 tasklet 的处理函数, 0是传递给处理函数的参数。但是需要注意的是, 使用 DECLARE_TASKLET 静态初始化的 tasklet无法在运行时动态销毁, 因此在不需要 tasklet 时, 应该避免使用此方法。
2025-07-22 21:30:00
1697
原创 UVC for USBCamera in Android - 篇二
假设已经对UVC了解,已经对能够写一个demo,或者用uvc 官方提供的demo 进行开发。但是遇到客户问题还是一知半解,那就还是有必要对 UVC Java层源码有一个了解,特别是流程上的,这样才能遇到问题针对性解决!然后有自己的思考和一些想法。类作用USBMonitor监听 USB 设备插拔,管理权限底层 USB 通信(控制传输)USB 设备连接状态回调封装 UVCCamera 操作(预览、拍照、录像)后台线程执行摄像头操作。
2025-07-18 22:00:00
670
原创 RK3568-中断-触摸屏中断
在 Linux 驱动开发中,中断(Interrupt) 是一种重要的机制,用于处理硬件设备与 CPU 之间的异步事件(如数据到达、设备状态变化等)。Linux 内核提供了完善的中断处理框架,驱动开发者需要遵循内核的 API 来注册和处理中断。通过触摸屏中断程序及中断程序需要了解的基本知识、api 来初步熟悉中断。有人会问:去掉原有屏幕驱动不就是menuconfig 吗,为什么还整一个其它的文件。
2025-07-18 00:15:00
911
原创 限制apk使用时长第二篇-限制/拦截Apk启动-应用锁功能
看到手机端有应用限时使用;之前有客户提到过教育软件限制使用时长的客需,后面负责这个客需的同事没有搞定,没有去实现,这个客需点废弃掉了那么自己就私下里去实现这样的一个功能。这个方法允许设置一个 IActivityController 接口的实现,AMS 会在关键的活动生命周期事件发生时回调该控制器。这通常用于:系统测试框架(如 Monkey 测试)调试工具特殊的系统监控场景上面着重分析、了解了AMS里面的setActivityController 方法,以此功能实现 限时应用中拦截应用功能。
2025-07-15 21:00:00
1108
去除开机动画结束后显示正在启动;去掉开机后进入Launcher前黑屏;延时实现开机动画播放完全
2024-08-15
Rk3568 Android12 SystemUI 源码
2024-08-13
SystemUI 截屏快捷功能添加
2024-08-12
SystemUI QS 面板新增截屏功能按钮资源代码
2024-08-11
RK3568源码编译手册:Android11、12源码;Linux、Linux-5.10内核源码
2024-08-07
3568开发板驱动开发指南
2024-08-07
springbootstudy.zip
2020-01-31
springboot2_mybatis_durid_pager.zip
2020-02-02
cookie_session.zip
2019-11-07
编辑器 Notepad++.zip
2020-03-28
USBCamera-Camera1 预览、拍照、录像
2025-03-07
MTK Android12/13 系统设置 适配遥控器
2025-01-13
日常使用属性配置文件文件-device.mk-gms.mk.zip
2024-12-12
开机向导源码: 2套开机向导源码+MTK 开机向导定制思路指导
2024-12-11
开机向导定制资源,自定义开机向导资源apk、开机向导apk
2024-12-10
Framework开机自启服务-应用-自动执行-循环检测功能
2024-12-04
定时开关机功能,实现定时开关机功能
2024-10-21
TurnOffReboot.zip Android 实现重启、关机 功能
2024-09-15
MTKCamera预览、成像、拉伸代码简要片段
2024-09-10
Rk Android12 Setting 源代码
2024-08-15
无障碍服务工具类,在源码基础上添加日志,方便check 流程
2024-08-16
手环数据采集(心率、血压、步数、健康参数)
2016-03-18
Android开发时获得开启的通知
2014-12-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人