加载中
Kernel USB驱动框架

一,USB基本概念 USB协议是非常复杂的,好在Linux内核为我们做了太多的工作,使得USB驱动的开发相对容易很多。 USB基于树形的拓扑结构设计,支持多种传输模式和传输速率。硬件上,USB分为USB...

07/02 12:04
6
Kernel 块设备驱动框架

1,总体架构: 块设备驱动框架是Linux设备最重要的框架之一,涉及内核的vfs,设备驱动模型等模块,是内核中异常复杂的一个框架。我们先看一下块设备设计的主要框架结构,先从总体上对块设备有...

06/26 00:47
10
Kernel PCI总线框架

1,PCI总线介绍 在PC时代的早期,外部设备通过ISA总线接入计算机。ISA总线只有24根地址线,因此其上的外部设备只能访问内存的低16M地址空间。这种硬件上的限制对于如今需要大量IO memory的外...

06/09 10:17
15
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

05/25 01:49
15
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

05/24 00:12
10
Kernel 设备驱动模型

Linux为统一管理系统中的设备和驱动框架,提出了一套设备驱动模型框架:总线(bus),设备(device)和驱动(driver)。这套框架不仅维护了总线,设备和驱动之间的关联关系,也提供了一套完整的sys...

05/21 21:42
13
Kernel 设备模型基础框架kobject

Linux设备模型的基础框架是基于 kobject, kset 和 kobj_type 三个基础数据结构实现的。这篇主要分析这三个基础数据结构的作用,以及相互之间的关系。 1,kobject: struct kobject { const...

Kernel 工作队列

1,基本概念: 工作队列(workqueue),是内核中一种将任务推后执行的机制。与软中断,tasklet不同的是,工作队列基于内核线程实现,能够休眠。下面,我们首先了解工作队列的几个概念。 (1)...

05/19 00:20
12
Kernel 内核线程

Linux的内核线程本质上是运行在内核态的进程,没有用户态地址空间,跟所有其他线程一起共享内核态地址空间,一同参与进程调度。同软中断和tasklet相同的是,内核线程可以将任务延后执行(软中...

TSK
05/17 13:51
8
Kernel tasklet

内核 tasklet 机制是在软中断的基础上实现的。我们知道软中断有如下两点,导致比较难用: (1)软中断在内核中静态注册。如果要增加新的软中断,必须修改内核代码,重新编译内核镜像。 (2)...

05/15 20:49
7
Kernel 软中断Softirq

我们知道,Linux中断的上半部用于处理非常紧急的任务,而延时处理的任务通常需要放到中断的下半部去处理。软中断(Softirq)是Linux内核中断下半部的一部分,是中断下半部tasklet的组成基础。...

05/13 23:54
9
Kernel 中断上半部

中断机制的出现,主要用来解决CPU频率(以及cache/memory访问速率)和IO速率之间越来越不匹配的问题。当CPU需要访问外部设备数据时,有两种处理策略: (1)轮询方式:CPU发送命令给设备控制...

05/12 21:03
12
Kernel Completion机制

内核提供的Completion机制用于多线程之间的数据同步。类似于信号量,但是比信号量要安全。其工作原理如下: 假设我们有两个线程(A和B)以及一个共享的数据Buffer。线程A往Buffer中写入数据,...

05/07 23:13
9
Kernel常见锁的原理和实现

锁是内核中使用最频繁,最基础的设施之一,在内核的各个模块中被大量使用。锁的本质是在并发过程中保证资源的互斥使用。Linux内核提供了多种锁,应用的场合也各不相同,主要包括:原子操作,...

05/06 13:52
14
SPI 总线协议和驱动

协议介绍 SPI(Serial Peripheral Interface),即串行外设接口,是一种串口通信接口协议。SPI遵循主从模式框架设计架构,但只能有一个主设备。SPI总线有4条信号线,CS(片选信号线),SCLK(...

2018/12/23 22:21
71
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

2018/12/11 23:00
205
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

2018/12/09 23:19
54
Linux Kernel Device Tree 配置框架

背景:基于arm平台的soc种类繁多,硬件资源和配置各不相同。这些平台硬件相关的信息在设备树出现之前,是在kernel/arch/arm/plat-xxx目录和kernel/arch/arm/mach-xxx目录下硬编码的。在kerne...

2018/12/02 16:05
89
Linux Kernel GPIO框架gpiolib

一,GPIO介绍 GPIO(Generic Purpose Input/Output port),即通用输入输出端口。gpio提供了通用的引脚输入输出和特定的功能,可以实现引脚级别的输入输出控制,多个引脚组合在一起,也可以实...

2018/11/13 19:20
156

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部