DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2025-09-30
USB(Universal Serial Bus)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等通信产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其他相关领域。
USB最初是由英特尔公司与微软公司倡导发起的,其最大的特点是支持热插拔和即插即用。当设备插入时,主机枚举到此设备并加载所需的驱动程序,使用比其他总线方便。在速度方面,USB 1.1的最大传输带宽为12Mbit/s,USB 2.0的最大传输带宽为480Mbit/s,USB 3.0的最大传输带宽为5Gbit/s。
USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB主机处于主模式,设备处于从模式。USB总线是由主机控制器和若干hub设备以及与hub连接的从设备组成的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。

图7-12 USB总线拓扑
从图7-12可见,一个Host控制器会和root hub绑定,并可以通过Hub连接多个设备。
USB可以连接的外设有鼠标、键盘、游戏手柄、游戏杆、扫描仪、数码相机、打印机、硬盘和网络部件等各种设备。USB总线已经成为使用最广泛的设备连接标准。
规范中为了实现以上的功能对总线中的很多环节都进行了定义。一个USB物理设备可以承担多种功能,USB的术语中设备(device)指的是功能(functions),更注重逻辑性。规范中关于主从设备的交互如图7-13所示。
(https://www.chuimin.cn)
图7-13 USB主从设备交互框图
从图7-13可见,管道(pipe)把主机控制器和端点(endpoint)连接起来形成一个交互通道进行主从设备的交互。端点只能单向(进/出)传输数据,管道也是单向的。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。按照各自的传输类型,管道被分为4类:
●控制传输(Control)。一般用于短的、简单的设备命令和状态反馈,例如用于总线控制的0号管道。
●同步传输(Isochronous)。按照有保障的速度传输,可能有数据丢失,例如实时的音频和视频。
●中断传输(Interrupt)。用于必须保证尽快反应的设备(有限延迟),例如鼠标和键盘。
●批量传输(Bulk)。使用余下的带宽大量地(但是没有对于延迟、连续性、带宽和速度的保证)传输数据,例如普通的文件传输。
为了访问端点,必须获得设备一个分层的配置。连接到主机的设备只有一个设备描述符(device descriptors),而设备描述符有若干配置描述符(configuration descriptors)。这些配置一般与状态相对应,例如活跃和节能模式。每个配置描述符有若干接口描述符(interface setting),用于描述设备的一个功能方面,所以可以用于描述从设备不同的功能,如一个相机可能拥有视频和音频两个接口。接口描述符有一个默认接口设置(default interface set-tings)和可能多个替代接口设置(alternate interface settings),接口设置中包含端点描述符。一个端点能够在多个接口和替代接口设置之间复用。
总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。
相关文章
DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2025-09-30
可以说I2C已经成为嵌入式设备不可或缺的总线形式。嵌入式处理器通常作为I2C总线的主设备,而传感器等外围设备是总线上的从设备。I2C总线数据传输信号规范如图7-2所示。图7-2I2C总线数据传输信号规范从图7-2可见,具体传输是由Start和Stop标记的,并且每传送一个字长都需要有ACK标记。总体上来说,系统对I2C总线驱动的需求就是要能实现总线的各种功能,并且满足以上的各种无关性需求。......
2025-09-30
SPI总线框架对这两类设备进行管理,具体的框架如图7-6所示。通常的SPI驱动都是在内核实现并在内核态执行的,所以就不对spidev进行详细的分析。SPI总线框架整体的功能就是这样,接下来看看具体各部分的实现。在SPI总线框架中相应的实体是spi_board_info,内容如下:其中的主要信息是与总线信号相关的属性。......
2025-09-30
图3-3Linux内核整体框架③bridges:桥梁层。Linux内核通过统一的接口操作设备,这样就屏蔽了各个设备的差异,从而降低了和硬件的耦合关系。Linux内核为了简化实现,将共享资源的进程作为线程。考虑到外部事件需要对执行流程进行转换,另外不同的应用执行流程之间需要切换,这就要在Linux内核的逻辑层抽象出调度器这一逻辑功能。......
2025-09-30
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2025-09-30
具体分析设备模型中的设备管理,首先要分析device结构。从device可见,重点是管理的资源,当然也包含针对sys文件系统关联的属性。而设备的层次关系在实际的情况下通常是从逻辑层的功能设备逐渐到物理层的总线设备,最终到platform bus中对应的device,这样系统就建立了完整的设备层次关系。设备模型通知udev的方式如图5-19所示。通过uevent通知到应用层,就完成设备管理创建设备文件到应用层的操作。......
2025-09-30
内存管理是Linux内核非常重要的功能,可以说是最基础的功能之一。图4-31存储系统层次结构整个内存管理的首要需求自然是内存物理空间的管理。特别是视频应用需求的不断增长使得内存管理的需求也发生了变化,由于图像分辨率以及显示分辨率的不断提高,而协处理器通常又需要连续的物理内存,这样就有对于几兆甚至十几兆连续内存管理的需求。而原有的Linux内核内存管理并不能满足这种需求,这样就需要开发新的内存管理方法。......
2025-09-30
图4-25中断在系统中的连接示意图从图4-25中可见,中断相关的硬件包括设备、中断控制器和处理器。这需要对中断控制器进行不同的操作逻辑来避免该类问题的发生,中断处理逻辑需要和中断控制器的操作相结合以使中断处理能正确的执行。以上主要还是功能需求,对于性能方面,中断处理都是有时间要求的,所以会有中断响应时间这一性能指标的要求。好的系统需要在大量上报中断时仍能有较小的中断响应时间。......
2025-09-30
相关推荐