LPC-2124中断概述

简介:

(一)概述

ARM7TDMI内核具有两种中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有许多中断源,最多可以有32个中断输入请求。
向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。


(二)中断源列表




(三)允许中断源产生中断

    芯片内部许多部件都可以作为中断源,但并不是每个中断源都需要在中断情况下进行操作,也可以通过其它方法来处理各种状态。
    比如通过串口发送一段数据,可以选择在一批发送结束后产生中断,然后在中断服务程序中发送下一批数据。也可以通过查询发送标志位来决定什么时候发送下一批数据。允许中断源产生中断由寄存器VICIntEnable和VICIntEnClr控制,前者使能中断,后者禁止中断。

1中断使能寄存器(VICIntEnable)




2中断禁止寄存器(VICIntEnClr)


(四)选择产生中断的类型

ARM7TDMI内核具有FIQ和IRQ两种中断输入,所有中断源产生的中断都可以选择产生其中一种中断。这通过中断选择寄存器完成。


中断输入请求可以在VIC中被设置为以下三类:
①FIQ中断:具有最高优先级;
②向量IRQ中断:具有中等优先级;
③非向量IRQ中断:具有最低优先级;

(五)向量IRQ中断

VIC最多支持16个向量IRQ中断,这些中断被分为16个优先级,并且为每个优先级指定一个服务程序入口地址。在发生向量IRQ中断后,相应优先级的服务程序入口地址被装入向量地址寄存器VICVectAddr中,通过一条ARM指令即可跳转到相应的服务程序入口处,所以向量IRQ中断具有较快的中断响应。

1向量中断相关寄存器


VICVectCntl0~15和VICVectAddr0~15两类寄存器与向量IRQ中断设置有关,前者为中断源分配向量IRQ中断的优先级,后者为该中断优先级设置服务程序入口地址。寄存器名称最后的数字同时也代表该寄存器控制的向量IRQ中断的优先级,数值越小优先级越高。


注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。

向量控制寄存器(VICVectCntl0~15)


向量地址寄存器(VICVectAddr0~15)




(六)非向量中断

任何中断源都可以设置为非向量IRQ中断。它与向量IRQ中断的区别在于前者不能为每个中断源设置服务程序地址,而是所有的中断都共用一个相同的服务程序入口地址。
当有多个中断源被设置为非向量IRQ中断时,需要在用户程序中识别中断源,并分别作出处理。所以非向量IRQ中断响应延时相对较长。

1非向量IRQ中断相关寄存器



在发生向量IRQ中断后,VIC能将对应中断的服务程序地址存入VICVectAddr寄存器中。如果为非向量中断,将把VICDefVectAddr寄存器的值存入该寄存器。在异常向量
表的IRQ异常入口处放置一条指令,将VICVectAddr寄存器的内容装入程序计数器(PC),就可以跳转到当前中断的服务函数。 这样的设计可以减小中断响应延时

2向量地址寄存器(VICVectAddr)




(七)中断状态寄存器


如果使用了多个非向量IRQ中断或多个FIQ中断,那么在发生中断后要在程序中查找中断源。通过IRQ状态寄存器和FIQ状态寄存器可以了解到这些中断源的中断请求状态。


任何在VIC中使能的中断都会把中断请求反映在"所有中断状态寄存器(VICRawIntr)"中。

1 所有中断状态寄存器(VICRawIntr)



2 FIQ状态寄存器(VICFIQStatus)


3 IRQ状态寄存器(VICIRQStatus)



(八)软件中断寄存器

在一些特殊场合或者调试时,可能需要使用软件强制产生某个中断请求

1软件中断寄存器(VICSoftInt)



2软件中断清零寄存器(VICSoftIntClear)



(九)保护使能寄存器

在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。


(十)IRQ中断的设计实例

设置外部中断0产生向量IRQ中断后执行中断服务程序“IRQ_Eint0( )”。

步骤:
1.设置引脚连接模块,将P0.X设置为外部中断功能;
2.设置所有中断为IRQ中断;
3.将外部中断0(在中断源列表中序号X)设置到优先级0中,并使能IRQ中断;
4.将外部中断0的中断服务程序写入对应优先级的地址寄存器中;
5. 使能外部中断0;

(十一)IRQ中断的发生过程

IRQ中断的发生过程
1.正在执行用户程序;

2.外部中断0发生中断;

3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;

4.程序跳转至异常向量表中IRQ入口0x0018处;

5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;

6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码



转载:http://blog.csdn.net/gatieme/article/details/21622421
目录
相关文章
|
23天前
|
弹性计算 运维 安全
毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN
本教程将介绍一种 “鱼与熊掌兼得” 的创新方案:核心VPN服务(Pritunl)部署在您本地的强大工作站上,通过轻量级的FRP内网穿透工具,借助阿里云ECS提供的稳定公网入口,安全地将其服务能力发布到互联网。 这样,远程员工只需连接到一个统一的云上地址,即可直接接入您办公室或实验室的本地网络,访问其中的设备,实现真正意义上的“远程局域网”体验。
191 1
毅硕HPC | Pritunl + ECS + Frp 搭建远程办公VPN
|
9月前
|
缓存 数据中心 网络架构
5个减少网络延迟的简单方法
高速互联网对工作与娱乐至关重要,延迟和断线会严重影响效率和体验。本文探讨了导致连接缓慢的三个关键因素:吞吐量、带宽和延迟,并提供了减少延迟的实用方法。包括重启设备、关闭占用带宽的程序、使用有线连接、优化数据中心位置以及添加内容分发网络 (CDN) 等策略。虽然完全消除延迟不可能,但通过这些方法可显著改善网络性能。
2225 7
|
10月前
|
并行计算
vllm部署模型要点
vllm部署模型要点
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之@AutoService工作问题如何解决
Java编译器注解运行和自动生成代码问题之@AutoService工作问题如何解决
589 1
|
11月前
|
机器学习/深度学习 人工智能 搜索推荐
PaSa:字节跳动开源学术论文检索智能体,自动调用搜索引擎、浏览相关论文并追踪引文网络
PaSa 是字节跳动推出的基于强化学习的学术论文检索智能体,能够自动调用搜索引擎、阅读论文并追踪引文网络,帮助用户快速获取精准的学术文献。
802 15
|
10月前
|
人工智能 程序员 iOS开发
一文彻底学会HarmonyOS的AI编程助手
本文介绍了华为官方AI辅助编程工具CodeGenie,该工具支持HarmonyOS NEXT领域的智能问答、ArkTS代码补全/生成及万能卡片生成,显著提升开发效率。安装步骤包括下载插件、离线安装及授权登录,功能涵盖知识问答、代码补全与生成、以及智能生成HarmonyOS万能卡片。
397 0
|
人工智能 安全 JavaScript
Open Interpreter:AI 赋能终端!在终端中对话AI模型进行编程,通过运行代码来完成各种计算机操作任务
Open Interpreter 是一个让语言模型运行代码的强大工具,提供了一个类似 ChatGPT 的界面,支持多种编程语言和丰富的功能。
822 7
Open Interpreter:AI 赋能终端!在终端中对话AI模型进行编程,通过运行代码来完成各种计算机操作任务
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的个性化学习路径优化
在当前教育领域,个性化学习正逐渐成为一种趋势。本文探讨了如何利用人工智能技术来优化个性化学习路径,提高学习效率和质量。通过分析学生的学习行为、偏好和表现,AI可以动态调整学习内容和难度,实现真正的因材施教。文章还讨论了实施这种技术所面临的挑战和潜在的解决方案。
874 7
|
人工智能 自然语言处理 搜索推荐
文本向量化模型新突破——acge_text_embedding勇夺C-MTEB榜首
在人工智能的浪潮中,大型语言模型(LLM)无疑是最引人注目的潮头。在支撑这些大型语言模型应用落地方面,文本向量化模型(Embedding Model)的重要性也不言而喻。 近期,我在浏览huggingface发现,国产自研文本向量化模型acge_text_embedding(以下简称“acge模型”)已经在业界权威的中文语义向量评测基准C-MTEB(Chinese Massive Text Embedding Benchmark)中获得了第一名。
文本向量化模型新突破——acge_text_embedding勇夺C-MTEB榜首
|
SQL 关系型数据库 MySQL
如何在MySQL 8.0版本中开启远程登录
如何在MySQL 8.0版本中开启远程登录
3989 0