随笔分类 -  Linux驱动

主要分享Linux驱动相关内容
摘要:环境: 处理器架构:arm64 内核源码:linux-6.6.29 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 本文主要介绍内核开发中常用的模块传参手段,通过模块参数传递可以通过用户态来获取内核的一些信息,也可以通过用户态写入一些值来控制内核相关行为。一般内核开 阅读全文
posted @ 2024-06-10 12:56 学习,积累,成长 阅读(181) 评论(0) 推荐(0) 编辑
摘要:前言 通用块层是一个内核组件,处理来自系统其他组件发出的块设备请求。换句话说,通用块层包含了块设备操作的一些通用函数和数据结构,如通用磁盘结构gendisk,请求队列结构request_queue、请求结构request、块设备I/O操作结构bio和块设备操作结构block_device_opera 阅读全文
posted @ 2024-02-07 22:56 学习,积累,成长 阅读(142) 评论(0) 推荐(0) 编辑
摘要:前言 块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求,然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如,IDE设备驱动程序可以处理几个IDE磁盘,其中的每个都是一个单独的块设备。而且,每个磁盘通常是被分区的,每个分区又可以被看作是一个逻辑块设备。 核心 阅读全文
posted @ 2024-02-05 13:50 学习,积累,成长 阅读(418) 评论(0) 推荐(0) 编辑
摘要:前言 每个块设备驱动程序都维持着自己的请求队列,它包含设备待处理的请求链表。如果磁盘控制器正在处理几个磁盘,那么通常每个物理块设备都有一个请求队列。在每个请求队列上单独执行1/O调度,这样可以提高磁盘的性能。 关键API struct request_queue 请求队列是由一个大的数据结构requ 阅读全文
posted @ 2024-02-05 13:47 学习,积累,成长 阅读(534) 评论(0) 推荐(0) 编辑
摘要:块设备的定义 块设备是针对存储设备的,比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动,块设备驱动相比字符设备相比,块设备有以下几个特殊之处: 块设备可以从数据的任何位置进行访问 块数据总是以固定长度 阅读全文
posted @ 2024-02-05 13:41 学习,积累,成长 阅读(625) 评论(1) 推荐(1) 编辑
摘要:前言 Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片、音视频采集芯片、音视频输出芯片、EEROM芯片、AD/DA转换芯片等等。下面我们看下如何写一个基本的I2C驱动。 阅读全文
posted @ 2024-01-18 22:58 学习,积累,成长 阅读(807) 评论(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 学习,积累,成长 阅读(185) 评论(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 学习,积累,成长 阅读(595) 评论(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 学习,积累,成长 阅读(268) 评论(0) 推荐(0) 编辑
摘要:I2C驱动框架简介 I2C 驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,系统的整体框架如下所示。 最上层是应用层,在应用层用户可以直接用open read write对设备进行操作, 往下是设备驱动层,这个就是外围的比如一些用I2C总线连接到SOC的传感器或者EEP 阅读全文
posted @ 2024-01-18 22:55 学习,积累,成长 阅读(564) 评论(0) 推荐(2) 编辑
摘要:什么是 I²C I²C 叫集成电路总线 它是一种串行通信接口,具有双向两线同步串行总线,通常由两根线组成——SDA(串行数据线)和SCL(串行时钟线)和上拉电阻。 它们用于需要许多不同部件(例如传感器、引脚、扩展和驱动程序)协同工作的项目,因为它们可以将多达 128 个设备连接到主板,同时保持清晰的 阅读全文
posted @ 2024-01-18 22:53 学习,积累,成长 阅读(180) 评论(0) 推荐(0) 编辑
摘要:用户态 用户应用层使用spidev驱动的步骤如下: 打开SPI设备文件:用户可以通过打开/dev/spidevX.Y文件来访问SPI设备,其中X是SPI控制器的编号,Y是SPI设备的编号。 配置SPI参数:用户可以使用ioctl命令SPI_IOC_WR_MODE、SPI_IOC_WR_BITS_PE 阅读全文
posted @ 2023-11-30 22:52 学习,积累,成长 阅读(4159) 评论(1) 推荐(1) 编辑
摘要:前言 Linux的spi接口驱动实现目录在kernel\drivers\spi下。这个目录和一些层次比较明显的驱动目录布局不同,全放在这个文件夹下,因此还是只好通过看Kconfig 和 Makefile来找找思路 先看Makefile,里面关键几行: obj-$(CONFIG_SPI_MASTER) 阅读全文
posted @ 2023-11-30 22:51 学习,积累,成长 阅读(822) 评论(0) 推荐(0) 编辑
摘要:简介 模拟SPI驱动是一种软件实现的SPI总线驱动。在没有硬件SPI控制器的系统中,通过软件模拟实现SPI总线的功能。它允许在不修改硬件的情况下,通过GPIO(通用输入/输出)引脚模拟SPI总线的通信,从而与SPI设备进行数据交换。 模拟SPI驱动相对于硬件SPI来说,可能会有一定的性能损失,因为软 阅读全文
posted @ 2023-11-30 22:41 学习,积累,成长 阅读(978) 评论(0) 推荐(0) 编辑
摘要:关键API 设备树 设备树解析 我们以Firefly 的SPI demo 分析下dts中对spi的描述: /* Firefly SPI demo */ &spi1 { spi_demo: spi-demo@00{ status = "okay"; compatible = "firefly,rk33 阅读全文
posted @ 2023-11-30 22:39 学习,积累,成长 阅读(678) 评论(0) 推荐(0) 编辑
摘要:SPI数据类型 SPI控制器驱动结构体 struct spi_master抽象了控制器硬件,在SoC中的指的就是内部SPI控制器,当向SPI核心层注册一个SPI控制器时就需要提供这样的一个结构体变量。它的定义在 include/linux/spi/spi.h 文件,如下: /** * struct 阅读全文
posted @ 2023-11-30 22:36 学习,积累,成长 阅读(693) 评论(0) 推荐(1) 编辑
摘要:SPI驱动框架 SPI驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,他们都是实际的总线。总体框架如下图所示: 从上到下,分为三层,用户空间,内核空间,和硬件层。 用户空间 在用户空间,/dev/spi0和/dev/spi1是SPI总线的设备节点,它们在用户空间提供了对 阅读全文
posted @ 2023-11-30 22:26 学习,积累,成长 阅读(379) 评论(0) 推荐(0) 编辑
摘要:1. 什么是SPI SPI全拼Serial Peripheral interface(串行外围设备接口),是由Motorola(摩托罗拉)在MC68HCXX系列处理器上定义的,主要应用于EEPROM(带电可擦可编程只读存储器),FLASH,RTC(实时时钟),AD转换器,还有数字信号处理器和数字信号 阅读全文
posted @ 2023-11-30 22:25 学习,积累,成长 阅读(248) 评论(0) 推荐(1) 编辑
摘要:串口调试 串口调试主要有 根据/proc系统信息确认串口状态,stty命令,编程调试 三种调试方法,下面我们分别具体介绍下。 根据设备节点确认串口是否正常 系统上电时,默认会使能串口,我们可以通过dmesg | grep ttyS 查看系统加载的串口设备。 也可以通过 cat /proc/tty/d 阅读全文
posted @ 2023-11-30 22:17 学习,积累,成长 阅读(259) 评论(0) 推荐(0) 编辑
摘要:简介 前两节我们介绍串口驱动的框架和tty core部分。这节我们介绍和硬件紧密相关的串口驱动部分。 UART驱动部分依赖于硬件平台,而TTY驱动和具体的平台无关。虽然UART部分依赖于平台,但是不管是哪个硬件平台,驱动的思路都是一致的,下面分模块来分别介绍。 关键数据结构 struct uart_ 阅读全文
posted @ 2023-11-30 22:13 学习,积累,成长 阅读(838) 评论(0) 推荐(0) 编辑

  1. 1 少年 梦然
  2. 2 尘埃 林小柯
  3. 3 飞鸟和禅 任然
  4. 4 Dancing With Your Ghost Sasha Sloan
  5. 5 烟火人间 添儿呗
  6. 6 摘仙 伊格赛听、叶里
少年 - 梦然
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
点击右上角即可分享
微信分享提示