ARM920T中断体系结构

本文详细介绍了ARM920T处理器在中断发生时的硬件自动处理过程,包括PC值和CPSR的保存,以及中断后软件需要完成的工作,如计算正确的中断返回地址、保护和恢复现场等。同时提到了中断优先级的设置,由7个仲裁器控制,并解释了PRIORITY寄存器的功能。代码分析涉及中断.c和init.c文件,以及main.c中等待中断触发的部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

再开始ARM920t的中断体系分析前,我们先来回忆一个中断触发时8051单片机的处理流程:
(1)保护现场
(2)cpu的pc指针自动跳转到中断向量表处找出对应的中断处理入口,即中断处理函数
(3)进入中断处理函数后首先要分辨中断源,然后进行对应的中断处理
(4)中断处理完,清除中断
(5)返回现场
中断程序的设置流程:
(1)建立中断向量表
(2)初始化中断:打开开关、设置优先级、中断模式下的堆栈指针等
(3)建立中断处理函数:汇编调用C函数

开始分析ARM920t的中断处理过程,原理和51单片机类似直接开始分析我的实验代码。

进入代码时间:

File:head.S

.extern     main
.text 
.global _start 
_start:
@******************************************************************************       
@ (1)建立中断异常向量表:每一条指令占用4个字节的空间
@******************************************************************************       
    b   Reset         		@ 0x00:(有使用)启动复位也是一种特殊的“异常”
HandleUndef:
    b   HandleUndef   		@ 0x04: 未定义指令中止模式的向量地址
HandleSWI:
    b   HandleSWI     		@ 0x08: 管理模式的向量地址,通过SWI指令进入此模式
HandlePrefetchAbort:
    b   HandlePrefetchAbort @ 0x0c: 指令预取终止导致的异常的向量地址
HandleDataAbort:
    b   HandleDataAbort		@ 0x10: 数据访问终止导致的异常的向量地址
HandleNotUsed:
    b   HandleNotUsed		@ 0x14: 保留
    b   HandleIRQ 			@ 0x18: (有使用)中断模式的向量地址
HandleFIQ:
    b   HandleFIQ			@ 0x1c: 快中断模式的向量地址

Reset:                  
    ldr sp, =4096           @ 设置栈指针,以下都是C函数,调用前需要设好栈
    bl  disable_watch_dog   @ 关闭WATCHDOG,否则CPU会不断重启
    
    msr cp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值