- 博客(1256)
- 资源 (33)
- 收藏
- 关注
原创 RK3399平台入门到精通系列讲解 - 总目录
欢迎大家来到内核笔记的《RK3399平台开发入门到精通系列讲解》,开始前博主先列出RK3399平台学习的大纲,同时这也可以作为大家学习RK3399内核与安卓框架的参考。下面蓝字都是传送门,点击进入即可:...
2020-11-17 23:20:48 87004 202
原创 RK3568 从入门到实战项目专栏目录及介绍
本专栏采用AIO-3568J四核高性能人工智能主板。是四核处理器,集成双核心架构GPU以及高效能NPU;支持8G大内存;板载M.2与SATA3.0接口;支持POE+供电;支持WiFi 6,5G/4G无线网络通讯;拥有丰富的扩展接口,可应用于智能NVR、云终端、物联网网关、工业控制等场景。
2018-01-30 20:05:13 26321 46
原创 RK3568平台开发系列讲解(Linux系统篇)设备树中断的属性
中断信号源节点(例如设备节点或其他中断源节点) 中的 interrupt-parent 属性用于指定中断信号源所属的中断控制器节点。中断信号源节点的 interrupts 属性中的中断号和其他相关信息将与指定的中断控制器关联起来。中断信号源节点(例如设备节点或其他中断源节点) 中的 interrupt-parent 属性用于指定中断信号源所属的中断控制器节点。中断信号源是产生中断的设备或其他中断源节点。在某些情况下, 中断控制器可以形成多级结构, 其中一个中断控制器节点可能是另一个中断控制器的父节点。
2024-04-12 00:30:58 108 1
原创 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 81
原创 RK3568平台开发系列讲解(Linux系统篇)设备树中时钟描述
📢时钟(Clock) 用于描述硬件设备和系统中的时钟源以及时钟相关的配置和连接关系。 时钟在计算机系统中起着至关重要的作用, 用于同步和定时各种硬件设备的操作。 时钟可以分为两个主要角色: 时钟生产者(clock provider) 和时钟消费者(clock consumer) 。
2024-03-25 00:09:59 121 1
原创 RK3568平台开发系列讲解(基础篇)互斥锁的实现
互斥锁会导致休眠, 所以在中断里面不能用互斥锁。mutex的操作函数中有fastpath、slowpath两条路径(快速、慢速):如果fastpath成功,就不必使用slowpath。atomic_long_try_cmpxchg_acquire(mem, old, new)是一个封装的原子操作。如果mutex当前值是0或负数,则需要调用__mutex_lock_slowpath慢慢处理:可能会休眠等待。大部分情况下,mutex当前值都是1,所以通过fastpath函数可以非常快速地获得mutex。
2024-03-18 00:01:05 211 1
原创 RK3568平台开发系列讲解(pinctrl篇)什么是 pinctrl子系统
Linux 中的 pinctrl 子系统(Pin Control Subsystem) 是一个用于管理和配置通用输入/输出(GPIO) 引脚的框架。 它提供了一种标准化的方法, 以在 Linux 内核中对 GPIO 引脚进行配置、分配和控制, 从而适应不同的硬件平台和设备。
2024-03-16 01:07:54 137 1
原创 RK3568平台开发系列讲解(基础篇)内核是如何发送事件到用户空间
kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与内核通信的一种方式。
2024-03-16 00:26:34 521
原创 RK3568平台开发系列讲解(基础篇)自旋锁的实现
上述__raw_tickets结构体中有owner、next两个成员,这是在SMP系统中实现spinlock的关键。
2024-03-08 00:29:10 130
原创 RK3568平台开发系列讲解(基础篇)设备号的分配和释放
字符设备在/dev目录下,不能简单地把它们当作普通文件。字符设备文件的类型是可以识别的,用ls -l命令能够查看。主设备号和次设备号标识设备,并将其与驱动程序进行绑定。下面列出/dev目录(ls -l /dev)的内容,让我们看一看其工作原理:
2024-03-06 23:52:35 264 1
原创 RK3568平台开发系列讲解(基础篇)字符设备驱动关键结构体
Linux 内核中将字符设备抽象成一个具体的数据结构 (struct cdev), 我们可以理解为字符设备对象,cdev 记录了字符设备的相关信息 (设备号、内核对象),字符设备的打开、读写、关闭等操作接口(file_operations),在我们想要添加一个字符设备时,就是将这个对象注册到内核中,通过创建一个文件 (设备节点) 绑定对象的 cdev,当我们对这个文件进行读写操作时,就可以通过虚拟文件系统,在内核中找到这个对象及其操作接口,从而控制设备。
2024-03-06 00:37:22 164
原创 RK3568平台开发系列讲解(基础篇)内核错误码
在 Linux 内核中,所谓的错误指针已经指向了内核空间的最后一页,例如,对于一个 64 位系统来说,内核空间最后地址为 0xffffffffffffffff,那么最后一页的地址是 0xfffffffffffff000~0xffffffffffffffff,这段地址是被保留的,如果指针落在这段地址之内,说明是错误的无效指针。沉淀、分享、成长,让自己和他人都能有所收获!
2024-03-03 23:36:18 103
原创 RK3568平台开发系列讲解(基础篇)中断线程化
中断线程化是一种优化技术, 用于提高多线程程序的性能。中断线程化的核心思想是将中断处理和主线程的工作分开, 让它们可以并行执行。中断线程负责处理中断事件, 而主线程负责执行主要的工作任务。这样一来, 不仅可以减少切换的开销, 还可以提高整个程序的响应速度和性能。需要注意的是, 中断线程化还需要处理线程之间的同步和数据共享问题。因为中断线程和主线程可能会同时访问和修改共享的数据, 所以需要合理地进行同步操作, 确保数据的一致性和正确性。
2024-03-03 23:29:06 107
原创 RK3568平台开发系列讲解(基础篇)文件私有数据
Linux 中并没有明确规定要使用文件私有数据,但是在 linux 驱动源码中,广泛使用了文件私有数据,这是 Linux 驱动遵循的“潜规则”,实际上也体现了 Linux 面向对象的思想。struct file 结构体中专门为用户留了一个域用于定义私有数据。
2024-03-01 04:00:00 103
原创 RK3568平台开发系列讲解(基础篇)原子操作
在 Linux 内核中的原子操作可以理解为“不可被拆分的操作”,就是不能被更高等级中断抢夺优先的操作。在 C语言中可以使用以下代码对一个整形变量赋值。
2024-02-29 23:31:01 549
原创 RK3568平台开发系列讲解(基础篇)如何快速学习一套 Linux开发板源码
拿到一份源码和一块评估板,如何快速找到与这块板相关的源码,是很多研发人员都曾遇到过的问题。如果对内核源码结构有大概了解,要完成这些事情也不难,通常可按照基础代码、驱动代码和其它代码等方面来梳理。
2024-02-27 00:43:14 249
原创 RK3568平台开发系列讲解(Linux系统篇)内核设备与驱动程序的匹配
内核中负责平台设备和驱动程序匹配功能的函数在 /drivers/base/platform.c 中
2024-02-25 23:24:43 124 1
原创 RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:分配和注册字符设备
字符设备在内核中表示为struct cdev的实例。在编写字符设备驱动程序时,目标是最终创建并注册与struct file_operations关联的结构实例,为用户空间提供一组可以在该设备上执行的操作(函数)。
2024-02-25 22:59:01 101 1
原创 RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:主设备和次设备
字符设备通过字符(一个接一个的字符)以流方式向用户程序传递数据,就像串行端口那样。字符设备驱动通过/dev目录下的特殊文件公开设备的属性和功能,通过这个文件可以在设备和用户应用程序之间交换数据,也可以通过它来控制实际的物理设备。这也是Linux的基本概念,一切皆文件。字符设备驱动程序是内核源码中最基本的设备驱动程序。
2024-02-25 22:51:59 102 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 226
原创 RK3568平台开发系列讲解(Linux系统篇)编写I2C客户端驱动程序
配置I2C设备基本上分为两个步骤。定义并注册I2C驱动程序定义并注册I2C设备
2024-02-22 20:06:14 109 1
原创 百面嵌入式专栏(经验篇)如何在面试中介绍自己的项目经验
在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。
2024-02-22 19:29:23 175
原创 RK3568平台开发系列讲解(Linux系统篇)通过I2C总线访问客户端方法
串行总线事务只是访问寄存器来设置/获取其内容。I2C遵循该规则。I2C内核提供两种API,一种用于普通I2C通信,另一种用于兼容SMBUS的设备,它也适用于I2C设备,反之则不然。
2024-02-22 19:22:48 95 1
RK3399 Android7.1-Box 软件开发指南 V1.01-20170401.rar
2021-06-04
ioremap_gpio_demo.c
2021-02-26
rkisp的驱动代码
2020-10-21
MLX90640红外开发资料包.zip
2020-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人