SoC系列(2)下

231 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天!


系统控制模块 

中断控制器

  • 对SoC芯片中各个外设的中断进行管理,进行优先权排队,并送出IRQ(中断请求信号)信号给CPU 【中断控制器有三组寄存器存在:中断使能寄存器、中断状态寄存器、中断屏蔽寄存器】
  • APB Slave

INTCC整体框架

  • APB_interface: 是INTC与总线的接口模块;而又同时是INTC的控制模块,里面有INTC所有的寄存器信息;
  • Int_gen: 用于接收中断源,选择中断源为irq或者fig;中断屏蔽;软件中断
  • Priority_logic: 用于软件中断优先级屏蔽,并且在所有的未被屏蔽的中断信号里面选出优先级最高的中断源,并产生中断信号,分为irq模块和fig模块 image.png

IRQ中断产生

image.png

FIQ快速中断产生

image.png

中断源——内部中断

  • RTC
    • 秒中断、分中断、定时中断、Watchdog中断
  • UART
    • 数据发送结束中断,数据接收有效中断
  • TIMER
    • 定时/计时中断
  • DMAC
    • DMA错误和DMA传输完成
  • LCDC
    • 错误响应、帧结束、帧起始
  • SPI
    • FIFO空满、发送FIFO下溢、接收FIFO上溢

中断源——外部中断

  • 比内部中断复杂,不可控
  • 通常和GPIO口复用
  • 中断源触发方式
    • 上升沿触发
    • 下降沿触发
    • 高电平触发
    • 低电平触发
  • 外部中断信号特殊处理
    • 去除毛刺、寄存、同步到总线时钟
  • 外部中断需要清除

使用外部中断

  1. 清除外部中断
    • 在使用外部中断之前,必须先清楚在此之前的中断信号
  2. 配置GPIO控制寄存器
    • 先配置管脚方向为输入
    • 再配置中断触发类型
    • 最后配置管脚模式为中断模式
  3. 配置中断寄存器
    • 设置INTC的中断屏蔽寄存器的相应位屏蔽中断
    • 设置INTC的相应位以允许该中断源产生的中断

中断控制器的小结(1)

  • 中断控制器
    • 挂在APB总线上
    • 对外部中断、内部中断、软件强制中断进行管理,送出IRQ信号给ARM
    • 设计时考虑接口信号和 寄存器的设计
      • APB接口信号
      • 中断源信号
      • 送给ARM的IRQ、FIQ信号

中断控制器的小结(2)

  • 中断控制器产生IRQ中断送给ARM的过程
    • 外设产生的内部中断
      • 外设中断允许寄存器
      • 外设中断屏蔽寄存器
    • 与GPIO口复用的外部中断
      • GPIO的管脚方向、管脚模式、中断触发类型
    • 软件强制中断
    • INTC
      • 原始中断状态寄存器
      • 中断允许寄存器
      • 中断屏蔽寄存器
      • 中断优先级寄存器
      • 最终中断状态寄存器
      • 送出IRQ信号给ARM

    中断控制器的小结(3)

    • ARM处理中断的过程
      • 执行完当前指令后PC指向0x18
      • 跳转指令跳转到IRQ中断服务程序
        • 保存现场

        • 调用C编写的中断服务程序

        • 恢复现场

        • 恢复PC