随笔分类 -  Linux驱动

主要分享Linux驱动相关内容
摘要:环境: 处理器架构:arm64 内核源码:linux-6.6.29 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 本文主要介绍内核开发中常用的模块传参手段,通过模块参数传递可以通过用户态来获取内核的一些信息,也可以通过用户态写入一些值来控制内核相关行为。一般内核开 阅读全文
posted @ 2024-06-10 12:56 学习,积累,成长 阅读(505) 评论(0) 推荐(0)
摘要:前言 通用块层是一个内核组件,处理来自系统其他组件发出的块设备请求。换句话说,通用块层包含了块设备操作的一些通用函数和数据结构,如通用磁盘结构gendisk,请求队列结构request_queue、请求结构request、块设备I/O操作结构bio和块设备操作结构block_device_opera 阅读全文
posted @ 2024-02-07 22:56 学习,积累,成长 阅读(322) 评论(0) 推荐(0)
摘要:前言 块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求,然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如,IDE设备驱动程序可以处理几个IDE磁盘,其中的每个都是一个单独的块设备。而且,每个磁盘通常是被分区的,每个分区又可以被看作是一个逻辑块设备。 核心 阅读全文
posted @ 2024-02-05 13:50 学习,积累,成长 阅读(707) 评论(0) 推荐(0)
摘要:前言 每个块设备驱动程序都维持着自己的请求队列,它包含设备待处理的请求链表。如果磁盘控制器正在处理几个磁盘,那么通常每个物理块设备都有一个请求队列。在每个请求队列上单独执行1/O调度,这样可以提高磁盘的性能。 关键API struct request_queue 请求队列是由一个大的数据结构requ 阅读全文
posted @ 2024-02-05 13:47 学习,积累,成长 阅读(882) 评论(0) 推荐(0)
摘要:前言 通用块层是一个内核组件,处理来自系统其他组件发出的块设备请求。换句话说,通用块层包含了块设备操作的一些通用函数和数据结构,如通用磁盘结构gendisk,请求队列结构request_queue、请求结构request、块设备I/O操作结构bio和块设备操作结构block_device_opera 阅读全文
posted @ 2024-02-05 13:42 学习,积累,成长 阅读(1244) 评论(0) 推荐(0)
摘要:块设备的定义 块设备是针对存储设备的,比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动,块设备驱动相比字符设备相比,块设备有以下几个特殊之处: 块设备可以从数据的任何位置进行访问 块数据总是以固定长度 阅读全文
posted @ 2024-02-05 13:41 学习,积累,成长 阅读(1038) 评论(1) 推荐(1)
摘要:前言 Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片、音视频采集芯片、音视频输出芯片、EEROM芯片、AD/DA转换芯片等等。下面我们看下如何写一个基本的I2C驱动。 阅读全文
posted @ 2024-01-18 22:58 学习,积累,成长 阅读(1216) 评论(0) 推荐(0)
摘要:在drivers/i2c/busses下包含各种I2C总线驱动,使用GPIO模拟I2C总线的驱动i2c-gpio.c,这里只分析i2c-gpio.c。 i2c-gpio.c它是gpio模拟I2C总线的驱动,总线也是个设备,在这里将总线当作平台设备处理,那驱动当然是平台设备驱动,看它的驱动注册和注销函 阅读全文
posted @ 2024-01-18 22:57 学习,积累,成长 阅读(313) 评论(0) 推荐(0)
摘要:简介 在Linux内核源代码中的driver目录下包含一个i2c目录 i2c-core.c这个文件实现了I2C核心的功能以及/proc/bus/i2c*接口。 i2c-dev.c实现了I2C适配器设备文件的功能,每一个I2C适配器都被分配一个设备。通过适配器访设备时的主设备号都为89,次设备号为0- 阅读全文
posted @ 2024-01-18 22:56 学习,积累,成长 阅读(1041) 评论(0) 推荐(0)
摘要:I2C bus i2c_bus_type 用于表示 I2C 总线类型。bus_type 是 Linux 内核中用于表示总线类型的结构体,用于管理该类型总线上的设备。 struct bus_type i2c_bus_type = { .name = "i2c", .match = i2c_device 阅读全文
posted @ 2024-01-18 22:55 学习,积累,成长 阅读(485) 评论(0) 推荐(0)
摘要:I2C驱动框架简介 I2C 驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,系统的整体框架如下所示。 最上层是应用层,在应用层用户可以直接用open read write对设备进行操作, 往下是设备驱动层,这个就是外围的比如一些用I2C总线连接到SOC的传感器或者EEP 阅读全文
posted @ 2024-01-18 22:55 学习,积累,成长 阅读(885) 评论(0) 推荐(2)