DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
我们先从系统的角度看看,最基本的硬件需求是什么?笔者认为是能执行,能进行运算。并不需要复杂的输入输出设备,只要能处理数据、能运行就可以。那么这种需求的最小系统是什么样子的呢?
图1-1是LogicPD公司基于DM 3730处理器的SOM(Systemon Module)。可以看到非常的小,比硬币大不了多少,这个系统只要接上电池就可以运行了。不要以为这么小,能力就弱。Motorola的里程碑系列手机使用的就是同样的处理器核心,是不是有些“007”设备的感觉呢!
图1-1 LogicPD DM 3730 SOM示意图
再来看看LogicPD的SOM都有些什么,系统框图如图1-2所示。
主要的芯片就三个:
①PMIC:它负责供电。
②DM 3730:它是主处理器。(www.chuimin.cn)
③NAND Flash/mDDR SDRAM chip:它是存储芯片,一个芯片中包括mDDR SDRAM和NAND Flash。
大家注意到框图中的PoP technology了吗?PoP是Package on Package的缩写,就是把两个芯片背靠背地焊在一起,这个非同一般,说明它们的关系非常亲密,要不为什么不把别的芯片PoP在一起呢。PoP在一起的芯片分别是主处理器DM 3730和NAND Flash/mDDR SDRAM chip。主处理器和内存是所有系统必需的,关系自然紧密了,这是能PoP的资本。PoP的优势很明显就是使电路板的面积减小了,这个对于手机等对电路板大小要求高的设备来说是非常重要的。
另外需要注意两点:其一是框图的左上从Connectors引入的power,其二是两个时钟(一个是32kHz Crystal,另一个是26MHz Oscillator)。为什么要用两个时钟,后续讲解电源管理实现时会讲到。注意这两点主要是想向大家说明,数字系统中,power和clock的概念一定要有,任何数字芯片以及芯片内部的数字模块都需要power和clock,没有了两者中任何一个,相应的数字部分都无法工作。换句话说,要想使数字模块工作,首先要提供power和clock。power和clock也会贯穿整个电源管理以及内核的驱动中。这是本书强调的第一个概念,也是非常重要的概念。
剩下的就是和Connectors连接的输入输出设备,后续章节讲驱动的时候都会涉及。
笔者和朋友一起做的SOM也是这种类型。只是将NAND Flash/mDDR SDRAM chip换成了EMMC/mDDR SDRAM chip,虽然不能通过PoP技术来减小电路板面积,但是可以使用大容量的EMMC来支持Android4.3(NAND对Android来说容量太小),从这个角度来说算是一件好事。
图1-2 LogicPD DM 3730 SOM系统框图
有关深入剖析Linux内核与设备驱动的文章
DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。......
2023-11-22
图3-3Linux内核整体框架③bridges:桥梁层。Linux内核通过统一的接口操作设备,这样就屏蔽了各个设备的差异,从而降低了和硬件的耦合关系。Linux内核为了简化实现,将共享资源的进程作为线程。考虑到外部事件需要对执行流程进行转换,另外不同的应用执行流程之间需要切换,这就要在Linux内核的逻辑层抽象出调度器这一逻辑功能。......
2023-11-22
也正是因为Linux内核的唯一性,各个不同发布版本拥有相同的框架。Linux内核是在整个Linux系统的最底层,它负责管理硬件,运行用户程序,并保持系统整体的安全性和完整性。可以说是Linux系统的根和灵魂。图3-1中看到Linux内核还有另一层面的含义。这对于Linux内核同样适用。所以对Linux内核的剖析、学习和研究也不能独立于系统进行,而是要综合考虑应用、内核和硬件等各方面的信息和内容。这样才能更全面、深刻地理解Linux内核。......
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
SPI是一种高速、全双工、同步总线。这样就允许单个SPI总线上连接多个SPI从设备。对于SPI总线从设备并没有固化的地址,而是通过CS信号区分不同的设备。另外因为SPI总线频率最高可以达到70MHz,所以需要较大吞吐量的操作方案进行数据传输,通常使用DMA进行操作。总体上来说,系统对于SPI总线驱动的需求就是要能实现总线的各种功能,并且满足类似于I2C总线的各种无关性需求。图7-5SPI总线数据传输信号规范......
2023-11-22
谈到Linux内核,大家的第一感觉就是一个庞大的系统、很多的模块和功能,实在是太复杂了。Linux内核在设计过程中这些都已考虑在其中,这也就提升了它的适用范围。抽象是人类的一个重要思维能力,从某种角度来说软件系统是对各种概念或者行为进行抽象,并加以管理。......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
相关推荐