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:内联函数,本质依旧是函数。

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

相关推荐
箓维1 小时前
线程的优缺点,与进程的关联和差异
java·服务器·笔记
Eloudy2 小时前
全文 - 第 01 章 CHI Issue.B specification
arm开发·issue
江屿风2 小时前
【Linux系统】【从【收尾】缓冲区到【新开】磁盘块:一节课打通文件系统底层原理】流食般投喂
linux·运维·服务器·人工智能·笔记
李游Leo2 小时前
HarmonyOS 7 + ArkUI + Adaptive Layout 学习笔记:折叠屏多形态布局适配与窗口状态响应机制【鸿蒙心迹】
笔记·学习·harmonyos
路漫漫其修远兮sjw2 小时前
Linux 运维知识点笔记(中级)
linux·运维·笔记
kyrie_sakura2 小时前
大模型学习6 -- 深度学习 1 概述和PyTorch
pytorch·深度学习·学习
宵时待雨2 小时前
linux笔记归纳24:多路转接select
linux·服务器·笔记·高并发
一只旭宝2 小时前
【C++复习】四种类型转换 + 常见设计模式 + Redis/MySQL(后端面试复习完整版)
c++·redis·笔记·mysql·设计模式
91刘仁德2 小时前
RAG实战-Embedding模型(BGE)
笔记·embedding·rag