- 博客(1492)
- 资源 (33)
- 收藏
- 关注
原创 RK3399平台入门到精通系列讲解 - 总目录
欢迎大家来到内核笔记的《RK3399平台开发入门到精通系列讲解》,开始前博主先列出RK3399平台学习的大纲,同时这也可以作为大家学习RK3399内核与安卓框架的参考。下面蓝字都是传送门,点击进入即可:...
2020-11-17 23:20:48
101347
207
原创 RK3568平台开发系列讲解(显示篇)RGB 接口时序详解
正极性 (Active High / Positive):正常状态:低电平有效状态:高电平负极性 (Active Low / Negative):正常状态:高电平有效状态:低电平HSYNC 正极性:正常:______脉冲: |¯¯¯¯¯¯|↑ ↑开始 结束HSYNC 负极性:正常:¯¯¯¯¯¯脉冲: |______|↑ ↑开始 结束。
2026-06-08 22:44:57
19
原创 RK3568平台开发系列讲解(显示篇)LCD 工作原理与显示技术基础
液晶显示器液晶分子在电场作用下改变排列方向 → 控制光线透过率 → 显示不同亮度│ LCD 面板结构(简化) ││ ││ [背光层] → 发出白光 ││ ↓ ││ [偏振片1] → 只允许特定方向光线通过 ││ ↓ ││ [液晶层] → 电压控制透光率 ││ ↓ ││ [彩色滤光片] → RGB 三原色 ││ ↓ ││ [偏振片2] → 最终成像 │。
2026-06-08 22:40:17
164
原创 RK3568平台开发系列讲解(SPI篇)SPI通信协议
流程:选中设备→等待(如需要)→时钟同步→双向传输→完成→结束。数据交换:像接力赛一样,双方同时交换数据位,直到全部完成。寄存器作用:临时存储待发送/接收的数据,按位逐次传输。关键规则:未被选中的设备完全“隐身”,不参与任何操作。
2026-05-21 22:01:57
50
原创 K3568平台开发系列讲解(中断篇)自定义工作队列的使用
endifatomic_long_t data:存储工作项数据的字段,支持安全的多线程访问struct list_head entry:工作项在队列中的链表节点,用于将工作项连接到队列中work_func_t func:工作项执行时调用的处理函数创建队列:用create_workqueue或create_singlethread_workqueue。添加工作:用queue_work_on将工作项放入队列。取消工作:用cancel_work_sync终止未执行的工作。
2026-05-19 23:25:59
64
原创 K3568平台开发系列讲解(中断篇)中断下半部:共享工作队列的使用
本文介绍了Linux内核中的共享工作队列机制。工作队列是一种运行在进程上下文的下半部机制,支持睡眠操作,适用于需要阻塞的复杂任务处理。文章详细讲解了工作队列的核心概念、分类(共享队列和自定义队列)、执行流程以及相关API接口(INIT_WORK、schedule_work等)。通过实验源码展示了如何在中断处理中调度任务到共享工作队列执行,并总结了工作队列的优缺点及适用场景。共享工作队列适合简单任务处理,但需要注意长时间任务会阻塞其他任务执行。
2026-05-19 11:08:02
189
原创 K3568平台开发系列讲解(中断篇)中断下半部:tasklet任务的使用
在Linux系统里,Tasklet是一个用来处理中断相关复杂任务的软件机制。安全性:在多核CPU环境下,同一时间每个Tasklet的任务只能在一个CPU核心上运行。这样就能避免多个CPU同时处理同一个任务导致的数据冲突问题。限制:使用时要注意,Tasklet执行的任务不能包含任何会让CPU暂停的函数(比如需要等待I/O或资源的操作)。如果违反这点,会导致系统异常。简单来说,Tasklet就像一个安全的任务调度员,负责在多核CPU之间协调任务执行,但它的任务必须是快速完成且不会卡住的。
2026-05-18 15:57:15
37
原创 RK3568平台开发系列讲解(热拔插篇)kobject_uevent事件上报源码解析
1. 调用层级kobject_uevent(简易对外接口) → kobject_uevent_env(完整核心实现)2. 核心差异kobject_uevent:无自定义环境变量,适合绝大多数通用设备事件上报场景,接口简洁、开箱即用。kobject_uevent_env:支持自定义环境变量扩展,包含完整的事件过滤、校验、广播、兼容逻辑,是真正的事件发送执行者。3. 内核上报用户空间事件核心原理。
2026-05-15 23:09:47
199
原创 RK3568平台开发系列讲解(热拔插篇)内核是如何发送事件到用户空间
本文介绍了Linux内核中的kobject_uevent函数及其应用。该函数用于生成和发送uevent事件,实现内核与用户空间设备管理工具(如udev)的通信。文章详细说明了函数参数、常见动作类型及其含义,并介绍了udevadm命令工具的功能。通过一个实验程序展示了kobject的创建、初始化和uevent事件触发过程,最后给出了运行效果截图。全文简明扼要地阐述了Linux设备事件通知机制的核心概念和实际应用。
2026-05-15 22:44:24
46
原创 RK3568平台开发系列讲解(显示篇)RK VOP 显示控制器
在瑞芯微的系列 SoC 中,显示控制器被称为 VOP(Video Output Processor)。以 RK3568处理器为例,其技术参考手册(TRM)中对 VOP2 的描述如图:VOP2 是连接内存帧缓冲区与显示设备的显示接口模块。它通过 AHB 从接口(AHB Slave)与 AHB 总线相连,用于寄存器配置;同时通过 AXI 主接口(AXI Master)与 AXI 总线相连,用于读取显示帧数据。
2026-05-05 22:51:23
56
原创 RK3568平台开发系列讲解(调试篇)Linux kernel debug 方法
本文介绍了Linux内核调试的常用方法和工具。首先列举了内核编译时的多种调试配置选项,如内存分配调试、自旋锁调试等,可帮助发现内存泄漏、死锁等问题。其次讲解了BUG()和BUG_ON()宏的使用,可在检测到错误时打印信息并挂起系统。还介绍了dump_stack()函数用于打印调用栈,以及kallsyms特性提供的符号解析功能。最后详细说明了System.map符号表的作用、生成方式和内容格式,包括符号地址、类别和名称的解析方法。这些调试手段对于定位内核错误和性能问题非常有用。
2026-04-21 19:00:00
56
原创 RK3399平台开发系列讲解(硬件篇)嵌入式硬件知识及工具
作为Linux底层驱动工程师,您需要把自己培养成 “会用软件的硬件侦探”。示波器、逻辑分析仪是您的放大镜和指纹采集仪,数据手册和设备树是您的案宗,而内核代码和调试打印则是您的推理过程。掌握这些工具和知识后,您将有能力解决那些最深藏不露、横跨软硬件的疑难杂症,成为团队中的核心问题解决者。返回专栏总目录。
2026-04-14 22:30:00
60
原创 RK3568平台开发系列讲解:注册 platform 驱动过程详解
宏的参数 drv 是一个指向 struct platform_driver 结构体的指针, 描述了要注册的平台驱动程序的属性和回调函数。THIS_MODULE 是一个宏, 用于获取当前模块的指针。当系统检测到与该驱动程序匹配的平台设备时, 内核将调用相应的函数来执行设备的初始化、 配置、 操作和管理。需要注意的是, struct platform_driver 结构体继承了 struct device_driver 结构体, 因此可以直接访问 struct device_driver 中定义的成员。
2026-04-07 20:37:50
142
原创 RK3568平台开发系列讲解:设备模型基本框架
kset 通过包含一个 kobject 作为其成员, 将 kset 本身表示为一个 kobject, 并使用 kobj 来管理和操作 kset。kset 是 kobject 的一种扩展, 它提供了一种层次化的组织结构, 可以将一组相关的 kobject 组织在一起。在 kobject 结构体中, parent 指针用于表示父 kobject, 从而建立了kobject 之间的层次关系, 类似于目录结构中的父目录和子目录的关系。kobject 和 kset 是 Linux 内核中用于管理内核对象的基本概念。
2026-04-07 20:09:35
57
原创 RK3568平台开发系列讲解:Linux DMA技术详解
DMA技术通过硬件直接访问内存,极大地解放了CPU,是实现高效数据传输的基石。理解其工作原理、关键参数和潜在问题,对于进行高性能系统和驱动开发至关重要。
2026-03-10 22:41:12
170
原创 RK3568平台开发系列讲解:Linux内核的启动流程
首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的。第 493 行的 ENTRY 指明了了 Linux 内核入口,入口为 stext,stext 定义在文件arch/arm/kernel/head.S 中 , 因 此 要 分 析 Linux 内核的启动流程,就得先从文件arch/arm/kernel/head.S 的 stext 处开始分析。一、链接脚本 vmlinux.lds。
2026-03-09 21:48:36
184
原创 RK3568平台开发系列讲解:Linux wifi的调试
查询结果中state为ENABLE,表示hostapd程序启用成功。首先查看设备是否存在。
2026-03-09 20:36:53
106
原创 RK3568平台开发系列讲解:WIFI 连接过程详解
AP 接收到设备的关联请求帧后,会检查设备的请求信息,评估其是否能够接受设备的连接。在被动扫描过程中,设备不会主动发送探测请求,而是通过监听特定信道上的信标帧 (Beacon Frame),从中获取 AP 的信息。探测请求 (Probe Request) 设备依次切换到不同的信道 ( WiFi 网络使用多个信道进行通信,不同的标准使用不同的信道范围,比如 2.4GHz 频段有 14 个信道)。一旦设备收到关联成功的响应帧,它就会正式成为 AP 的一部分,并可以开始通过AP 访问网络资源。
2026-02-21 00:14:37
154
原创 RK3568平台开发系列讲解:什么是WIFI无线局域网
AP是Access Point的缩写,即无线接入点,它是一个无线网络的中心节点,可以看成是一个服务器。STA是Station的缩写,它是无线网络中的一个终端站点设备,可以看成是一个客户端,一般来说,处在STA模式下的设备本身不接受无线的接入,该设备连接到AP节点进行网络访问,STA模式下的设备之间的通信可以通过AP进行转发实现。当 STA 找到与其有相同 SSID 的 AP,在 SSID 匹配的 AP 中,根据收到的 AP 信号强度,选择一个信号最强的 AP,然后进入认证阶段。无线接入的过程分为三阶段。
2026-02-20 23:44:36
120
原创 RK3568平台开发系列讲解:内核启动流程
第 493 行的 ENTRY 指明了了 Linux 内核入口,入口为stext,stext 定义在文件arch/arm/kernel/head.S 中 , 因此要分析Linux 内核的启动流程,就得先从文件arch/arm/kernel/head.S 的 stext 处开始分析。_mmap_switched 定义在文件 arch/arm/kernel/head-common.S,__mmap_switched 最终会调用 start_kernel 函数。⑥、r2=atags 或者设备树(dtb)首地址。
2026-02-07 12:02:05
120
原创 RK3568平台开发系列讲解:ConfigFS 的核心数据结构
这段代码的作用是初始化和注册一个名为"device-tree"的 ConfigFS 子系统, 并在其下创建一个名为"overlays"的配置项组。首先, dtbocfg_root_subsys.su_group 是一个 config_group 结构体, 它表示子系统的根配置项组。在这里, 该结构体的.cg_item 字段表示根配置项组的基本配置项。这段代码定义了一个名为 dtbocfg_root_subsys 的 configfs_subsystem 结构体实例, 表示ConfigFS 中的一个子系统。
2026-02-04 00:47:28
84
原创 RK3568平台开发系列讲解:proc文件系统介绍与分析
在 Linux 的内核中,虚拟文件系统转换层(VFS)的存在,使得各种不同种类的文件都可以通过一组统一的系统调用来处理,其中不仅包括保存在不同格式的文件系统上的磁盘文件,还包括各种不同种类的外部设备,以及进程信息和多种内核参数,等等。特殊文件系统中的文件,其特殊之处在于,它们的信息并不是保存在外部物理存储设备上的,而是在收到读取请求的时候才由内核动态生成的。
2026-02-02 21:18:24
117
原创 RK3568平台开发系列讲解:嵌入式相关的硬件工具汇总
能做什么:解析数字协议(如 I2C、SPI、UART)的时序,捕捉信号的状态变化,生成眼图分析信号质量。除了以上核心工具,嵌入式场景中还会接触频谱仪(分析高频信号的频率特性)、信号发生器(生成特定波形用于电路测试)、数字电桥(高精度测量电阻 / 电容 / 电感)等 —— 可先明确其核心用途,后续按需深入。作为嵌入式开发工程师,硬件工具是定位问题、验证设计的 “眼睛”—— 你未必需要精通操作细节,但必须明确它们是什么、能做什么、什么时候用。是什么:电子电路测量的便携工具,功能覆盖多维度参数。
2026-02-02 21:07:05
208
原创 RK3568平台开发系列讲解:内核是如何发送事件到用户空间
kobject_uevent 函数的主要作用是在内核中生成 uevent 事件, 并通过 netlink 机制将该事件发送给用户空间的 udev。这些是一些常见的 udevadm 子命令, 它们提供了与 udev 设备管理器交互的便捷方式, 用于设备信息查询、 事件监控、 事件触发、 规则测试等操作。用户空间的 udev 会接收到这些 uevent 消息, 并根据消息中的设备信息和事件类型来执行相应的操作, 例如创建或删除设备节点, 加载或卸载驱动程序等。
2026-02-01 22:18:47
80
原创 RK3568平台开发系列讲解:systemd
还有其他一些启动目标可用(例如 emergency.target 提供一个紧急情况使用的 shell,以及 halt.target 用于机器关机),可以用以下方式在它们之间切换: systemctl isolate emergency.target在许多方面,这些都很像 SysVinit 中的运行级runlevel,如文本模式的 multi-user.target 类似于第3运行级,graphical.target 类似于第5运行级,reboot.target 类似于第6运行级,诸如此类。
2026-02-01 21:52:11
70
原创 RK3568平台开发系列讲解:HDMI 接口介绍
HDMI 接口有 A 到 E 五种接口。1.HDMI-A 接口又叫做标准接口,也是使用最广泛的接口。引脚定义:2.HDMI-B 接口在日常使用中基本看不到。HDMI-B 接口的数据传输能力比 HDMI-A 快近 2 倍,一般用在比较专业的场景。3.HDMI-C 又叫做 Mini HDMI、迷你 HDMI 接口,尺寸比 HDMI-A 小了近三分之一,主要用在小型设备中,比如游戏机,数码相机等。引脚定义:4.HDMI-D 接口又叫做 Micro HDMI、微型 HDMI 接口。
2025-12-03 23:54:42
284
rkisp的驱动代码
2020-10-21
ioremap_gpio_demo.c
2021-02-26
RK3399 Android7.1-Box 软件开发指南 V1.01-20170401.rar
2021-06-04
MLX90640红外开发资料包.zip
2020-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅