RK3588平台开发系列讲解(系统篇)开机启动原因

文章目录 一、系统开机启动原因 二、开机启动场景 📢本篇章主要讲解平台系统开机启动原因介绍。 一、系统开机启动原因 开机原因记录文件在/proc/sys/kernel/boot_reason,那么开机后可以从这个文件中读取数值来获知本次开机的原因,其读取出的数值和相对应的开机原因的关系如下: unknown; Hard Reset; SMPL (Sudden Momentary Power Loss); RTC (RTC ...

RK3588平台开发系列讲解(进程篇)进程task_struct结构体详解(一)

文章目录 一、任务 ID 二、信号处理 三、任务状态 四、进程调度 📢 Linux 里面,无论是进程,还是线程,到了内核里面,我们统一都叫任务(Task),由一个统一的结构 task_struct 进行管理。 一、任务 ID 每一个任务都应该有一个 ID,作为这个任务的唯一标识。到时候排期啊、下发任务啊等等,都按 ID 来,就不会产生歧义。 task_struct 里面涉及任务 ID 的,有下面几个: ...

RK3588平台开发系列讲解(同步与互斥篇)自旋锁死锁实验

文章目录 一、自旋锁死锁 二、实验程序的编写 2.1、驱动程序编写 2.2、编写测试 APP 📢自旋锁若是使用不当就会产生死锁,在本篇将会对自旋锁的特殊情况-死锁进行讲解。 一、自旋锁死锁 死锁是指两个或多个事物在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。当多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进,这种情况就是死锁。 自旋锁死锁发生存在两种情况: 第一种...

RK3588平台开发系列讲解(进程篇)程序的二进制格式 ELF

文章目录 一、ELF 文件 二、二进制文件组成 三、运行程序为进程 📢CPU 是不能执行文本文件里面的指令的,这些指令只有人能看懂,CPU 能够执行的命令是二进制的,比如“0101”这种,所以这些指令还需要翻译一下,这个翻译的过程就是编译(Compile)。 一、ELF 文件 在 Linux 下面,二进制的程序也要有严格的格式,这个格式我们称为 ELF(Executeable and Linkable Format,可执行...

RK3588平台开发系列讲解(驱动基础篇)信号驱动 IO 实验

文章目录 一、信号驱动 IO 简介 二、实验程序 2.1、应用程序 2.2、驱动程序 📢 信号驱动 IO 不需要应用程序查询设备的状态,一旦设备准备就绪,会触发 SIGIO 信号,进而调用注册的处理函数。仍旧以钓鱼为例。小马同学喜欢吃新鲜的鱼,但是不想自己钓,所以他请了一个助手来帮他钓鱼,他自己去忙其他的事情(进程不阻塞,立即返回)。如果有鱼上钩助手会帮忙钓上来(将数据拷贝到指定的缓冲区),并立即通知小马同学回来把鱼取走(...

RK3588平台开发系列讲解(驱动基础篇)I2C 总线实现 client 设备

文章目录 一、非设备树实现 i2c 二、设备树实现 i2c 📢 Linux 中的 I2C 也是按照平台总线模型设计的,既然也是按照平台总线模型设计的,是不是也分为一个device 和一个 driver 呢?但是 I2C 这里的 device 不叫 device,而是叫 client。在讲 platform 的时候就说过,platform 是虚拟出来的一条总线,目的是为了实现总线、设备、驱动框架。对于 I2C 而言,不需要虚...

RK3588平台开发系列讲解(驱动基础篇)中断下文之 tasklet

文章目录 一、中断下文之 tasklet 二、tasklet相关函数介绍 三、tasklet使用示例 四、中断视频介绍 📢 介绍中断下文之 tasklet 的基础理论知识。 一、中断下文之 tasklet 中断的上下文与进程上下文并没有什么瓜葛,当执行一个中断处理函数时,内核处于中断上下文。由于中断相当于打断了当前执行的程序,而且中断也没有后备的进程,所以中断上下文不可以睡眠(注意某些函数会睡眠),中断处理也必须做到迅捷,...

RK3588平台开发系列讲解(驱动基础篇)等待队列

文章目录 一、等待队列 二、等待队列头 三、等待队列项 四、添加/删除队列 五、等待唤醒 六、等待事件 📢 Linux 内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个 list_head 类型的域作为”连接件”。它通过一个双链...

RK3588平台开发系列讲解(项目篇)常见模型结构

文章目录 一、DNN 二、CNN 三、RNN 📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。 一、DNN 一个典型的 DNN 网络结构如图所示: 可以看到图...

RK3588平台开发系列讲解(驱动基础篇)设备树常用 of 函数

文章目录 一、查找节点的 of 函数 二、获取属性值的 of 函数 三、实验示例 3.1、查找的节点代码 3.2、获取属性内容代码 📢 设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,我们在编写驱动的时候需要获取到这些信息。比如设备树使用 reg 属性描述了某个外设的寄存器地址为 0X02005482,长度为 0X400,我们在编写驱动的时候需要获取到 reg 属性的 0X02005482 和...
© 2024 LMLPHP 关于我们 联系我们 友情链接 耗时0.011288(s)
2024-05-07 03:22:52 1715023372