i.MX6ULL GIC 中断整体知识点总结和ARM时钟重点总结

一、GIC 基础概念

GIC(通用中断控制器),由 ARM 设计,专门用来管理 Cortex‑A 系列处理器中断的片上外设。

  • i.MX6ULL 使用:GIC V2 版本,GIC‑400 型号 ;支持虚拟化,最多 8 核,最大支持1020 路中断 ;i.MX6ULL 芯片实际只用160 个中断源。
  • 版本演进:
    • GIC V1:Cortex‑5 老芯片;
    • GIC V2:32 位(i.MX6ULL、树莓派);
    • GIC V3/V4:64 位手机芯片;
    • GIC V5:服务器、车载大算力芯片。

GIC 的 3 类中断源

  1. SPI 共享中断:片内外设产生,可分配给任意 CPU 核处理,按键、串口、定时器都属于 SPI。
  2. PPI 私有中断:CPU 内核私有,用于多核核间通信,和外设无关。
  3. SGI 软件中断:由软件指令生成,多用于多核通信。

硬件归属区分:Cortex‑A7 内核是 ARM 设计;GIC 控制器是 ARM;i.MX6ULL 片上 GPIO、UART、TIMER 外设由 NXP 设计。

二、按键(GPIO)中断相关寄存器

1)GPIO 外设寄存器

  1. GPIOx_ICR:配置引脚中断触发方式(上升沿 / 下降沿)
  2. GPIOx_IMR:引脚中断使能寄存器,开启该引脚中断
  3. GPIOx_ISR:中断状态标志寄存器,写 1 清零标志位,用来判断引脚是否产生中断

2)GIC 核心寄存器

  1. C_IAR:只读。CPU 读取该寄存器,获取发生中断的中断号,识别是哪个外设产生中断。
  2. C_EOIR:只写。中断服务程序处理完成后,把中断号写入此寄存器,通知 GIC 本次中断处理结束。

三、协处理器 CP15 与汇编指令

协处理器是辅助 CPU 完成特殊功能的单元,cp15 是最重要一组系统寄存器。

  • mrc:读协处理器,把 cp15 寄存器读到 ARM 通用寄存器。

  • mcr:写协处理器,把通用寄存器数据写入 cp15 寄存器。

    mrc p15, 0, r0, c1, c0, 0 ;读取SCTLR寄存器到r0

    bic r0, r0, #(1 <<13) ;异常向量表重映射

    orr r0, r0, #(1 <<12) ;打开I‑Cache

    mcr p15, 0, r0, c1, c0, 0 ;写回SCTLR

    mcr p15, 0, r0, c12, c0, 0 ;设置向量表基地址

    mrc p15,4,r0,c15,c0,0 ;读取GIC基地址到r0

ARM 时钟

1. ARM 内核启动代码主要做了哪些工作?

  1. 设置异常向量表
  2. 完成异常向量表地址重映射(地址:0x87800000)
  3. 为各个处理器工作模式开辟栈空间(IRQ 模式、system 模式)
  4. 使能 IRQ 中断
  5. 清零 BSS 段
  6. 打开 I‑Cache
  7. 跳转到 C 语言的main函数,进入 C 程序执行

2. PLL、Prescaler、PFD 的作用

  • PLL(锁相环) :倍频 。输入低频晶振时钟,乘以 N 倍,输出高频时钟。
    公式:输出 = 输入时钟 × N
  • Prescaler(预分频器) :分频 ,把输入时钟除以 M,降低时钟频率。
    公式:输出 = 输入时钟 ÷ M
  • PFD(相位分数分频器) :既可以倍频,也可以降频。
    公式:输出 = 输入时钟 × (N/M)
    • N/M>1:做倍频;
    • N/M<1:做降频。

晶振:i.MX6ULL 使用24MHz 外部晶振,分为有源晶振、无源晶振。

3. IMX6ULL 时钟主要做了哪些配置?

  1. 配置 ARM 内核时钟(CPU 时钟)
  2. 配置 PLL2 下面的 4 路 PFD、PLL3 下面的 4 路 PFD
  3. 配置 AHB、PERCLK、IPG 三个根总线时钟(设置时钟源、分频系数)

4. 配置的 ARM 内核时钟频率是多少?

配置 ARM 内核时钟为 528MHz。

5. AHB、PERCLK、IPG 三个根时钟频率

  • AHB:132MHz
  • PERCLK:66MHz
  • IPG:66MHz

6. IMX6ULL 中有几个 PLL、几个 PFD

  • PLL:2 个,PLL2(528M PLL)、PLL3(480M PLL)
  • PFD:共 8 个
    • PLL2 (528M):4 路 PFD(PFD0~PFD3)
    • PLL3 (480M):4 路 PFD(PFD0~PFD3)
相关推荐
gscsded8 小时前
MCUboot裸机移植实战
单片机·嵌入式硬件·arm
想喝奶茶啾啾9 小时前
AMBA CHI架构以及规范中使用的术语 翻译笔记(1)
笔记·arm·chi
susplus1 天前
【IMX6ULL Linux系统移植】内核编译裁剪 + rootfs 构建 + 完整启动流程梳理
linux内核·arm·rootfs·linux启动
susplus3 天前
【IMX6ULL Linux系统移植】SD卡分区 | uboot详解
linux·arm·u-boot
剑指offer.7 天前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
工作10年+,存储芯片行业9 天前
Linux NVMe 中断排查与性能优化:IRQ 优化(原理+排查)
linux·运维·性能优化·ssd·nvme·pcie·中断
susplus10 天前
【ARM 裸机开发 (IMX6ULL-mini)】I2C协议详解
嵌入式·arm·i2c
今年下半年11 天前
【运维】windows虚拟机安装arm(aarch64)服务器
运维·windows·arm·虚拟机·aarch64
额额额对了12 天前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
一直C12 天前
【ARM嵌入式开发】LCD液晶屏显示原理、色彩模式与显存地址映射详解
lcd·嵌入式·arm·寄存器·cortex-a7