RK3568平台开发入门到实战项目专栏
该专栏为热销专栏榜 第33名
文章平均质量分 86
本专栏以RK3568 Android11 为平台,从基础入门到实战项目开发
优惠券已抵扣
余额抵扣
还需支付
¥129.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
内核笔记
一直从业于半导体行业,曾为Linux内核开源文档社区提交过若干文档。
主要从事Linux、Android相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统,设备驱动等内核子系统。
展开
-
RK3568 从入门到实战项目专栏目录及介绍
本专栏采用AIO-3568J四核高性能人工智能主板。是四核处理器,集成双核心架构GPU以及高效能NPU;支持8G大内存;板载M.2与SATA3.0接口;支持POE+供电;支持WiFi 6,5G/4G无线网络通讯;拥有丰富的扩展接口,可应用于智能NVR、云终端、物联网网关、工业控制等场景。原创 2018-01-30 20:05:13 · 28073 阅读 · 51 评论 -
RK3568平台开发系列讲解(SPI篇)SPI device设备树处理过程
在SPI Master对应的设备树节点下,每一个子节点都对应一个SPI设备,这个SPI设备连接在该SPI Master下面。沉淀、分享、成长,让自己和他人都能有所收获!原创 2024-07-13 15:55:37 · 2946 阅读 · 1 评论 -
RK3568平台开发系列讲解(网络篇)netfilter框架
Linux内核自2.4版本开始引入了Netfilter框架,这是一项重要的网络功能增强。Netfilter框架由Linux内核防火墙和网络维护者 Rusty Russell 所提出和实现。这个作者还基于 netfilter 开发了大名鼎鼎的 iptables,用于在用户空间管理这些复杂的 netfilter 规则。Netfilter的核心理念是在网络协议栈的关键路径上设置了一系列钩子(hook)点。这些钩子点允许开发者注册自定义的回调函数,使得网络数据包在流经这些点时,可以被相应的函数拦截并进行处理。原创 2024-07-10 19:11:59 · 3277 阅读 · 1 评论 -
RK3568平台开发系列讲解(调试篇)性能分析:火焰图(flame graph)
火焰图 (Flame Graph) 是性能优化大师 Bredan Gregg 创建的一种性能分析图标,因为它的样子近似火焰而得名。使用火焰图能够非常快速的定位到代码中的瓶颈,它就像一个在代码之海中航行的程序员的地图,指引着性能优化的方向。下图是clickhouse的一张火焰图。原创 2024-06-27 23:16:04 · 3038 阅读 · 1 评论 -
RK3568平台开发系列讲解(调试篇)分析内核调用的利器 ftrace
Ftrace 是一个自 Linux 内核 2.6 版本起就支持的内核调试工具。最初,Ftrace 主要用于函数级别的跟踪(function trace),但经过不断发展,Ftrace 现已成为一个通用的调试框架,能够实现多种跟踪目的。原创 2024-06-26 22:13:38 · 180 阅读 · 2 评论 -
RK3568平台开发系列讲解(SPI篇)SPI数据的传输
RK3568平台开发系列讲解(SPI篇)SPI数据的传输原创 2024-05-15 00:18:55 · 303 阅读 · 1 评论 -
RK3568平台开发系列讲解(SPI篇)spi_dev 驱动分析
RK3568平台开发系列讲解(SPI篇)spi_dev 驱动分析原创 2024-05-15 00:14:42 · 760 阅读 · 2 评论 -
RK3568平台开发系列讲解(Linux系统篇)menuconfig的使用
📢 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具,本篇我们一起来学习使用menuconfig 配置内核。原创 2024-04-27 22:11:35 · 331 阅读 · 3 评论 -
RK3568平台开发系列讲解(Linux系统篇)中断下半部 tasklet 原理
bit0 表示 TASKLET_STATE_SCHED等于 1 时表示已经执行了 tasklet_schedule 把该 tasklet 放入队列了;tasklet_schedule 会判断该位,如果已经等于 1 那么它就不会再次把tasklet 放入队列。bit1 表示 TASKLET_STATE_RUN等于 1 时,表示正在运行 tasklet 中的 func 函数;函数执行完后内核会把该位清 0。原创 2024-04-10 01:12:26 · 260 阅读 · 2 评论 -
RK3568平台开发系列讲解(pinctrl篇)引脚的复用关系的设置
引脚的复用关系是在什么时候被设置的。原创 2024-03-21 00:47:00 · 462 阅读 · 3 评论 -
RK3568平台开发系列讲解(pinctrl篇)pinctrl 子系统函数操作集
在 pinctrl_desc 结构体中总共有三个函数操作集原创 2024-03-21 00:12:45 · 250 阅读 · 0 评论 -
RK3568平台开发系列讲解(pinctrl篇)什么是 pinctrl子系统
Linux 中的 pinctrl 子系统(Pin Control Subsystem) 是一个用于管理和配置通用输入/输出(GPIO) 引脚的框架。 它提供了一种标准化的方法, 以在 Linux 内核中对 GPIO 引脚进行配置、分配和控制, 从而适应不同的硬件平台和设备。原创 2024-03-16 01:07:54 · 277 阅读 · 2 评论 -
RK3568平台开发系列讲解(基础篇)自旋锁的实现
上述__raw_tickets结构体中有owner、next两个成员,这是在SMP系统中实现spinlock的关键。原创 2024-03-08 00:29:10 · 244 阅读 · 0 评论 -
RK3568平台开发系列讲解(基础篇)设备号的分配和释放
字符设备在/dev目录下,不能简单地把它们当作普通文件。字符设备文件的类型是可以识别的,用ls -l命令能够查看。主设备号和次设备号标识设备,并将其与驱动程序进行绑定。下面列出/dev目录(ls -l /dev)的内容,让我们看一看其工作原理:原创 2024-03-06 23:52:35 · 479 阅读 · 3 评论 -
RK3568平台开发系列讲解(基础篇)文件私有数据
Linux 中并没有明确规定要使用文件私有数据,但是在 linux 驱动源码中,广泛使用了文件私有数据,这是 Linux 驱动遵循的“潜规则”,实际上也体现了 Linux 面向对象的思想。struct file 结构体中专门为用户留了一个域用于定义私有数据。原创 2024-03-01 04:00:00 · 160 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)内核设备与驱动程序的匹配
内核中负责平台设备和驱动程序匹配功能的函数在 /drivers/base/platform.c 中原创 2024-02-25 23:24:43 · 195 阅读 · 1 评论 -
RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:分配和注册字符设备
字符设备在内核中表示为struct cdev的实例。在编写字符设备驱动程序时,目标是最终创建并注册与struct file_operations关联的结构实例,为用户空间提供一组可以在该设备上执行的操作(函数)。原创 2024-02-25 22:59:01 · 150 阅读 · 1 评论 -
RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:主设备和次设备
字符设备通过字符(一个接一个的字符)以流方式向用户程序传递数据,就像串行端口那样。字符设备驱动通过/dev目录下的特殊文件公开设备的属性和功能,通过这个文件可以在设备和用户应用程序之间交换数据,也可以通过它来控制实际的物理设备。这也是Linux的基本概念,一切皆文件。字符设备驱动程序是内核源码中最基本的设备驱动程序。原创 2024-02-25 22:51:59 · 148 阅读 · 1 评论 -
RK3568平台开发系列讲解(Linux系统篇)SPI 客户端通信
SPI I/O模型由一组队列消息组成。我们提交一个或多个struct spi_message结构时,这些结构以同步或异步方式处理完成。单个消息由一个或多个struct spi_transfer对象组成,每个对象代表全双工SPI传输。这是驱动程序和设备之间交换数据的两个主要结构。它们都定义在include/linux/spi/spi.h中原创 2024-02-24 00:08:50 · 497 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)通过I2C总线访问客户端方法
串行总线事务只是访问寄存器来设置/获取其内容。I2C遵循该规则。I2C内核提供两种API,一种用于普通I2C通信,另一种用于兼容SMBUS的设备,它也适用于I2C设备,反之则不然。原创 2024-02-22 19:22:48 · 140 阅读 · 1 评论 -
RK3568平台开发系列讲解(存储篇)文件描述符相关系统调用实现
open()系统调用会分配新的文件句柄(file description),用来维护与打开文件相关的元信息(如偏移量、路径、操作方法等),并会给进程返回一个文件描述符(其实就是个小整数)原创 2024-02-17 01:25:03 · 229 阅读 · 1 评论 -
RK3568平台开发系列讲解(实验篇)杂项设备驱动实验
在 Linux 中,把无法归类的五花八门的设备定义成杂项设备。原创 2024-02-15 03:46:14 · 399 阅读 · 1 评论 -
RK3568平台开发系列讲解(实验篇)用户空间和内核空间数据交换
内核空间和用户空间的内存是不能互相访问的。但是很多应用程序都需要和内核进行数据的交换,例如应用程序使用 read 函数从驱动中读取数据,使用 write 函数向驱动中写数据,上述功能就需要使用 copy_from_user 和 copy_to_user 俩个函数来完成。copy_from_user 函数是将用户空间的数据拷贝到内核空间。copy_to_user 函数是将内核空间的数据拷贝到用户空间。原创 2024-02-15 03:08:03 · 289 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)device 资源的获取
RK3568平台开发系列讲解(Linux系统篇)device 资源的获取原创 2024-01-30 04:00:00 · 294 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)platform 设备的注册
platform_device_register 函数用于将 platform_device 结构体描述的平台设备注册到内核中。原创 2024-01-30 04:00:00 · 144 阅读 · 2 评论 -
RK3568平台开发系列讲解(Linux系统篇)中断线程化
在Linux中,中断线程化(Interrupt Thread)是一种处理中断的方式,它允许将中断处理程序执行的部分移动到一个单独的线程中,而不是在中断上下文中直接执行。这种方式可以提高系统的可维护性、可扩展性和可靠性。原创 2024-01-29 04:00:00 · 339 阅读 · 1 评论 -
RK3568平台开发系列讲解(Linux系统篇)设备树中 GPIO 相关属性
我们以ft5x06设备树中的gpio使用为例原创 2024-01-18 23:56:56 · 265 阅读 · 0 评论 -
RK3568平台开发系列讲解(驱动篇)pinctrl 函数操作集结构体讲解
pinctrl_ops:提供有关属于引脚组的引脚的信息。pinmux_ops:选择连接到该引脚的功能。pinconf_ops:设置引脚属性(上拉,下拉,开漏,强度等)。原创 2024-01-10 00:07:12 · 705 阅读 · 2 评论 -
RK3568平台开发系列讲解(Linux系统篇)Linux 内核打印
在终端使用 dmseg 命令可以获取内核打印信息,该命令的具体使用方法如下所示:原创 2024-01-07 18:27:46 · 1275 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)PWM系统编程
📢本篇将介绍 PWM 的系统编程。原创 2023-12-28 23:26:07 · 1232 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)Linux 热拔插机制 mdev的使能
📢本篇将介绍 Linux 热拔插。原创 2023-12-24 20:21:48 · 1222 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)如何优化Linux驱动的稳定性和效率
📢在 Linux 中应用程序运行在用户空间,应用程序错误之后,并不会影响其他程序的运行,而驱动工作在内核层,是内核代码的一部分,当驱动出现问题之后,可能会导致整个系统的崩溃。所以在驱动中,需要对各种判断、预处理等进行排查等原创 2023-12-16 21:28:43 · 380 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)中断属性解析
📢本篇将介绍通过设备树中的解析。原创 2023-12-10 01:39:43 · 148 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)device_node 转换成 platform_device
📢本篇将介绍通过设备树 device_node 转换成 platform_device原创 2023-12-05 00:25:42 · 201 阅读 · 1 评论 -
RK3568平台开发系列讲解(Linux系统篇) dtb 到 device_node 的转化
📢本篇将介绍通过设备树 dtb 如何展开成 device_node原创 2023-12-03 23:28:54 · 208 阅读 · 2 评论 -
RK3568平台开发系列讲解(Linux系统篇)netlink 监听广播信息
📢本篇将介绍如何通过 netlink 监听广播信息。原创 2023-12-02 22:13:39 · 584 阅读 · 2 评论 -
RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树节点实验
📢本篇将介绍通过OF函数获取设备树节点实验原创 2023-11-30 00:14:05 · 170 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树中断信息实验
📢本篇将介绍通过OF函数获取设备树中断信息 。原创 2023-11-29 00:42:42 · 186 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)kernel config 配置解析
📢 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具,本篇我们一起来学习使用menuconfig 配置内核。原创 2023-11-22 00:14:54 · 548 阅读 · 0 评论 -
RK3568平台开发系列讲解(Linux系统篇)Linux内核定时器详解
📢 Linux 内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序、对于我们驱动编写者来说最常用的定时器。硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后就周期性的产生定时中断,系统使用定时中断来计时。中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate)(有的资料也叫系统频率),比如 100Hz、1000Hz 等等说的就是系统节拍率。原创 2023-11-13 23:12:58 · 269 阅读 · 1 评论