linux 内核和驱动框架
文章平均质量分 77
linux内核及驱动通用的相关知识
linux_dafei
我爱Linux
展开
-
linux 自旋锁(spinlock)和互斥锁(mutex)
互斥锁(mutex)无法获取到互斥锁时,会发生上下文切换并休眠,上下文切换的开销相对较大,因此在需要保护的临界区较小时,宜选用自旋锁,否则选用互斥锁。互斥锁在原子操作API的基础上实现,同一时间只能有一个任务持有互斥锁,而且只有这个任务可以对互斥锁进行解锁。3、使用场景:互斥锁(mutex)只能在进程上下文中使用,不能在中断上下文中使用,而自旋锁(spinlock)可以在中断上下文中使用。与自旋锁不同,互斥锁不能进行递归锁定或解锁,只能在同一线程里对应使用,所以它只能用于线程的互斥。原创 2024-05-29 16:04:36 · 196 阅读 · 0 评论 -
Linux 进程管理
与一般的函数不同,exec族函数执行成功后一般不会返回调用点,因为它运行了一个新的程序,进程的代码段、数据段和堆栈等都已经被新的数据所取代,只留下进程ID等一些表面信息仍保持原样,虽然还是旧的躯壳,但是其实质内容已经全部变化了。此时可能会有一个疑问,既然代码共享,并且子进程是拷贝了父进程的PCB,虽然他们各自拥有自己的进程虚拟地址空间,但其中的数据必然是相同的(拷贝而来),并且通过页表映射到同一块物理内存中,那么又如何做到数据独有呢?而这个新创建出来的进程被称为原进程的子进程,原进程被称为该进程的父进程。原创 2024-05-29 15:51:33 · 696 阅读 · 0 评论 -
Linux Udev和Uevent
linux内核最初的设备管理是通过devfs来实现的,但是由于诸多问题,如不确定的设备映射、设备号不足、设备文件过多以及命名不灵活等,出现了新的设备管理策略udev。udev则是devfs的替代者,是一个在用户空间运行的程序,用于动态管理设备节点。它利用Linux内核提供的uevent机制,在系统启动时运行一个守护进程udevd,通过监听内核发送的uevent来执行相应的热插拔动作。这些动作包括创建或删除设备节点、加载或卸载驱动模块等。原创 2024-05-22 17:12:40 · 628 阅读 · 0 评论 -
Linux内核中常用的功能实例
switch上报功能:通过switch类上报内核状态值原创 2021-04-12 09:27:38 · 353 阅读 · 0 评论 -
Linux ALSA驱动框架分析
ALSA(Advanced Linux Sound Architecture-高级linux声音架构),目前已经成为了linux的主流音频体系结构,ALSA在内核部分提供alsa-driver对音频驱动进行耦合和管理,在用户空间空间提供alsa-lib,应用开发人员可以使用alsa-lib接口控制声卡。原创 2022-06-18 16:11:13 · 7581 阅读 · 1 评论 -
Linux DTS介绍
在linux内核源码的3.1版本之前,linux内核都是通过大量的platfrom-device文件来描述板级配置信息,这使得内核人员维护很困难,因此设备树(Device Tree)被采用原创 2022-06-08 21:06:31 · 3370 阅读 · 0 评论 -
Android/inux系统开机启动流程
芯片上电解复位后执行第一段程序的执行地址指向0x00000000或0xffff0000,这段程序被称为Bootrom loader,该段程序在芯片制造过程中固化到其内部的ROM空间,只读不可修改原创 2022-07-11 20:14:38 · 2406 阅读 · 1 评论 -
Linux AMBA驱动框架分析
AMBA 驱动框架分析原创 2023-07-07 14:28:26 · 985 阅读 · 0 评论 -
linux驱动数码管-基于74HC164D
1、查看电路原理图,确定驱动数码管对应的元件,及GPIO口2、这里我们用的uart2的引脚,复用为GPIO口3、上面确定了驱动数码管涉及的元器件为CS4021B(数码管)、74HC164D(移位寄存器)以及SOC的GPIO口,所以需要先找到74HC164D的芯片资料,查看该芯片是如何驱动A-G、A1-G1并输出特定的电平控制数码管4、当时钟信号(CP 对应 SCK)从低电平变为高电平时,芯片将读取DSA(B)输入的电平信号,并将电平信号保存到Q0上(同时Q0会输出该...原创 2021-01-07 16:46:57 · 1562 阅读 · 0 评论 -
Linux常用的adb、git、shell命令及shell脚本语法记录
git常用命令:sudo get-apt install git:git安装git init: 创建git版本库git add xx:添加到暂存区git commit -m "说明信息":创建一个版本git log: 查看版本创建记录,ID号git reset --hard HEAD^: 回退一个版本git reset --hard HEAD~X: 回退X个版本git reset --hard ID:回退本地代码库至ID号之前的版本git reflog: 查看版本操作记录git res原创 2021-03-16 14:16:51 · 1132 阅读 · 1 评论 -
Linux驱动中platfrom-driver/device注册及probe执行过程分析
1、platform系统platfrom系统在linux内核中包含三个部分①platfrom-bus虚拟总线,是一个内核抽象出来的虚拟的总线,在linux内核中以链表的形式表示,platform-driver/device通过挂载在platform虚拟总线上,实现设备和驱动之间的匹配,在内核表现形式为一系列platform-driver/device结构体组成的链表形式;②platform-driver模型,内核中抽象出来的driver模型,表现形式为platfrom-driver的结构体,它的原创 2021-03-08 15:20:41 · 1666 阅读 · 0 评论