您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
Linux内核/驱动/应用

 
作者: 老司机带我飞
   次浏览      
 2021-11-23
 
编辑推荐:
本文简单地讲解了驱动软件工程师必备的硬件基础知识,描述了处理器、存储器的分类以及各种处理器、存储器的原理与用途,并分析了常见的外围设备接口与总线的工作方式。 此外,本章还讲述了对驱动工程师进行实际项目开发有帮助的原理图、硬件时序分析方法,芯片数据手册阅读方法以及万用表、示波器和逻辑分析仪的使用方法。
本文来自于 知乎 ,由火龙果软件Linda编辑、推荐。

设备驱动作用

没有操作系统设备驱动

设备驱动接口直接提供给应用软件工程师,应用软件没有跨越任何层次就直接访问了设备驱动的接口,如下图所示:

有操作系统的设备驱动

所有设备驱动设计必须符合操作系统内核的接口规定,驱动变成连接硬件和内核的桥梁,对外呈现为操作系统的API,不再给应用软件工程师直接提供接口。应用软件工程师需要通过系统调用或其它方式间接操作驱动设备接口。

设备驱动介绍

设备分类及特点

计算机系统的硬件主要由CPU、存储器和外设组成。随着IC 制作工艺的发展,目前,芯片的集成度越来越高,往往在CPU内部就集成了存储器和外设适配器。譬如,相当多的ARM、PowerPC、MIPS等处理器都集成了 UART、 I2C 控制器、 SPI 控制器、 USB 控制器、SDRAM控制器等,有的处理器还集成了 GPU(图形处理器)、视频编解码器等。驱动针对的对象是存储器和外设(包括 CPU 内部集成的存储器和外设),而不是针对CPU 内核。 Linux 将存储器和外设分为 3 个基础大类。

● 字符设备。

● 块设备。

● 网络设备

Linux 设备驱动与整个软硬件系统的关系

如下图所示,除网络设备外,字符设备与块设备都被映射到 Linux 文件系统的文件和

目录,通过文件系统的系统调用接口 open()、 write()、 read()、 close() 等即可访问字符设备和块设备。所有字符设备和块设备都统一呈现给用户。 Linux 的块设备有两种访问方法:一种是类似 dd 命令对应的原始块设备,如“ /dev/sdb1”等;另外一种方法是在块设备上建立FAT、 EXT4、 BTRFS 等文件系统,然后以文件路径如“ /home/barry/hello.txt”的形式进行访问。在 Linux 中,针对 NOR、 NAND 等提供了独立的内存技术设备( Memory TechnologyDevice, MTD)子系统,其上运行 YAFFS2、 JFFS2、 UBIFS 等具备擦除和负载均衡能力的文件系统。针对磁盘或者 Flash 设备的 FAT、 EXT4、 YAFFS2、 JFFS2、 UBIFS 等文件系统定义了文件和目录在存储介质上的组织。而 Linux 的虚拟文件系统则统一对它们进行了抽象。

学习Linux设备驱动要求

Linux 设备驱动的学习是一项浩繁的工程,包含如下重点、难点。

● 编写 Linux 设备驱动要求工程师有非常好的硬件基础,懂得 SRAM、 Flash、 SDRAM、磁盘的读写方式, UART、 I2C、 USB 等设备的接口以及轮询、中断、 DMA 的原理,PCI 总线的工作方式以及 CPU 的内存管理单元( MMU)等

● 编写 Linux 设备驱动要求工程师有非常好的 C 语言基础,能灵活地运用 C 语言的结构体、指针、函数指针及内存动态申请和释放等。

● 编写 Linux 设备驱动要求工程师有一定的 Linux 内核基础,虽然并不要求工程师对内核各个部分有深入的研究,但至少要明白驱动与内核的接口。尤其是对于块设备、网络设备、 Flash 设备、串口设备等复杂设备,内核定义的驱动体系结构本身就非常复杂。

● 编写 Linux 设备驱动要求工程师有非常好的多任务并发控制和同步的基础,因为在驱动中会大量使用自旋锁、互斥、信号量、等待队列等并发与同步机制。

驱动设计硬件基础

底层驱动工程师跟硬件打交道,需要对嵌入式硬件原理以及相关微控制器、微处理器、数字信号处理器和特定领域的处理器体系结构和指令集有所了解。嵌入式系统使用的各类存储器和CPU接口,外设接口与总线工作方式,如串口、I2C、SPI、USB、以太网接口、PCI/PCIE、SDIO等,另外也会用到CPLD和FPGA。实际开发过程中需要Get的技能:

看懂和分析原理图

电路时序分析

快速阅读和获取芯片数据手册相关信息

熟悉常用仪器仪表使用方法,万用表、示波器、逻辑分析仪等

处理器

通用处理器

主流的通用处理器( GPP)多采用 SoC(片上系统)的芯片设计方法,集成了各种功能模块,每一种功能都是由硬件描述语言设计程序,然后在 SoC 内由电路实现的。ARM 内核的设计技术被授权给数百家半导体厂商,做成不同的 SoC 芯片。 ARM 的功耗很低,在当今最活跃的无线局域网、 3G、手机终端、手持设备、有线网络通信设备等中应用非常广泛。至本书编写时,市面上绝大多数智能手机、平板电脑都使用 ARM SoC 作为主芯片。很多 ARM 主控芯片的集成度非常高,除了集成多核 ARM 以外,还可能集成图形处理器、视频编解码器、浮点协处理器、 GPS、 WiFi、蓝牙、基带、 Camera 等一系列功能。市场比较常见的ARM芯片提供商包括高通、三星、英伟达、联发科、海思、德州仪器、博通等等。

中央处理器的体系结构可以分为两类,一类为冯· 诺依曼结构,另一类为哈佛结构。 Intel 公司的中央处理器、 ARM 的 ARM7、 MIPS 公司的 MIPS处 理 器 采 用了冯·诺 依曼结构; 而AVR、 ARM9、 ARM10、 ARM11 以 及Cortex A 系列等则采用了哈佛结构。冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。

而哈佛结构将程序指令和数据分开存储,指令和数据可以有不同的数据宽度。此外,哈佛结构还采用了独立的程序总线和数据总线,分别作为 CPU 与每个存储器之间的专用通信路径,具有较高的执行效率。

许多芯片采用的是下图所示的改进的哈佛架构,它具有独立的地址总线和数据总线,两条总线由程序存储器和数据存储器分时共用。因此,改进的哈佛结构针对程序和数据,其实没有独立的总线,而是使用公用数据总线来完成程序存储模块或数据存储模块与 CPU 之间的数据传输,公用的地址总线来寻址程序和数据。

数字信号处理器

数字信号处理器(DSP)针对通信、图像、语音和视频处理等领域的算法而设计。它包含独立的硬件乘法器。 DSP 的乘法指令一般在单周期内完成,且优化了卷积、数字滤波、FFT(快速傅里叶变换)、相关矩阵运算等算法中的大量重复乘法。

DSP 分为两类,一类是定点 DSP,另一类是浮点 DSP。浮点 DSP 的浮点运算用硬件来实现,可以在单周期内完成,因而其浮点运算处理速度高于定点 DSP。而定点 DSP 只能用定点运算模拟浮点运算。

德州仪器( TI)、美国模拟器件公司( ADI)是全球 DSP 的两大主要厂商。

多处理器融合

通用处理器和数字信号处理器,甚至组合和时序逻辑CPLD、FPGA融合可以取长补短,如TI芯片厂商提供的ARM+DSP双核以及多核ARM、DSP处理器,内部还集成专用的音视频图像编解码和ISP,具体芯片有DM365/368/386,DM6467,DM8168,DM8127,DM6657/6455等,都是用于视频图像处理领域,另外Altera与Xilinx ARM+FPGA的SOC,也用于视频监控、汽车辅助驾驶以及工程自动化等。

存储器

存储器主要可分类为只读储存器( ROM)、闪存( Flash)、随机存取存储器( RAM)、光 /磁介质储存器。

ROM 还 可 再 细 分 为 不 可 编 程 ROM、 可 编 程 ROM( PROM)、 可 擦 除可 编 程 ROM( EPROM)和电可擦除可编程 ROM( E2PROM), E2PROM 完全可以用软件来擦写,已经非常方便了。

NOR(或非)和 NAND(与非)是市场上两种主要的 Flash 闪存技术。典型的类SRAM接口如下图所示:

各种 ROM、 Flash 和磁介质存储器都属于非易失性存储器( NVM)的范畴,

掉电时信息不会丢失,而 RAM 则与此相反。

RAM 也可再分为静态 RAM( SRAM)和动态 RAM( DRAM)。 DRAM 以电荷形式进

行存储,数据存储在电容器中。由于电容器会因漏电而出现电荷丢失,所以 DRAM 器件需

要定期刷新。 SRAM 是静态的,只要供电它就会保持一个值, SRAM 没有刷新周期。每个

SRAM 存储单元由 6 个晶体管组成,而 DRAM 存储单元由 1 个晶体管和 1 个电容器组成。

各存储器分类如下图所示:

接口和总线

串口

RS-232、 RS-422 与 RS-485 都是串行数据接口标准,RS-232C 标准接口有 25条线( 4 条数据线、 11 条控制线、 3 条定时线、 7 条备用和未定义线),常用的只有 9 根,它们是 RTS/CTS(请求发送 / 清除发送流控制)、 RxD/TxD(数据收发)、 DSR/DTR(数据终端就绪 / 数据设置就绪流控制)、 DCD(数据载波检测,也称 RLSD,即接收线信号检出)、Ringing-RI(振铃指示)、 SG(信号地)信号。 RTS/CTS、 RxD / TxD、 DSR/DTR 等信号的定义如下。

● RTS:用来表示 DTE 请求 DCE 发送数据,当终端要发送数据时,使该信号有效。

● CTS:用来表示 DCE 准备好接收 DTE 发来的数据,是对 RTS 的响应信号。

● RxD: DTE 通过 RxD 接收从 DCE 发来的串行数据。

● TxD: DTE 通过 TxD 将串行数据发送到 DCE。

● DSR:有效( ON 状态)表明 DCE 可以使用。

● DTR:有效( ON 状态)表明 DTE 可以使用。

● DCD :当本地 DCE 设备收到对方 DCE 设备送来的载波信号时,使 DCD 有效,通知

DTE 准备接收,并且由 DCE 将接收到的载波信号解调为数字信号,经 RxD 线送给

DTE。

● Ringing-RI:当调制解调器收到交换台送来的振铃呼叫信号时,使该信号有效( ON 状

态),通知终端,已被呼叫。

最简单的 RS-232C 串口只需要连接 RxD、 TxD、 SG 这 3 个信号,并使用 XON/XOFF 软

件流控。

组成一个 RS-232C 串口的硬件原理如下图所示,从 CPU 到连接器依次为 CPU、 UART(通用异步接收器发送器,作用是完成并 / 串转换)、 CMOS/TTL 电平与 RS-232C 电平转换、DB9/DB25 或自定义连接器。

I2C

组成 I2C 总线的两个信号为数据线 SDA 和时钟 SCL。为了避免总线信号的混乱,要求各

设备连接到总线的输出端必须是开漏输出或集电极开路输出的结构。总线空闲时,上拉电阻使 SDA 和 SCL 线都保持高电平。根据开漏输出或集电极开路输出信号的“线与”逻辑, I2C总线上任意器件输出低电平都会使相应总线上的信号线变低.

I2C 设备上的串行数据线 SDA 接口电路是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。同样地,串行时钟线 SCL 也是双向的,作为控制总线数据传送的主机要通过 SCL 输出电路发送时钟信号,并检测总线上 SCL 上的电平以决定什么时候发下一个时钟脉冲电平;作为接收主机命令的从设备需按总线上 SCL 的信号发送或接收SDA 上的信号,它也可以向 SCL 线发出低电平信号以延长总线时钟信号周期。当 SCL 稳定在高电平时, SDA 由高到低的变化将产生一个开始位,而由低到高的变化则产生一个停止位,如下图所示。

开始位和停止位都由 I2C 主设备产生。在选择从设备时,如果从设备采用 7 位地址,则主设备在发起传输过程前,需先发送 1 字节的地址信息,前 7 位为设备地址,最后 1 位为读写标志。之后,每次传输的数据也是 1 字节,从 MSB 开始传输。每个字节传完后,在 SCL30 的第 9 个上升沿到来之前,接收方应该发出 1 个 ACK 位。 SCL 上的时钟脉冲由 I2C 主控方发出,在第 8 个时钟周期之后,主控方应该释放 SDA, I2C 总线的时序如下图所示。

SPI

SPI( Serial Peripheral Interface,串行外设接口)总线系统是一种同步串行外设接口, 它可以使 CPU 与各种外围设备以串行方式进行 通 信 以 交 换 信 息。 一 般 主 控 SoC 作 为SPI 的“主”,而外设作为 SPI 的“从”。SPI 接口一般使用 4 条线:串行时钟线( SCLK)、主机输入 / 从机输出数据线MISO、主机输出 / 从机输入数据线 MOSI和低电平有效的从机选择线 SS(在不同的文献里,也常称为 nCS、 CS、 CSB、 CSN、nSS、 STE、 SYNC 等)。 下图演 示 了 1个主机连接 3 个 SPI 外设的硬件连接图。

USB

USB(通用串行总线)是 Intel、 Microsoft 等厂商为解决计算机外设种类的日益增加与有限的主板插槽和端口之间的矛盾而于 1995 年提出的,它具有数据传输率高、易扩展、支持即插即用和热插拔的优点,目前已得到广泛应用。

USB 1.1 包含全速和低速两种模式,低速方式的速率为 1.5Mbit/s,支持一些不需要很大数据吞吐量和很高实时性的设备,如鼠标等。全速模式为 12Mbit/s,可以外接速率更高的外设。在 USB 2.0 中,增加了一种高速方式,数据传输率达到 480Mbit/s,半双工,可以满足更高速外设的需要。而 USB 3.0(也被认为是 Super Speed USB)的最大传输带宽高达 5.0Gbit/s(即 640MB/s),全双工。

USB 2.0 总线的机械连接非常简单,采用 4 芯的屏蔽线,一对差分线( D+、 D-)传送信号,另一对( VBUS、电源地)传送 +5V 的直流电。 USB 3.0 线缆则设计了 8 条内部线路,除VBUS、电源地之外,其余 3 对均为数据传输线路。其中保留了 D+ 与 D- 这两条兼容 USB2.0 的线路,新增了 SSRX 与 SSTX 专为 USB 3.0 所设的线路。

在嵌入式系统中,电路板若需要挂接 USB 设备,则需提供 USB 主机( Host)控制器和连接器;若电路板需要作为 USB 设备,则需提供 USB 设备适配器和连接器。目前,大多数SoC 集成了 USB 主机控制器( 以连接 USB 外设)和设备适配器(以将本嵌入式系统作为其他计算机系统的 USB 外设,如手机充当 U 盘)。由 USB 主机、设备和 Hub 组成的 USB 系统的物理拓扑结构如下图所示。

每一个 USB 设备会有一个或者多个逻辑连接点在里面,每个连接点叫端点。 USB 提供了多种传输方式以适应各种设备的需要,一个端点可以选择如下一种传输方式。

控制(Control)传输方式

控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给 USB 设备发送通用命令。所有 USB 设备必须支持标准请求( Standard Request),控制传输方式和端点 0。

同步(Isochronous)传输方式

同步传输提供了确定的带宽和间隔时间,它用于时间要求严格并具有较强容错性的流数

据传输,或者用于要求恒定数据传送率的即时应用。例如进行语音业务传输时,使用同步传

输方式是很好的选择。同步传输也常称为“ Streaming Real-time”传输。

中断(Interrupt)传输方式

中断方式传送是单向的,对于 USB 主机而言,只有输入。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量分散的、不可预测的数据传输场合,

键盘、游戏杆和鼠标属于这一类型。

批量(Bulk)传输方式

批量传输主要应用在没有带宽、间隔时间要求的批量数据的传送和接收中,它要求保证

传输。打印机和扫描仪属于这种类型。而 USB 3.0 则增加了一种 Bulk Streams 传输模式, USB 2.0 的 Bulk 模式只支持 1 个数据流,而 Bulk Streams 传输模式则可以支持多个数据流,每个数据流被分配一个 Stream ID( SID),每个 SID 与一个主机缓冲区对应。

在USB 架构中,集线器负责检测设备的连接和断开,利用其中断 IN 端点( Interrupt INEndpoint)来向主机报告。一旦获悉有新设备连接上来,主机就会发送一系列请求给设备所挂载的集线器,再由集线器建立起一条连接主机和设备之间的通信通道。然后主机以控制传输的方式,通过端点 0 对设备发送各种请求,设备收到主机发来的请求后回复相应的信息,进行枚举( Enumerate)操作。因此 USB 总线具备热插拔的能力。

以太网接口

以太网接口由 MAC(以太网媒体接入控制器)和 PHY(物理接口收发器)组成。以太

网 MAC 由 IEEE 802.3 以太网标准定义,实现了数据链路层。常用的 MAC 支持 10Mbit/s 或100Mbit/s 两种速率。吉比特以太网(也称为千兆位以太网)是快速以太网的下一代技术,将网速提高到了 1000 Mbit/s。千兆位以太网以 IEEE 802.3z 和 802.3ab 发布,作为 IEEE 802.3标准的补充。

MAC 和 PHY 之间采用 MII(媒体独立接口)连接,它是 IEEE-802.3 定义的以太网行业标准,包括 1 个数据接口与 MAC 和 PHY 之间的 1 个管理接口。数据接口包括分别用于发送和接收的两条独立信道,每条信道都有自己的数据、时钟和控制信号, MII 数据接口总共需要 16 个信号。 MII 管理接口包含两个信号,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制 PHY。

一 个 以 太 网 接 口 的 硬 件 电 路 原 理 如下图 所 示, 从 CPU 到 最 终 接 口 依 次 为 CPU、MAC、 PHY、以太网隔离变压器、 RJ45 插座。以太网隔离变压器是以太网收发芯片与连接器之间的磁性组件,在其两者之间起着信号传输、阻抗匹配、波形修复、信号杂波抑制和高电压隔离作用

许多处理器内部集成了 MAC 或同时集成了 MAC 和 PHY,另有许多以太网控制芯片也

集成了 MAC 和 PHY。

CPLD和FPGA

原理图分析

硬件时序分析

时序分析的概念

驱动工程师一般不需要分析硬件的时序,但是鉴于许多企业内驱动工程师还需要承担电

路板调试的任务,因此,掌握时序分析的方法也就比较必要了。

对驱动工程师或硬件工程师而言,时序分析的意思是让芯片之间的访问满足芯片数据手册中时序图信号有效的先后顺序、采样建立时间( Setup Time)和保持时间( Hold Time)的要求,在电路板工作不正常的时候,准确地定位时序方面的问题。

建立时间是指在触发器的时钟信号边沿到来以前,数据已经保持稳定不变的时间,如果

建立时间不够,数据将不能在这个时钟边沿被打入触发器;保持时间是指在触发器的时钟信

号边沿到来以后,数据还需稳定不变的时间,如果保持时间不够,数据同样不能被打入触发

器。如下图所示,数据稳定传输必须满足建立时间和保持时间的要求,当然,在一些情况下,建立时间和保持时间的值可以为零。

典型的硬件时序

最典型的硬件时序是 SRAM 的读写时序,在读 / 写过程中涉及的信号包括地址、数据、

片选、读 / 写、字节使能和就绪 / 忙。对于一个 16 位、 32 位(甚至 64 位)的 SRAM,字节使能表明哪些字节被读写。

下图给出了 SRAM 的读时序,写时序与此相似。首先,地址总线上输出要读(写)的地址,然后发出 SRAM 片选信号,接着输出读(写)信号,之后读(写)信号要经历数个等待周期。当 SRAM 读(写)速度比较慢时,等待周期可以由 MCU 的相应寄存器设置,也可以通过设备就绪 / 忙(如图 2.27 中的 nWait)向 CPU 报告,这样,读写过程中会自动添加等待周期。

芯片数据手册阅读方法

芯片数据手册往往长达数百页,甚至上千页,而且全部是英文,从头到尾不加区分地阅

读需要花费非常长的时间,而且不一定能获取对设计设备驱动有帮助的信息。芯片数据手册

的正确阅读方法是快速而准确地定位有用信息,重点阅读这些信息,忽略无关内容。下面以

S3C6410A 的数据手册为例来分析阅读方法,为了直观地反映阅读过程,本节的图都是直接

从数据手册中抓屏而得到的。打开 S3C6410 A 的数据手册,发现页数为 1378 页,从头读到尾是不现实的。S3C6410A 数据手册的第 1 章“ PRODUCT OVERVIEW”(产品综述)是必读的,通过阅读这一部分可以获知整个芯片的组成。这一章往往会给出一个芯片的整体结构图,并对芯片内的主要模块进行一个简洁的描述。 S3C6410A 的整体结构图如图 2.27 所示(见数据手册第 61 页)。

第 2 ~ 43 章 中 的 每 一 章 都 对 应 S3C6410A 整 体 结 构 图 中 的 一 个 模 块, 图 2.28 为 从Adobe Acrobat 中直接抓取的 S3C6410A 数据手册的目录结构图。

第 2 章“ MemoryMap”(内存映射)比较关键,对于定位存储器和外设所对应的基址有直接指导意义,这一部分应该细看。

第 3 ~ 34 章对应于 CPU 内部集成的外设或总线控制器,当具体编写某接口的驱动时,应该详细阅读,主要是分析数据、控制、地址寄存器(数据手册中一般会以表格列出)的访问控制和具体设备的操作流程(数据手册中会给出步骤,有的还会给出流程图)。譬如为了编写 S3C6410A 的 I2C 控制器驱动,我们需要详细阅读类似图 2.29 的寄存器定义表格和图 2.30的操作流程图。

第 44 章“ ELECTRICAL DATA ”(对于电气数据,在图 2.28 中未画出),描述芯片的电

气特性,如电压、电流和各种工作模式下的时序、建立时间和保持时间的要求。所有的数

据手册都会包含类似章节,这一章对于硬件工程师比较关键,但是,一般来说,驱动工程师并不需要阅读。

第 45 章“ MECHANICAL DATA”(机械数据)描述芯片的物理特性、尺寸和封装,硬件

工程师会依据这一章绘制芯片的封装( Footprint),但是,驱动工程师无须阅读。

仪器仪表使用

万用表

在电路板调试过程中主要使用万用表的两个功能。

测量电平。

使用二极管挡测量电路板上网络的连通性,当示波器被设置在二极管挡,测量连通的

网络会发出“嘀嘀”的鸣叫,否则,没有连通。

示波器

示波器是利用电子示波管的特性,将人眼无法直接观测的交变电信号转换成图像,显示

在荧光屏上以便测量的电子仪器。它是观察数字电路实验现象、分析实验中的问题、测量实

验结果必不可少的重要仪器。

使用示波器时应主要注意调节垂直偏转因数选择( VOLTS/DIV)和微调、时基选择

( TIME/DIV)和微调以及触发方式。

如果 VOLTS/DIV 设置不合理,则可能造成电压幅度超出整个屏幕或在屏幕上变动太过微小以致无法观测的现象。图 2.31 所示为同一个波形在 VOLTS/DIV 设置由大到小变化过程中的示意图。

逻辑分析仪

逻辑分析仪是利用时钟从测试设备上采集数字信号并进行显示的仪器,其最主要的作用是用于时序的判定。与示波器不同,逻辑分析仪并不具备许多电压等级,通常只显示两个电压(逻辑 1 和 0)。在设定了参考电压之后,逻辑分析仪通过比较器来判定待测试信号,高于参考电压者为 1,低于参考电压者为 0。

例如,如果以 n MHz 采样率测量一个信号,逻辑分析仪会以 1000/n ns 为周期采样信号,当参考电压设定为 1.5V 时,超过 1.5V 则判定为 1,低于 1.5V 则为 0,将逻辑 1 和 0 连接成连续的波形,工程师依据此连续波形可寻找时序问题。

高端逻辑分析仪会安装 Windows 操作系统并提供非常友善的逻辑分析应用软件,在其中

可方便地编辑探针、信号并查看波形。这种逻辑分析仪一般称为传统逻辑分析仪,其功能强大,数据采集、分析和波形显示融于一身,但是价格十分昂贵。有的逻辑分析仪则没有图形界面,但是可以通过 USB 等接口与 PC 连接,分析软件则工作在 PC 上。这种逻辑分析仪一般称为虚拟逻辑分析仪,它是 PC 技术和测量技术结合的产物,触发和记录功能由虚拟逻辑分析仪硬件完成,波形显示、输入设置等功能由 PC 完成,因此比较廉价。图 2.33 给出了两种逻辑分析仪。

逻辑分析仪的波形可以显示地址、数据、控制信号及任意外部探头信号的变化轨迹,在

使用之前应先编辑每个探头的信号名。之后,根据波形还原出总线的工作时序,图 2.34 给出了一个 I2C 的例子。目前,很多逻辑分析仪都自带了协议分析能力,可以自动分析出总线上传输的命令、地址和数据等信息。

总结

简单地讲解了驱动软件工程师必备的硬件基础知识,描述了处理器、存储器的分类以及各种处理器、存储器的原理与用途,并分析了常见的外围设备接口与总线的工作方式。 此外,本章还讲述了对驱动工程师进行实际项目开发有帮助的原理图、硬件时序分析方法,芯片数据手册阅读方法以及万用表、示波器和逻辑分析仪的使用方法。

 

 

 

 
   
次浏览       
 
相关文章

云计算的架构
对云计算服务模型
云计算核心技术剖析
了解云计算的漏洞
 
相关文档

云计算简介
云计算简介与云安全
下一代网络计算--云计算
软浅析云计算
 
相关课程

云计算原理与应用
云计算应用与开发
CMMI体系与实践
基于CMMI标准的软件质量保证
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
基于FPGA的异构计算在多媒体中的应用
深入Linux内核架构——简介与概述
Linux内核系统架构介绍
浅析嵌入式C优化技巧
进程间通信(IPC)介绍
最新课程
嵌入式Linux驱动开发
代码整洁之道-态度、技艺与习惯
嵌入式软件测试
嵌入式C高质量编程
嵌入式软件可靠性设计
更多...   
成功案例
某军工所 嵌入式软件架构
中航工业某研究所 嵌入式软件开发指南
某轨道交通 嵌入式软件高级设计实践
深圳 嵌入式软件架构设计—高级实践
某企业 基于IPD的嵌入式软件开发
更多...