×××××××××××××读
linux设备驱动的重点,难点
linux设备驱动学习是一项浩繁的工程,包含如下重点难点
1.编写linux设备驱动要求工程师有非常好的硬件基础:懂得SRAM,Flash,SDRAM,磁盘的读写方式,UART,I2C,USB等设备的接口以及轮训,中断,DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等
2.编写linux设备驱动要求工程师有非常好号的c语言基础,能灵活地运用c语言的结构体,指针,函数指针及内存动态申请和释放等
3.编写linux设备驱动要求工程师有一定的linux内核基础,虽然并不要求工程是对内核各个部分有深入的研究,但至少要明白驱动与内核的接口,尤其是对于块设备,网络设备,Flash设备,串口设备等复杂设备,内核定义的驱动体系结构本身就非常复杂
4.编写linux设备驱动要求工程师有非常好的多任务并发控制和同步的基础,因为在驱动中会大量使用自旋锁,互斥,信号量,等待队列等并发与同步机制
上述经验值的获取并非朝夕之事,因此要求我们有足够的学习恒心和毅力,对这些重难点本书都会在相应章节进行讲解
动手实践永远是任何软件开发最好的方法,因此,本书使用的是通过qemu模拟的arm vexpress电路板,本书中的所有实例均可在该电路板上直接运行
阅读经典书籍和参与linux社区的讨论也是非常好的学习方法,linux内核源代码中包含了一个Documentation的目录,其中包含了一批内核设计文档,全部是文本文件
学习linux设备驱动要注意避免管中窥豹,只见树木不见森林,因为各类linux设备驱动都从属于一个linux设备驱动的架构,单纯而片面地学习几个函数几个数据结构,是不可能理清驱动中各部分之间的关系的。因此,linux驱动的分析方法是点面结合,将对函数和数据结构的理解放在整体架构的背景之中
***********************驱动设计的硬件基础*********************************
驱动设计的硬件基础
嵌入式系统你关键原理及其分析方法全景视图
2.1
微控制器:MCU
微处理器:
数字信号处理器:DSP
及应用于特定领域的处理器各自的特点,分析了处理器的体系结构和处理器各自的特点:
分析了处理器的体系结构和指令集
2.2对嵌入式系统中所使用的各类存储器与cpu的接口,应用领域及其特点进行了归纳整理
2.3节分析了常见的外设接口与总线的工作方式,包括串口,i2c,spi,usb,以太网接口,pci和pci-e,sd,sdio等
嵌入式系统硬件电路中经常会使用cpld和fpga,作为驱动工程师,不需要掌握gpld和fpga的开发放啊,但是需要知道他们在电路中能完成什么工作,2.4节讲解了这项内容
2.5~2.7给出了在事件项目开发过程中硬件分析的方法,包括如何进行原理图分析,时序分析及快速从芯片数据手册中获取有效信息
2.8节讲解了调试过程中常用仪器仪表的使用方法,设计万用表,示波器和逻辑分析仪
******************************************************************************
2.1
处理器
目前主流的通用处理器(GPP)多采用SoC(片上系统systemonchip(芯片))的芯片设计方法,集成了各种功能模块,每一种功能都是由硬件描述语言设备程序,然后在SoC内由电路实现的。在SoC中,每一个模块不是一个已经设计成熟的ASIC器件,而是利用芯片的一部分资源去实现某种传统的功能,将各种组件采用类似搭积木的方法组合在一起。
******************************************************************************
Soc:systemon chip片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容,同时他又是一种技术,用以实现从确定系统功能开始,到软/硬划分,并完成设计的整个过程
ASIC芯片
目前,在集成 电路界 ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定 电子系统的需要而设计、制造的集成 电路。 ASIC的特点是面向特定用户的需求, ASIC在 批量生产时与通用集成 电路相比具有体积更小、 功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
ARM内核的设计技术被授权给数百家半导体厂商,做成不同的Soc芯片,ARM的功耗很低,在当今最活跃的无限局域网,3G,手机终端,手持设备,优先网络通信设备等重应用非常广泛。目前市面上绝大多数智能手机,平板滇南都是用ARMSoC作为主控芯片。很多ARM主控芯片的集成度非常高,除了集成多核ARM以外,还肯那个集成图形处理器,视屏编解码器,浮点协处理器,GPS,WiFi,蓝牙,几代,Camera等一系列功能
主流的ARM移动处理芯片供应商包括高通(Qualcomm),三星(Samsung),英伟达(Nvidia),美满(Marvell),联发科(MTK),海思(HiSilicon),展汛(Spreadtrum)等。德州仪器(TI),博通(Broadcom)则已淡出手机芯片业务
中央处理器的体系结构可以分为两类:一类为冯诺.依曼结构,一类为哈佛结构。
冯诺.依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储结构。程序指令存储地址和数据存储地址指想同一个存储器的不同物理位置。哈佛结构将程序指令和数据分开存储,并且还采用了独立的程序总线和数据总线,分别作为CPU与每个存储器之间的专用通信途径,具有较高的执行效率
从指令集的角度来讲,中央处理器也可以分为两类,即RISC(精简指令集计算机)和(CISC复杂指令集计算机)
******************************************************************************
数字信号处理器
数字信号处理器(DSP)针对通信,图像,语音呢和视屏处理等领域的算法而设计。它包含独立的硬件乘法器。DSP的乘法指令一半在单周期内完成,且优化了卷积,数字滤波,FFT(快速傅里叶变换),相关矩阵算法等算法中的大量重复乘法。
DSP分为两类,一类是定点DSP,另一类是浮点DSP。浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其浮点运算处理速度高于定点DSP,而定点DSP只能用定点运算模拟浮点运算
******************************************************************************
MCU
微控制单元(MicrocontrollerUnit;MCU),又称单片微型计算机(SingleChip Microcomputer )或者单片机,是把中央处理器(CentralProcessUnit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
MPU
MPU有两种意思,微处理器和内存保护单元。MPU是单一的一颗芯片,而芯片组则由一组芯片所构成,早期甚至多达7、8颗,但目前大多合并成2颗,一般称作北桥(NorthBridge)芯片和南桥(SouthBridge)芯片。MPU是计算机的计算、判断或控制中心,有人称它为”计算机的心脏”。
******************************************************************************
2.2存储器:
分类:ROM,闪存(flash),RAM,光/磁介质存储器
闪存:NOR,NAND
NORFlash和cpu的接口属于典型的类SRAM接口,如下图。不需要增加额外的控制电路。NORFlash的特点是可芯片内执行,程序可以直接在NOR内运行。而NANDFlash和CPU的接口有必须由相应的控制电路进行转换,当然也可以通过地址线或者GPIO产生NANDFlash接口的信号。
NANDFlash以块儿的方式进行访问,不支持芯片内执行
二者对比:
NANDFlash较NORFlash容量大,价格低NANDFlash中每个快的最大擦写次数是100万次,而NOR的擦写次数是10完成NANDFlash的擦出,编程速度远超于NORFlash。
《逼格的地方》
但是由于Flash固有的电器特性,在读写数据过程中,偶然会发生1位或几位数据错误,即位反转,NANDFlash 发生位反转的概率要远大于NORFlash。位反转无法避免,因此,使用NANDFlash的同时,应采用错误探测/错误更正(EDC/ECC)算法。
且Flash的编程原理都是只能将1写为0,而不能将0写为1.因此在Flash编程之前,必须将对应的块儿擦出,而擦出的过程就是把所有为写1,。另外,Flash还存在一个负载均衡问题,就是不能老是在同一块儿位置进行擦出和写的动作,这样很容易导致块儿坏
******************************************************************************
本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
DDR=DoubleData Rate双倍速率同步动态随机存储器。严格的说DDR应该叫DDRSDRAM,人们习惯称为DDR,其中,SDRAM是SynchronousDynamic Random Access Memory的缩写,即同步动态随机存取存储器。而DDRSDRAM是DoubleData RateSDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。
DoubleDataRate:与传统的单数据速率相比,DDR技术实现了一个时钟周期内进行两次读/写操作,即在时钟的上升沿和下降沿分别执行一次读/写操作。
******************************************************************************
SRAM接口是什么?:
SRAM(StaticRandom Access Memory),即静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。
RAM的分类:SRAM DRAM 静态和动态 随机访问存储器
静态动态的区别:存储原理:DRAM以电荷形式进行存储,数据存储在电容器中。但由于电容器会漏电而出现电荷丢失,所以DRAM器件需要定期刷新。SRAM是静态的,只要供电他就会保持一个值,没有刷新周期,数据不容易丢。每个SRAM存储单元由6个晶体管组成,而DRAM存储单元由一个晶体管和一个电容器组成。
通常所说的SDRAM,DDRSDRAM都属于DRAM的范畴,他们采用与CPU外村控制器同步的时钟工作(注意,不是与cpu的工作频率一致)。与SDRAM相比DDRSDRAM同时利用了时钟脉冲的上升和下降传输数据,因此在时钟频率不变的情况下,数据传输频率加倍。此外,还存在使用RSL(发信电平)技术的RDRAM和DirectRDRAM
针对许多特定场合的应用,嵌入式系统中往往还使用了一些特定类型的RAM。
1.DPRAM:双端口RAM
SD(SecureDigital)MMC(mult-mediacard)
SDIO(SecureDigital input and output card 安全数字输入输出卡)
SDIO主要有两类应用:可移动和不可移动。很多手机或手持装置都支持SDIO功能,以连接WIFI蓝牙 GPS等模块
CPLD(复杂可编程逻辑器件)和FPGA(现场可编程门阵列)
******************************************************************************