第二章-各类设备硬件通信逻辑

Linux 块设备访问方法
    1.类似dd命令对应的原始块设备,如/dev/sdb1
    2.在块设备上建立fat,ext4,brtfs等文件系统然后以文件路径方式访问
Linux 针对NOR,Nand提供独立内存技术设备(MTD)子系统,其上运行yaffs2,jffs2,ubifs等具备擦除和负载均衡的文件系统。
针对磁盘或者Flash设备的fat,ext4,yaffs2,ubifs等文件系统定义文件和目录在存储介质的组织。
以上内容linux虚拟文件系统统一进行抽象
******************Linux设备驱动与整个软硬件系统的关系*************


C语言
    --结构体,指针,函数指针,内存动态申请释放
驱动与内核的接口
    --块设备,网络设备,Flash设备,串口设备等
多任务并发控制与同步
    --自旋锁,互斥,信号量,等待队列并发与同步机制
驱动分类
    --字符设备(必须以串行顺序一次访问的设备,触摸屏,磁带驱动器,鼠标等)
    --块设备(以块为单位进行操作的,硬盘,eMMC等)
    --网络设备(面向数据包接收和发送设计,不倾向于对应文件系统的节点,内核与网络设备的通信和内核与字符设备块设备的通信完全不同,前者用套接字)
    2.1.1-------------通用处理器----------
        普林斯顿结构
            --将指令和数据存储合并的存储器结构,程序指令存储地址和数据存储地址指向同一存储器不同物理位置,故指令和数据宽度相同
        哈佛结构
            --指令和数据分开存储,可有不同数据宽度,而且还有独立的程序总线和数据总线
            ******************冯诺依曼结构&&哈佛结构**********************


            *******************改进的冯诺依曼结构*********************************

           


    2.1.2 -----DSP(通信、图像、语音、视频)--------
            --独立硬件乘法器
            --单周期内完成
            --优化卷积、数字滤波、FFT(快速傅里叶变换)、相关矩阵运算等大量重复算法
            
            定点DSP&&浮点DSP
            --浮点运算用硬件实现,可在周期内完成,其浮点运算处理速度高于定点DSP
            --定点DSP只能用定点运算模拟浮点运算
            --TI,ADI主要DSP 厂商
    ************************处理器分类**************************

     

2.2.2 存储器
        ROM(只读),PROM(可编程),EPROM(可擦除),EEPROM(电可擦除)
        NOR(或非)--典型SRAM接口,可芯片内执行(XIP),即芯片可直接在NOR内运行
        NAND(与非)Flash闪存技术--相应控制电路转换,也可通过地址线或GPIO产生Nand Flash接口的信号,以块方式访问,不支持芯片内执行
        CFI(公共闪存接口)
            --从NOR器件读数据的公开、标准接口。可使用系统软件查询已安装的Flash器件参数(器件阵列结构参数、电气参数和时间参数以及器件支持的功能)
            --不支持CFI的,需要用JEDEC(Joint Electron Device Enginnering Council电子电器设备联合会)
        与NOR Flash的类SRAM接口不同,一个Nand Flash接口主要包含以下信息号
        -IO总线:地址,数据、指令通过这组总线传输,一般未8位或16位
        -芯片启动(Chip Enable CE#),如果没有检测到CE信号,NAND器件就保持待机模式,不对任何控制信号做出响应
        -写使能(Write Enable,WE#):WE#负责将数据,地址或指令写入NAND
        -读使能(Read Enable RE#):RE#允许数据输出。
        -指令锁存使能(Command Latch Enable CLE),当CLE为高电平时,在WE#信号的上升沿,指令将被所存到NAND指令寄存器中。
        -地质锁存使能(Address Latch Enable ALE):ALE为高电平时,在WE#信号上升沿,地址将被锁存到Nand地址寄存器中。
        -就绪/忙(Ready/Busy,R/B#):如果Nand器件忙,R/B#信号变为低电平。该信号为漏极开路,需要采用上拉电阻。
        -Nand 必nor性价比高,擦写快,发生不可避免的位反转概率高(需采用错误探测EDC/纠正ECC算法)。每块可擦写100万次。而Nor可擦写10万次.
        -Flash只能写1位0,不能写0为1,编程前先查出全部置位1即0xFF-Flash存在负载均衡问题,不能总在一块位置擦写,否则容易坏块。
        --NOR Flash可采用SPI接口访问以节省引脚。只需要6个引脚即可实现单IO,双IO和4个IO的接口通信。
        --部分SPI NOR Flash还支持DDR模式,访问速度科大80MB/S
        --IDE类似SRAM,但已经发展若干代
        --许多Soc已集成eFuse电编程熔丝作为OTP(One-Time-Programmable)存储器。出厂就配置好efuse
        --ROM Flash,磁盘都是非易失性存储器(NVM)
        --RAM则不是
            --DRAM--电荷形式存储,数据存在电容器,电容漏电会丢失电荷,所以采用定期刷新
            --SRAM--只要供电就保持一个值,SRAM没有刷新周期,每个存储单元6个晶体管组成。而DRAM由1个晶体管和1个电容器组成
        2.3 接口与总线
            2.3.1 串口
                --RS232(4Data,11Command,3Timer,7Prepare,1undefined)
                    ---常用9根
                        RTS:表示DTE请求DCD发送数据,当终端要发送数据时,使能该信号
                        CTS:用来表示DCE准备好接收DTE发来的数据,是对RTS的响应信号
                        RxD
                        TxD:
                        DSR
                        DTR
                        DCD:
                        Ringing-RI
                    --最简单的只需要RxD,TxD,SG三个信号,并使用XON/XOFF软件流监控。
                    **********************RS-232C串口电路原理****************

                        


                    
                ->RS422
                -->RS485-->485-A
            2.3.2 I2C
                  --I2C内置集成电路,两线式串行总线,用于连接微控制器及其外设
                  --简单有效,占用PCB空间小,芯片引脚少,成本低。
                  --I2C总线支持多主控模式,任何能发送/接收的设备都可以成为主设备。
                  --主控可控制数据传输和时钟频率,任意时刻只一个主控
                  --SDA和SCL两个信号。
                  --各设备连接到总线的输出端必须是开漏输出或集电极开路输出的结构,可避免总线信号混乱。总线空闲,上拉电阻使SDA&SCL保持高电平,根据开漏输出或集电极开路输出信号的"线与"逻辑,I2C总线上任意器件输出低电平都会使相应总线信号变低
                  --线与:两个或两个以上的输出直接互联就能实现与逻辑,只有输出端是开漏(CMOS器件)输出或集电极开路(TTL器件)输出时才满足此条件。工程师一般以“OC门”简称开漏或集电极开路
                  --SDA是双向,输出用于向总线发数据,输入接收总线上的数据。
                  --SCL是双向,作为控制总线数据传送的主机通过SCL输出电路发送时钟信号,并检测总线SCL电平以决定何时发下一个时钟脉冲电平;作为接收主机命令的从设备需按总线SCL的信号发送或接受SDA上信号,也可以像SCL先发出低电平信号以延长总线时钟信号周期。
                  --SCL高电平时SDA由高到低的变化将产生一个开始位,而由低到高的变化则产生一个停止位。
                  --开始位和停止位都是I2C主设备产生
                  --在选择从设备时,如果从设备采用7位地址,则主设备在发起传输过程前,需先发送1字节地址信息,前7位为设备地址,最后1位是读写标志。之后每次传输的数据也是1字节,从MSB开始传输。每个字节传输完,在SCL的第9个上升沿到来之前,接收方应该发出1个ACK位.SCL上的时钟脉冲由I2C主控发出,在第8个时钟周期之后,主控方应该释放SDA,I2C总线时序如下
                  ******************I2C总线时序*********************

                 


            2.3.3 SPI(Serial Pheripheral Interface 串行外设接口)
                    --总线系统是一种同步串行外设接口,可使CPU与外设以串行方式进行通信。一般主控Soc作为SPI的主,外设做SPI的从。
                    --四根线:SCLK(串行时钟线),MISO(主机输入/从机输出数据线),MOSI(主机输出/从机输入),SS(低电平有效的从机选择线)
                    **************SPI主从硬件连线图****************

                       


                    --注意点
                        1.SS低电平有效
                        2.SPI从设备支持的SPI总线最高时钟频率(SCK的频率)以及外设的CPHA,CPOL模式,决定数据与时钟间的偏移、采样的时刻以及处罚的边沿是上升沿还是下降沿
                        **********************SPI总线的时序******************

                           


                        3.SPI通信实现:其输出串行同步时钟极性(CPOL)和相位(CPHA)可配置。如果CPOL=0,串行同步时钟空闲态为低电平;如果CPOL=1,串行同步时钟空闲态为高电平。CPHA=0,在串行同步时钟第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升/下降)数据被采样。
            2.3.4 USB
                    1.0 1.5Mbit/s,高速12Mbit/s
                    2.0 480Mbit/s,半双工,采用4芯屏蔽线(一对差分线D+,D-传送信号,另一对VBUS,电源线传送+5v直流电.),Bulk只支持一个数据流.
                    3.0 5.0Gbit/s(640Mbit/s),全双工。8条内部线路,除了VBUS,电源线之外,其余三队均为数据传输线路.保留D+,D-兼容2.0,新增SSRX,SSTX专为3.0,增加了Bulk Stream模式,支持多个数据流,每个数据流分配一个StreamID,每个SID与一个主缓冲对应
                2.3.4.1 嵌入式
                    主板挂载USB设备,需USB主机控制器和连接器;
                    主板作为USB设备,需USB设备适配器和连接器.
                    ***************************USB物理拓扑结构********************

                     


                    每个USB设备有若干个逻辑连接点,每个连接点叫端点,USB提供了多种传输方式适应不同需求,一个端点可以选择如下传输方式。
                    1.控制传输方式(Control),双向传输,数据量小。用于查询,配置和发送命令,所有USB必须支持标准请求,控制传输方式和端点0.
                    2.同步传输方式(Isochronous),确定带宽,间隔时间.用于时间要求严格并具有较强容错性的流数据传输或要求恒定数据传送率的即时应用。语音业务
                    3.中断传输(Interrpt),单向。对USB主机只有输入.主要用于定时查询设备是否有中断数据要传送.应用在少量分散的,不可预测的数据传输场合,键盘,游戏杆和鼠标。
                    4.批量传输(Bulk):无带宽,间隔时间要求的批量数据的传送和接收中,它要求保证传输。主要是打印机和扫描仪
                      --集线器检测设备连接断开,利用中断IN端点向主机报告.然后主机发送请求给设备所挂载的集线器,集线器建立一条连接主机和设备间的通信通道。主机以控制传输方式通过端点0对设备发送请求,设备受到请求回复信息,进行枚举操作.因此USB总线具备热插拔能力
            2.3.5 以太网接口
                    MAC(以太网媒体接入器)和PHY(物理接口收发器),MAC由IEEE定义实现数据链路层。10Mbit/s、100Mbit/s.Gbit/s.
                    MAC和PHY采用MII(媒体独立接口)连接,IEEE-802.3定义的以太网行业标准,包括1个数据接口与MAC、PHY之间的管理接口。
                        --数据接口:发送接收两独立信道,每条信道有独立数据,时钟和控制信号,
                        --MII共16个信号。
                        --MII包含两个信号:时钟信号,数据信号。
                        --通过管理接口,上层能监视和控制PHY。
                        *****************以太网接口的硬件电路原理******************

                        


                        --许多处理器集成MAC或MAC和PHY,另许多以太网控制芯片也集成了MAC和PHY
            2.3.6 PCIE PCI
            2.3.7 SD和SDIO
                    SD(Secure Digital)兼容MMC(Multi-Media Card),SDHC(SD High Capacity).SDXC(SD eXtended Capacity)支持2TB大小。
                    SDIO  
                        --存储卡
                        --可移动
                        --不可移动.遵循相同电气标准,但不要求符合物理标准.例如WiFi的SDIO,GPS的SDIO,蓝牙的SDIO
                    SD&&SDIO
                        --协议存在差异,命令也有差异
                        --传输模式
                            --SPI模式
                            --1位模式
                            --4位模式
                        ***********************SDIO单模读写典型时序***********************

                        


                        CLK:单个时钟周期内传输一个命令或数据位
                        CMD:命令在CMD线上串行传输,双向半双工(命令从主机到从卡,响应是从卡到主机)
                        DAT[0]-DAT[3]:SPI模式下第八脚当做中断信号
                    eMMC(Embedded Multi-Media Card)移动设备本地存储主流方案,简化设计,是Nand Flash、闪存控制芯片和标准接口封装的集合.把Nand和控制芯片封装(Multi-Chip Package,MCP)芯片.eMMC支持Dat[0]-Dat[7]8位数据,上电或复位默认处于1位模式只是用dat[0],后续可配置4位或8位模式。
            2.4 CPLD和FPGA
            2.5 原理图
                 --以CPU为中心,获知哪些片选、中断和集成的外设在使用
                 --根据外设和片选、中断分析实际使用
                 --包含元素:
                        ---符号(symbol,描述芯片外围引脚以及信号)
                        ************NORFlash和NAND Flash原理图中的符号*************

                           


                        ---网络:描述芯片、接插件和分离元器件引脚的互联关系.每个网络需根据信号定义赋予合适的名字,如果没网络名字,EDA软件自动默认一个网络名.添加网络后的AM29LV160DB。
                        ---描述:原理图会有部分文字辅助描述原理图,页脚的功能描述,重要信号在原理图的响应符号和网络中也有文字说明
            2.6 硬件时序分析
                2.6.1 概念
                        --时序图用来支撑驱动工程师调试电路板
                        --让芯片之间的访问满足芯片数据手册中时序图信号有效的先后顺序、采样建立时间(Setup Time)和保持时间(Hold Time).板子不正常工作时刻定位时序问题
                           ---建立时间:触发器时钟信号边沿到来以前,数据已经保持稳定不变的时间。如果时间不足,数据将不能在这个时钟边沿被打入触发器;
                           ---保持时间:触发器的时钟信号边沿到来以后,数据还需稳定不变的时间。如果时间不够,数据同样不能被打入触发器。
                           ---某些情况下建立时间和保持时间可为零
                2.6.2 典型硬件时序
                        SRAM读写时序,读写过程涉及信号包括地址、数据、片选、读写、字节使能和就绪/忙。16位、32位甚至64位的SRAM,字节使能表明哪些字节被读写。
                        *****************SRAM读时序图*******************

                        


                        --读写时序相似
                        --1.地址总线上输出要读(写)地址,然后发出SRAM片选信号,
                        --2.输出读/写信号,之后读/写信号要经历数个等待周期。
                        --3.当SRAM读/写速度比较慢时,等待周期可由MCU的相应寄存器设置,也可通过设备就绪/忙想CPU报告。这样读写过程会自动添加等待周期
                        --NOR Flash和许多外设都类似
            
            2.7 芯片数据手册阅读方法
                快速准确定位有效信息
                --第一章:概览
                --Memory Map 比较关键,对于定位存储器和外设对应的基址有直接知道意义,应该细看
                --3-34对应于CPU内部集成的外设或总线控制器,对于编写驱动,要详细阅读。主要是分析数据、控制、地址寄存器的访问控制和具体设备的操作流程
                --其他电器和机械数据不必管
                ************芯片手册中寄存器的定义**********************

                 


                ************芯片数据手册中外设控制器操作流程***********

                         


            2.8 仪器
                1.万用表
                    --测电平
                    --使用二极管档测量电路板上的网络连通性,当示波器被设置在二极管档测量联通的网络会发出滴滴鸣叫,fo否则没有连通.
                2.示波器
                    --注意调节垂直偏转因数选择(VOLTS/DIV)和微调、时基选择(TIME/DIV)和微调以及触发方式。
                    --VOLTS/DIV设置不合理,可能造成品目变动太小无法观测
                    --TIME/DIV设置不合理,可能造成波形混迭代.意味着屏幕显示波形频率地域信号实际频率
                    --奈奎斯特定力.采样速率至少高于信号高频分量的两倍才不会发生混迭.如500MHz的至少要1GS/s采样速率
                        **************示波器的TIME/DIV设置域波形.jpg**************

                            


                    --要设置触发方式和触发模式.目的是波形从同一位置开始。可稳定显示边沿触发为主,其他触发补充。正确触发方式可提高测试过程灵活性简化工作。
                    --三种触发方式:自动、常规、单次
            2.9 逻辑分析仪
                    用于时序判断                    
                    
                            
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值