驱动开发必备硬件知识

2019-07-13 20:34发布

综述:在嵌入式领域,可分为硬件开发和软件开发。对于软件开发又可分为底层开发(模块驱动编写,uboot,内核),上层开发(应用,QT)。 作为一名软件驱动开发的工程师,我们不需要去设计硬件的原理图,PCB。我们只需看懂硬件开发人员提供的硬件模块时序就行了,但是我们应该也需了解如下硬件知识。        一)处理器     1,可分为通用处理器(单片机,ARM),数字处理器(DSP),其他专用处理器(FPGA)    在通用处理器领域中,采用的内核有51,AVR,PIC,ARM。在当今通用处理器芯片大多数采用ARM架构并且多采用SOC的芯片设计方法,集成了各种功能模块(图形处理器,视频解码器,浮点协处理器,GPS,WIFI等),每一种功能都是由硬件描述语言设计程序,然后在Soc内由电路连接实现。    主流的ARM移动处理芯片供应商有:高通,三星,英伟达,美满,联发科,海思(哪个国家的?尴尬了)。    中央处理器的体系结构:冯.诺依曼结构(程序指令存储器和数据存储器合并在一起的存储结构),哈佛结构(程序指令存储器和数据存储器分开的存储结构)。    指令集:RISC(精简指令集计算机)和CISC(复杂指令集计算机)。CISC强调增强指令的能力,减少目标代码数量,但指令复杂,指令周期长。RISC强调尽量减少指令集,指令单周期执行,但是目标代码会更大。ARM,MIPS等内核CPU都采用了RISC指令集。    2,数字信号处理器:针对通信,图像,语音,视频处理等领域的算法设计。它包含的硬件乘法器,DSP的乘法指令一般在单周期内完成,且优化了卷积,数字滤波,FFT,相关矩阵运算等算法中的大量重复乘法。    德州仪器(TI),美国模拟器件公司(ADI)是全球DSP的两大主厂商。    3,其他专用处理器:为某种应用的特定设计。采用ASIC,CPLD/FPGA等实现。    在实际项目的硬件方案中,往往会根据应用的需求方案选择通用处理器,数字处理器,特定领域处理器,CPLD/FPGA或ASIC之一的解决方案,在复杂系统中,这些芯片可同时存在,协同合作,各自发挥自己的长处。(ARM+DSP+FPGA)。    二 存储器     存储器主要可分为只读存储器(ROM),闪存(Flash),随机存取存储器(RAM)。    1,ROM在可细分为:不可编程ROM ,可编程ROM,电可擦除可编程ROM(E2PROM),它可完全用软件来擦写。    2,FLASH可分为NOR(或非),NAND(与非)两种,Intel于1988年首先开发出Nor flash 技术,紧接着1989年,东芝发表了NAND flash结构,彻底改变了原先的EPROM,EEPROM垄断的地位。    Nor Flash:程序可直接在nor中执行,支持位擦写,支持SPI接口,存储量小。    Nand Flash:储存量大,页擦除,占用的I/O多。    3,RAM可分为静态RAM和动态RAM。动态RAM储存在电容中,擦写速度快,由于电容器有漏电现象,因此需要定期刷新。静态RAM不需要定期刷新电路,储存速度慢。(好坏,快慢都是相比较而言的)    4,其他    嵌入式系统中往往还有些特定类型的RAM    双端口RAM:具有两套完全独立的地址,数据总线,用于两个处理器之间的数据交互,具有同时读写的的功能。    内容寻址RAM(CAM):以内容进行寻址的存储器,是一种特殊的存储阵列RAM,它的主要工作机制就是同时将一个输入的数据与存储在CAM中的所有数据自动进行比较,判断该输入数据项与CAM中存储单元的数据项是否相匹配,并输出该数据项对应的匹配信息。    FIFO:先进先出队列:特点是先进先出,进出有序,FIFO多用于数据缓冲。    三 接口与总线    1,串口:RS-232是一种单机发送,多机接收的单向,平衡传输规范,后来发展的RS-422改进了RS232通信距离短,通信速度慢的特点,在RS-485中,又增加了多点,双向通信能力,即允许多个发送器连接在一条总线上。串口电路组成部分:CPU---UART--RS-232芯片---连接器(接口芯片)。    2,I2C    I2C总线是由Philips公司开发的两线式串行总线,产生于20世纪80年代,用于连接微控制器及外围设备。I2C总线支持多主控,但需要注意的是在任意时刻只能有一个主控。    相应时序:当SCL稳定在高电平时,SDA由高向低的变化将产生一个开始位,而且由低到高变化,则产生一个停止位。(都有注主设备产生)    在选择设别时:主设备需要首先发送一个字节的地址信息,前7位代表地址信息,最后一位代表读写信息。    数据通信:在第9个上升沿来到之前,从设备应该发出一个ACK位。结束时,SCL稳定保持在高电平期间,SDA从低向高,产生停止信号。  3 SPI  SPI总线系统是一种同步串行外设接口,它可以使CPU与各种外围设别以串行的方式进行通信。SPI接口一般使用4条线,串行时钟线,主机输入/从机输出数据线(MOSI),主机输出/丛机输入线(MOSI),和低电平有效的数据选择线(SS)。     4 USB       USB:具有数据传输高,易扩展,支持热插拔等特点。在USB1.1中传输速度有12Mbit/s,在USB2.0中,传输速率达到480Mbit/s。在USB3.0中,传输速率甚至高达5.0Gbit/s。在USB2.0总线的机械连接非常简单,采用4芯的屏蔽线,一对差分线(D+,D-)传输信号,另一对(VBUS,电源地)传送+5v的直流电。    5 以太网接口    以太网接口由MAC(以太网媒体接入控制器)和PHY(物理接口收发器)组成。以太网MAC由IEEE802.3以太网标准定义,实现数据链路层。常用的MAC支持10Mbit/s和100Mbit/s两种速率。吉比特网是快速以太网的下一代,速度将高达1000Mbit/s.    6 PCI和PCI-E    PCI是一种局部总线,作为一种通用的总线接口标准,它目前在计算机系统中得到了非常广泛的应用。    7 SD和SDIO    SD是一种关于FLASH的储存卡的标准,也就是一般常见的SD记忆卡,在设计上与MMC保持兼容。    SDIO在SD标准的基础上,定义了储存卡以外的外设接口。    四 CPLD和FPGA    CPLD由完全可编程的与或门阵列以及宏单元构成。 与CPLD不同,FPGA(现场可编程门阵列)基于LUT(查找表)工艺。CPLD和FPGA的主要厂商有Altera,Xilinx和Lattice等,它们专门的开发流程,在设计阶段使用HDL编程。它们可实现许多复杂功能,如实现USART,I2C等I/O控制芯片,通信算法,音视频解码算法等。甚至还可以直接集成ARM等CPU内核和外围电路。对于驱动工程师而言,我们就直接把它看成由很多逻辑门(与 或 非)组成的可完成一系列功能的芯片。如果完成的功能是CPU,我们就直接把它看成是CPU。驱动工程师眼里的硬件要比IC设计师要宏观。