08 2021 档案
摘要:一、配置开发板USB Gadget模式为rndis 1.内核配置: Device Drivers > [*] USB support > <*> USB Gadget Support > <*> USB Gadget Drivers (USB functions configurable throu
阅读全文
摘要:一、配置开发板USB Gadget模式为rndis 1.内核配置: Device Drivers > [*] USB support > <*> USB Gadget Support > <*> USB Gadget Drivers (USB functions configurable throu
阅读全文
摘要:configfs是什么? Configfs是一个基于ram的文件系统,它提供了与sysfs相反的功能。其中,sysfs是基于文件系统的内核对象视图,configfs是基于文件系统的内核对象管理器,或config_items。 使用sysfs,将在内核中创建一个对象(例如,当发现设备时),并将其注册到
阅读全文
摘要:通用 如果您正在使用Linux作为嵌入式操作系统编写打印机固件,则可能使用此驱动程序。这个驱动程序与在Linux主机系统上使用打印机没有任何关系。 您将需要一个USB设备控制器和Linux驱动程序,它接受一个使用Linux USB gadget API的gadget/“设备类”驱动程序。加载USB设
阅读全文
摘要:概述 Multifunction Composite Gadget(或g_multi)是一种复合gadget,它广泛使用复合框架来提供一个…多功能gadget。 在它的标准配置中,它提供了一个单一的USB配置与RNDIS[1](即以太网),USB CDC[2] ACM(即串行)和USB大容量存储功能
阅读全文
摘要:这是一个关于pxa2xx_spi驱动程序的迷你HOWTO。驱动程序将PXA2xx同步串行端口转换为SPI主控制器。该驱动程序具有以下特点: 支持任何PXA2xx和兼容SSP。 SSP PIO和SSP DMA数据传输。 外部和内部(SSPFRM)芯片选择。 每个从设备(芯片)配置。 完全暂停,冻结,恢
阅读全文
摘要:SPI设备有一个有限的用户空间API,支持对SPI从设备的基本半双工 read() 和 write() 访问。使用 ioctl() 请求,全双工传输和设备I/O配置也可用。 #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #
阅读全文
摘要:SPI是什么? “串行外设接口”(SPI)是一种同步四线串行链路,用于连接微控制器到传感器、内存和外设。这是一个简单的“de facto”标准,还没有复杂到需要一个标准化机构。SPI使用一个主/从配置。 这三根信号线包含一个时钟(SCK,通常在10兆赫兹的量级),以及带有“主输出,从输出”(MOSI
阅读全文
摘要:工业 IIO configfs 支持 1. 概述 Configfs是一个基于文件系统的内核对象管理器。IIO使用了一些可以用configfs轻松配置的对象(例如:设备、触发器)。 2. 用法 为了在IIO中使用configfs支持,我们需要在编译时通过CONFIG_IIO_CONFIGFS配置选项选
阅读全文
摘要:注意:只有当你在处理内核2.6中发现的一些旧代码时,这一节才有用。如果您使用的是最新的内核,您可以安全地跳过这一节。 直到内核2.6.32,许多I2C驱动程序都使用 <linux/i2c.h> 提供的帮助宏,它创建了标准模块参数,让用户控制驱动程序探测I2C总线和连接到设备的方式。这些参数被称为pr
阅读全文
摘要:I2C协议支持两种设备地址:普通的7位地址和扩展的10位地址集。地址集不相交:7位地址0x10与10位地址0x10不相同(尽管单个设备可以对两者都作出响应)。为了避免歧义,用户看到10位地址映射到不同的地址空间,即0xa000-0xa3ff。前导0xa(= 10)表示10位模式。用于在sysfs中创
阅读全文
摘要:Linux I2C slave接口描述 如果使用的I2C控制器具有slave功能,那么Linux也可以成为I2C slave控制器。为此,需要总线驱动程序中的slave支持以及提供实际功能的独立于硬件的软件后端。后者的一个例子是slave-eeprom驱动程序,它充当双内存驱动程序。总线上的另一个I
阅读全文
摘要:Linux I2C 故障注入 可以将基于GPIO的I2C总线master驱动程序配置为提供故障注入功能。然后,它被连接到另一个I2C总线,该总线由测试中的I2C总线master驱动程序驱动。GPIO故障注入驱动程序可以在总线上创建特殊的状态,其他I2C总线master驱动程序应该优雅地处理这些状态。
阅读全文
摘要:介绍 因为不是每个I2C或SMBus适配器都实现了I2C规范中的所有内容,当client被赋予附加到适配器的选项时,它不能相信它需要的所有东西都实现了:client需要一些方法来检查适配器是否具有所需的功能。 功能常量 关于最新的功能常量列表,请查看<uapi/linux/i2c.h>! I2C_F
阅读全文
摘要:本文总结了在I2C/SMBus堆栈中使用故障代码的最重要约定。 “Fault”并不总是“Error” 并非所有的fault报告都含有errors,“page faults”应该是一个熟悉的例子。软件在出现短暂故障(faults)后,经常会重试幂等操作。在某些情况下,可能存在一些更奇特的恢复方案,例如
阅读全文
摘要:由于I2C是低速总线,其上传输的大部分消息都很小,因此不认为它是DMA访问的主要用户。在撰写本文时,只有10%的I2C总线master驱动程序实现了DMA支持。而且绝大多数事务都很小,因此为其设置DMA可能会比普通的PIO传输增加更多的开销。 因此,并不强制要求I2C消息的缓冲区是DMA安全的。当这
阅读全文
摘要:通常,I2C设备是由内核驱动程序控制的。但是也可以通过/dev接口从用户空间访问适配器上的所有设备。为此,您需要加载模块i2c-dev。 每个注册的I2C适配器获得一个从0开始计数的数字。您可以检查/sys/class/i2c-dev/以查看哪个适配器对应哪个数字。或者,您可以运行“i2cdetec
阅读全文
摘要:对于那些想要为I2C或SMBus设备编写内核驱动程序,使用Linux作为协议host/master(而不是slave)的人来说,这是一个小指南。 要设置一个驱动程序,您需要做几件事。有些是可选的,有些事情可以做得稍微不同或完全不同。把它作为指导,而不是规则手册! 备注 尽量保持内核名称空间的整洁。最
阅读全文
摘要:概述 由于I2C MUX (I2C多路复用器)的存在,I2C拓扑会变得很复杂。Linux内核将MUX通道抽象为逻辑I2C总线号。然而,从I2C总线物理编号和MUX拓扑 到 逻辑I2C总线编号的映射还存在认知差距。本文档旨在填补这一空白,以便读者(例如硬件工程师和新软件开发人员)通过了解物理I2C拓扑
阅读全文
摘要:描述 i2c-mux-gpio 是一个i2c mux驱动程序,提供从主i2c总线和通过GPIO管脚控制的硬件MUX访问i2c总线段。 例如: Bus segment 1 - - - - - | | SCL/SDA | | | | | | | | | | | | Bus segment 2 | | |
阅读全文
摘要:构建更复杂的I2C拓扑,而不是带有一个适配器和一个或多个设备的直观的I2C总线,有几个原因。 在总线上可能需要一个多路交换器来防止地址冲突。 总线可能可以从一些外部总线主机访问,并且可能需要仲裁来确定是否可以访问总线。 一个设备(特别是射频调谐器)可能想要避免来自I2C总线的数字噪声,至少在大多数时
阅读全文
摘要:与PCI或USB设备不同,I2C设备不在硬件级别枚举。相反,软件必须知道每个I2C总线段上连接了哪些设备,以及这些设备使用的地址。由于这个原因,内核代码必须显式地实例化I2C设备。根据上下文和需求,有几种方法可以实现这一点。 方法一:静态声明I2C设备 当I2C总线是系统总线时(如许多嵌入式系统的情
阅读全文
摘要:下面是SMBus协议的概要。它适用于协议的所有版本(1.0、1.1和2.0)。在本文的最后对某些协议特性进行了简要描述,这些特性是本软件包不支持的。 有些适配器只理解SMBus(系统管理总线)协议,它是I2C协议的一个子集。幸运的是,许多设备只使用相同的子集,这使得将它们放在SMBus上成为可能。
阅读全文
摘要:符号注解 S Start 条件 P Stop 条件 Rd/Wr (1 bit) 读/写位。Read等于1, Write等于0。 A, NA (1 bit) 确认(ACK)和不确认(NACK)位 Addr (7 bits) I2C 7位地址。注意,这可以像往常一样进行扩展,以获得10位I2C地址。 C
阅读全文
摘要:I²C(发音:I方C,在内核文档中写成I2C)是由Philips开发的协议。它是一个慢的两线协议(变速,高达400khz),具有高速扩展(3.4 MHz)。它提供了一种廉价的总线,用于连接不频繁或低带宽通信需求的许多类型的设备。I2C广泛应用于嵌入式系统。有些系统使用的变体不符合品牌要求,因此不被宣
阅读全文
摘要:如果我们想要在ubuntu20.04系统下开发rasp的i2c设备驱动程序,那我们需要在相应的i2c设备树节点里添加设备的node信息。我们先看/boot下有哪些信息: # ls /boot/ -l total 42275-rw-r--r-- 1 root root 233406 Apr 14 17
阅读全文
摘要:概述 USB Linux Gadget是一种具有UDC (USB设备控制器)的设备,可以连接到USB主机,以扩展其附加功能,如串口或大容量存储能力。 一个gadget被它的主机视为一组配置,每个配置都包含一些接口,从gadget的角度来看,这些接口被称为功能,每个功能代表一个串行连接或一个SCSI磁
阅读全文
摘要:消费者接口只要求驱动程序包含一个头文件: #include <linux/regulator/consumer.h> 消费者可以是静态的,也可以是动态的。静态调节器只需要一个固定的电源,而动态调节器需要在运行时对调节器进行主动管理。从消费者的角度来看,调节器设备在内核中被表示为一个struct re
阅读全文
摘要:调节器(regulator)是一种为其他设备供电的电子设备。由调节器供电的设备被称为消费者。它们消耗调节器提供的电力。大多数调节器可以启用和禁用他们的输出,一些也可以控制他们的输出电压或电流。驱动程序应该通过特定的函数和数据结构向消费者公开这些功能,这些在稍后讨论。 提供物理调节的芯片被称为电源管理
阅读全文