DM 3730的USB主机控制器框架如图7-17所示。Linux内核为各种USB总线控制器开发了标准的操作接口,EHCI同样提供了统一的操作接口。......
2023-11-22
DM 3730的USB主机控制器框架如图7-17所示。图7-17引自《DM 3730芯片手册》中第3247页的框图。
从图7-17中可见,DM 3730中包含OHCI和EHCI,另外是一些连接属性的配置,这里以EHCI为例进行介绍。
1.初始化
先来看看初始化部分,还是通过platform driver的probe函数来了解细节,其内容如下:
图7-17 DM 3730 USB主机控制器框架图
从分析中可见,主要的工作是进行属性的设置、资源的申请和接口的注册,然后通过usb_add_hcd的调用实现功能。
相应的platform device是在系统初始化时通过usb_ehci_init进行的,这里就不进行详述了。(www.chuimin.cn)
2.总线传输
总线传输的控制器接口是由hc_driver来定义的,DM 3730 ehci相关的功能由ehci_omap_hc_driver来实现,具体细节如下:
从中可见,主要的接口都是标准的EHCI操作接口。Linux内核为各种USB总线控制器开发了标准的操作接口,EHCI同样提供了统一的操作接口。EHCI总线控制器整体架构如图7-18所示。图7-18引自《EHCI规范》。
从图7-18中可见,EHCI将传输分为periodic和asynchronous两个调度队列,中断和周期传输使用periodic调度,而其他传输使用asynchronous队列。EHCI的调度和传输都是通过ehci-q.c和ehci-sched.c来实现的。
图7-18 EHCI USB总线控制器整体框图
EHCI控制器实现原理:处理器需要把ISO数据和INT数据建立一张表放在内存中,而ECHI的寄存器FRINDEX则会跟踪这个表,每一个时间片加1,FRINDEX所指之处,控制器就会把这个指针所指向的数据结构中的数据送到总线上去。除了周期调度EHCI控制器外,还提拱了另一种调度来处理实时性要求不高的数据,叫做异步调度。处理器把块传输和控制传输的数据按协议要求的数据结构在内存中安排并建立一个链表,Async List Addr则会跟踪这个链表,总线控制器则把Async List Addr所指向的数据搬运到USB总线上去。
EHCI的实现都是按照EHCI控制器规范来做的,其中涉及很多EHCI规范的内容,这里就不进行详细分析了。
有关深入剖析Linux内核与设备驱动的文章
DM 3730的USB主机控制器框架如图7-17所示。Linux内核为各种USB总线控制器开发了标准的操作接口,EHCI同样提供了统一的操作接口。......
2023-11-22
也正是因为Linux内核的唯一性,各个不同发布版本拥有相同的框架。Linux内核是在整个Linux系统的最底层,它负责管理硬件,运行用户程序,并保持系统整体的安全性和完整性。可以说是Linux系统的根和灵魂。图3-1中看到Linux内核还有另一层面的含义。这对于Linux内核同样适用。所以对Linux内核的剖析、学习和研究也不能独立于系统进行,而是要综合考虑应用、内核和硬件等各方面的信息和内容。这样才能更全面、深刻地理解Linux内核。......
2023-11-22
图3-3Linux内核整体框架③bridges:桥梁层。Linux内核通过统一的接口操作设备,这样就屏蔽了各个设备的差异,从而降低了和硬件的耦合关系。Linux内核为了简化实现,将共享资源的进程作为线程。考虑到外部事件需要对执行流程进行转换,另外不同的应用执行流程之间需要切换,这就要在Linux内核的逻辑层抽象出调度器这一逻辑功能。......
2023-11-22
USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
SPI是一种高速、全双工、同步总线。这样就允许单个SPI总线上连接多个SPI从设备。对于SPI总线从设备并没有固化的地址,而是通过CS信号区分不同的设备。另外因为SPI总线频率最高可以达到70MHz,所以需要较大吞吐量的操作方案进行数据传输,通常使用DMA进行操作。总体上来说,系统对于SPI总线驱动的需求就是要能实现总线的各种功能,并且满足类似于I2C总线的各种无关性需求。图7-5SPI总线数据传输信号规范......
2023-11-22
VFS的实现是以“一切皆是文件”为需求出发点的。要理解VFS的框架首先看一下VFS和系统的静态关系框图,如图5-1所示。从图5-1可见,VFS是用户层的直接接口,是面向用户的服务。图5-1VFS和系统静态关系图在图5-2中每个节点被使用时都会在VFS层中创建dentry,这样可以快速通过文件名进行查找和定位,Linux内核中对dentry的管理组织形式如图5-3所示。以上是系统运行时VFS对文件名的组织管理,这是VFS管理的一个方面。......
2023-11-22
谈到Linux内核,大家的第一感觉就是一个庞大的系统、很多的模块和功能,实在是太复杂了。Linux内核在设计过程中这些都已考虑在其中,这也就提升了它的适用范围。抽象是人类的一个重要思维能力,从某种角度来说软件系统是对各种概念或者行为进行抽象,并加以管理。......
2023-11-22
相关推荐