• 嵌入式系统原理与应用技术(第三版)-读书笔记


    进入异常

    1. 1. ARM状态:LR(Link Register连接寄存器)保存下一条指令的地址(pc+4/+8)
    2. Thumble状态:LR保存的是当前PC的偏移量(不需要确定异常是从何种状态进入)
    3. CPSR(current program status register程序状态寄存器)复制到相应的SPSR(saved program status register程序状态保存寄存器)中,使CPSR模式位的值设置成对应的异常模式值。
    4. PC从相关的异常向量取下一条指令。
    5. 也可以设置中断禁止位,阻止其他无法处理的异常嵌套。
    6. 如果异常发生时,处理器处于Thumble状态,那么当用中断向量地址加载PC时,自动切换到ARM状态。

    退出异常

    1. LR减去相应的偏移量,送到PC中
    2.  SPSR复制回CPSR,清除中断禁止位标志。

    专用寄存器/特殊功能寄存器SFR(special function register)
    GPU图像处理器(Graphical Processing Unit)
    NPU神经网络处理器模块(Neuro processing Unit)
    ARM11单发处理器:一次向流水线中加载一条机器指令
    ARMCortexA8:同时向流水线发射两条指令,双发射
    ARMCortex:同时发射3条指令
    ARMCortexA9:乱序执行(OOE)


    三态门:
    高电平(上拉Pull Up )、低电平(下拉Pull Down)、高阻态Z

    最基本的作用是:将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉),在不同应用场合中会对电阻的阻值要求有所不同。

    高阻态Z:指的是电路的一种输出状态,既不是高电平也不是低电平,可以把它看作输出(输入)电阻非常大,它的极限状态可以认为悬空(开路)。

    OE:输出使能。

    锁存器:当处理器把数据传输到锁存器并将其锁存后,锁存器的输出引脚便会一直保持数据状态直到下一次锁存新的数据为止。

    缓冲器:使高速工作的CPU与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。由于缓冲器接在数据总线上,故必须具有三态输出功能。

    假设这个使能信号是用来控制电机的,如果悬空的话,此信号线可能在上电后(或在运行中)受到其它噪声干扰而误触发为高电平,从而导致电机出现不期望的转动,这肯定不是我们想要的,此时可以增加一个下拉电阻。而相应的,对于低有效的复位控制信号(RST#),我们希望上电复位后处于无效状态,则应使用上拉电阻。

     拉电阻越小则表示电平能力越强(强拉),可以抵抗外部噪声的能力也越强,但是拉电阻越小则相应的功耗也越大,因为正常信号要改变信号线的状态也需要更多的能量。

     

    STM32单片机GPIO模式即包含上拉或下拉

    ARM寻址的方式

    1. 寄存器寻址:指令中地址码给出的是寄存器的编号。ADD R0,R1,R2;R0-R1+R2
    2. 立即寻址:指令中在操作码字段后面的地址码部分不是操作数地址,而是操作数本身。ADD R3,R3,#10;R3-R3+10
    3. 寄存器移位寻址
    4. 寄存器间接寻址
    5. 变址寻址
    6. 多寄存器寻址
    7. 堆栈寻址
    8. 块复制寻址
    9. 相对寻址:

    ARM系统引导程序(Boot)

       嵌入式系统硬件加电 以后运行的第一段程序。主要作用就是对硬件初始化。

       引导加载程序(Bootloader):系统硬件加电到执行操作系统内核之前,执行的一段程序。为操作系统提供基本的运行环境,并启动操作系统,将操作权交给内核。

       PC机中,引导加载程序由BIOS(Basic Input Output System,一段固件程序)和硬盘中的操作系统Bootloader共同组成。

    存储器的组织结构

     存储器组织成金字塔结构。寄存器,cache一般在CPU的内部,外部的硬件设计主要考虑主存储器和辅存储器。

    主存储器和辅存储器是通过地址来识别的,一个地址对应一个存储单元。嵌入式系统存储器部分设计时主要考虑:

    1.CPU的存储结构:CPU本身定义了能够访问多大的存储空间、能够访问什么类型的存储器以及访问时序。

    2.存储器本身的工作原理。

    人机接口

      1.键盘接口:独立式键盘,行列式键盘(行扫描法)。

        抖动:软件延迟,硬件R-S触发器。

      2.LED显示器:

        单个(发光电流5-20mA)、

        7段(8段)(共阴极或共阳极):

          静态显示:占有I/O资源较多,CPU时间少。

          动态显示:所有的段选端并联在一起,由一个输出寄存器作I/O口,成为段选寄存器。所有的共阴极点连在一起,由一个输出寄存器作为I/O接口,成为位选寄存器。

        点阵式:每个LED表示一个像素。单色点阵式,每个像素需要一位二进制数表示。彩色点阵式,每个像素需要更多的二进制表示,通常1个字节。

      3.LCD(Liquid Crystal Display):

        静态驱动:

        单纯矩阵驱动(被动式):TN/STN

        主动矩阵驱动:TFT(Thin Film Transistor薄膜式晶体管)背透式,相应时间块,真彩。

      4.触摸屏接口

        电阻触摸屏:触摸之后产生电压,A/D转换后与Vref比较,可得坐标。

        红外线触摸屏:光点距架框排列红外线发射接管。不适宜户外和公共场所使用。

        电容触摸屏:

    DMA技术:

    CPU给DMA下指令,让DMA控制器来处理数据,降低CPU资源利用率。与中断请求的区别:

    1. DMA请求仅使CPU暂停一下,不需要对断点和现场进行处理,外设与主存之间传输数据利用系统总线,无需CPU干扰,。
    2. CUP对DMA的请求是立即响应,即:在每条指令的每个阶段都可以让给DMA使用,占用CPU时间少。

    DMA传送过程:申请阶段--响应阶段--数据传送阶段--传送结束阶段。

    1. 外设向DMA控制器发信号,DMA再向CPU发出总线请求信号,请求获得总线的控制权。
    2. CPU执行完当前总线周期后,响应请求并暂停主程序,释放总线控制权。DMA通知外设,我已获得总线控制权。
    3. 如内存向外设传送时,DMA给总线内存地址和读信号。DMA控制器内部的地址寄存器值加1,字节计数器减1,直至设定的字节数传送完成。
    4. DMA将总线控制权还给CPU。

    硬件请求模式下(H/W)4个DMA通道均可以从5个DMA源中选择一个。但软件请求模式下(S/W),DMA请求源没有意义。

    DMA模式:

    1. 请求模式:表明DMA操作是由谁发起的。
    2. 传输模式:询问模式、握手模式。
    3. 服务模式:描述操作如何结束。整体服务模式和单独服务模式。

     串行通信接口

    串行通信:数据的各位按顺序一位一位传送,成本低适合长距离通信,但是传输效率低。

    单工、半双工、全双工。

    异步串行通信:把每个字节当作独立的信息来传送,字节内部各位之间按照预先定义的时序传送,时序取决于发送端。

    1. 一个完整的字节传送包含(帧格式):起始位+所要传送字节的二进制位+校验位+停止位。串行通信数据线在没有数据时保持在某个状态(空闲状态),当要发送数据时,先发送一个与空闲状态相反的状态,再发送字节的最低有效位(LSB),再传送一个奇偶校验位检测误码,最后至少发送一个停止位(ASCII码传送时为10位)。这样的一串数据称为1帧。各位代码之间的时间间隔是固定的。异步串行通信允许空字符。
    2. 波特率:传送数据位时的速率(b/s),每位的传送时间为波特率的倒数。
    3. 校验位:可以选择奇校验(字符中有奇数个1则为1)、偶校验、无校验。

    校验位和停止位一般是串行通信控制器内部自动产生。停止位可为1、1.5、2位,若无可能传输错误。

    同步串行通信:一次传输一块数据(信息帧)+同步字符+错误检测数据块(CRC循环冗余校验:传送的数据为被除数,发送器产生固定的除数,所得余数即为“冗余字符”。接收的数据和“冗余字符”相除,商为0表示接收数据无误??)。在没有字符传输时,要发送空闲字符或者同步字符,因为同步通信必须连续传输,不可以有间隙。效率高、电路复杂对硬件要求高。

     RS-232C串行通信接口

    连接数据终端设备(DTE)、数据通信设备(DCE)。

    板载一般是阳性插座DB9。

    计算机外围接口采用TTL标准,+5V代表1,接地代表0。RS232C-12V代表1,+12V代表0,需要电平转换。

    RS422:单机发送、多机接收,速度快距离长。

    RS485

  • 相关阅读:
    os
    虚拟站点配置
    21. Merge Two Sorted Lists
    38. Count and Say
    算法分类的书写模板
    Vue
    问题集、知识点
    [Linux] Linux命令
    回调函数在小程序中的实际应用
    小程序app.onLaunch中获取用户信息,index.onLoad初次载入时取不到值的问题
  • 原文地址:https://www.cnblogs.com/wk1992/p/12083460.html
Copyright © 2020-2023  润新知