【Linux-I.MX6ULL裸机学习】中断向量表

代码来自于正点原子阿尔法Linux开发板光盘


比如在中断向量表中规定了:在某个地址0x80000A对应着某个中断服务函数,那么在产生这个中断时,就会从0x80000A这个地址去读取中断服务函数,并执行。

如果想改变这个地址,也就是要设置地址偏移。具体要做的:需要修改SCB的 VTOR 寄存器为新的中断向量表起始地址。

ARM-A7 的中断向量表:

你可能会问了:啊?!我的那些外设所需要的外部中断就只有"IRQ interrupt"这一个中断吗?这够吗?

诶别急啊,Cortex-A 内核 CPU 的所有外部中断都属于这个 IRQ 中断,当任意一个外部中断发生的时候都会触发 IRQ 中断。在 IRQ 中断服务函数里面就可以读取指定的寄存器来判断发生的具体中断是什么。这些外部中断和 IRQ 中断的关系如下图:

Cortex-A7 中断系统

  1. 中断向量表
    Cortex-A 中断向量表它有8个中断,其中重点关注 IRQ。Cortex-A 的中断向量表需要用户自己去定义(见下图)。

  2. 中断向量偏移
    我们的裸机例程都是从 0x87800000开始的,因此要设置向量偏移。
  3. GIC 中断控制器
    同NVIC(stm32的中断控制器)一样,GIC 用于管理 Cortex-A 的中断。GIC提供了开关中断,设置中断优先级。
  4. IMX6U 中断号
  5. 中断服务函数的编写
    一个是IRQ 中断服务函数的编写,另一个就是在 IRQ 中断服务函数里面去查找并运行的具体的外设中断服务函数。
相关推荐
狮子再回头12 小时前
relhat9.1 yum无法安装问题
linux·运维·centos
暮云星影12 小时前
全志linux开发 USB接口设置
linux·arm开发·驱动开发
lazy H13 小时前
Maven 依赖爆红怎么办?IDEA 中 Maven 项目常见问题和解决方法总结
java·后端·学习·maven·intellij-idea
Flittly13 小时前
【AgentScope Java新手村系列】(8)多Agent协作
java·spring boot·笔记·spring·ai
江华森13 小时前
Linux 系统实战完全指南
linux·运维·服务器
Safeploy安策数据13 小时前
政务云加密太慢?万兆服务器密码机如何破解高并发性能瓶颈
linux·运维·github
lazy H13 小时前
Spring Boot 连接 MySQL 失败怎么办?常见报错原因和解决方法总结
spring boot·后端·学习·mysql·spring
阿泽·黑核13 小时前
06 keyflow 多平台移植指南:STM32/51/ESP32/Linux
linux·stm32·嵌入式硬件
开开心心_Every13 小时前
近200个工具的电脑故障修复合集
linux·运维·服务器·leetcode·智能手机·电脑·模拟退火算法
NGINX开源社区13 小时前
NGINX Gateway Fabric 支持 Gateway API Inference Extension
linux·服务器·网络