ARM 裸机开发 DAY5 学习笔记

一、51单片机中断 对比 ARM(IMX6ULL)中断

1.51单片机中断流程

外设产生中断信号 → 进入内核kernel

内核操作:

1)设置CPU中断允许/屏蔽

2)设置中断源允许/屏蔽

3)设置中断优先级

4)执行中断服务函数

2.IMX6ULL中断

GIC通用中断控制器

1)外设

外设产生多路中断信号送入GIC(Generic Interrupt Controller,通用中断控制器),GIC处理后通过IRQ、FIQ、VIRQ、VFIQ信号给到内核kernel。

2)GIC(协处理器)

① 设置中断源允许/屏蔽

②设置中断优先级

③加载中断优先级

④ 中断分发(多核)

3)内核kernel

① 设置CPU中断允许/屏蔽(CPSR)

②切换处理器工作模式(IRQ模式)

③跳转到异常向量表

④ 执行IRQ中断服务函数

⑤恢复工作模式

二、GIC版本

  1. GIC V1:旧款嵌入式芯片,Cortex-A9

  2. GIC V2:支持虚拟化、最多8核处理器,最多支持1020个中断;IMX6ULL使用此版本。

  3. GIC V3~V4:支持超8核处理器,性能提升,多用于手机芯片

  4. GIC V5:全新架构,支持数百核,用于服务器、车载算力芯片

三、GIC中断分类

总共最多1020个中断,IMX6ULL支持160个

  1. SPI 共享中断:外设产生的中断,所有CPU都可以处理外设中断;中断源来自外设。

  2. PPI 私有中断:核与核之间通信(多核处理器),和外设无关,是CPU核内部之间的中断。

  3. SGI 软件中断:软件代码程序产生的中断。

四、关键寄存器

1. 外设寄存器

• GPIOx_ICR2:配置引脚中断触发方式(下降沿/上升沿触发中断)

• GPIOx_IMR:使能对应引脚中断

• GPIOx_ISR:中断状态寄存器。查询该寄存器,对应引脚位为1,代表产生中断,处理完后清0。

2. GIC寄存器

• C_IAR:中断通知寄存器(只读)。内核读取该寄存器,获取中断号,确认是哪个外设触发中断。

• C_EOIR:中断结束寄存器(只写)。内核处理完中断后,把中断号写入此寄存器,通知GIC:本次中断处理完毕。

五、其他

1.协处理器

协助CPU执行特定任务的专用处理单元(内核),编号CP0 ~ CP15。

CP15:一组系统控制寄存器组。

2.汇编指令

① mrc

读指令,读取CP15中寄存器的数据到通用寄存器

②mcr

写指令,将通用寄存器的数据写入到CP15中的寄存器

指令格式:

mrc <coproc>, <opc1>, <Rt>, <CRn>, <CRm>, {<opc2>}

代码:

mrc p15,0,r0,c1,c0,0 //将CP15中SCTLR寄存器读到R0寄存器

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

orr r0, r0, #(1<<12) //打开icache

mcr p15,0,r0,c1,c0,0 //将R0的值写回CP15的SCTLR寄存器

GIC基地址读取:

mrc p15,4,r0,c15,c0,0 ;GIC_BASE → R0

六、inline 内联函数

inline:内联函数,本质依旧是函数。

调用内联函数前,必须存在该函数的定义。编译阶段,编译器会把内联函数在函数调用位置直接展开,省去函数调用压栈、跳转开销,提高执行效率。

相关推荐
叼烟扛炮23 分钟前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
在猴站学算法30 分钟前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
旖旎夜光1 小时前
【C++ 基础入门】C++ 继承(上):概念、切片、隐藏、默认成员函数与友元
c++·笔记·学习
Godspeed Zhao1 小时前
从零开始学AI24——无监督学习之K均值
学习·机器学习
叼烟扛炮1 小时前
[LangChain] 学习笔记(05):提示词模板(Prompt)与少样本注入(Few-Shot)实战
linux·人工智能·笔记·学习·langchain·prompt
La Pulga14 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡15 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
楚山之石15 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Peter-OK18 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道19 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor