ARM7内核寄存器、中断向量控制器
2015-06-19 11:11
633 查看
ARM7内核寄存器分布
ARM7TDMI-S内核共37个寄存器。
R0—R7,通用寄存器,共8个。R8—R12,除快中断有自己寄存器(Rx_fiq),其他模式共用,共10个。
R13,栈指针寄存器。用户、系统共用外,其他模式有独立寄存器,共6个。
R14,连接寄存器。当程序跳转(BL)、异常模式时,用于保存当前PC值。同上,共6个。
R15,程序计数寄存器,所有模式共用,1个。
CPSR,程序状态寄存器,同上,1个。
SPSR,程序状态保存寄存器,用户、系统模式没有。其他模式各自独立。进入异常模式时,用于保存用户、系统模式的CPSR。共5个。
以上为ARM7内核中的37个寄存器。
CPSR位分布
ARM7,LPC2000系列,中断向量控制器。
ARM内核本身只有FRQ和IRQ,2条中断输入信号线。为了扩展中断源,ARM7采用中断向量控制器管理中断源,从而扩展出来了32个中断请求输入。中断向量控制器属于内核外设!CPU的IRQ和FIQ中断由CPSR的6、7位控制,1禁止,0使能。
中断分类,FIQ、向量IRQ、非向量IRQ,优先级依次降低。
①FIQ一般只分配一个,不建议分配两个以上。
②向量IRQ最多可分配16个相爱难过来那个IRQ中断。
③非向量IRQ中断只有一个。
基于VIC的每一个中断都有一个VIC通道号。LPC2000系列不足32个中断。
模块 | 标志 | VIC通道号 |
WTD | 看门狗 | 0 |
—— | (保留给软件) | 1 |
ARM内核 | EmbeddedICE,Rx | 2 |
ARM内核 | EmbeddedICE,Tx | 3 |
Timer0 | 匹配、捕获 | 4 |
Timer1 | 匹配、捕获 | 5 |
UART0 | 6 | |
UART1 | 7 | |
PWM0 | 8 | |
I²C0 | SI(状态改变) | 9 |
SPI0 | 10 | |
SPI1 | 11 | |
PLL | PLL锁定(PLOCK) | 12 |
RTC | 计数器增加 | 13 |
系统控制 | EINT0 | 14 |
EINT1 | 15 | |
EINT2 | 16 | |
EINT3 | 17 | |
A/D0 | 18 | |
I²C1 | SI(状态改变) | 19 |
BOD | 掉电检测 | 20 |
一,VIC控制配置寄存器
中断选择寄存器 VICIntSelect
中断使能寄存器 VICIntEnable
中断使能清零寄存器 VICIntEnclr
三个寄存器的32位对应相应32中断源,实现32个中断的配置。
VICIntSelect 相应位置 1 相应中断分配 FIQ中断,置 0 分配 IRQ中断
VICIntEnable 相应位置 1 使能分配的相应的中断,置 0 无效
VICIntEnClr 相应位置 1 禁止分配的相应的中断,置 0 无效
二,VIC地址寄存器
向量地址寄存器 VICVectAddr 保存向量IRQ中断地址
默认向量地址寄存器 VICDefVectAddr 保存非向量IRQ中断地址
向量地址寄存器0—15 VICVectAddr X 保存向量IRQ中断地址
向量控制寄存器0—15 VICVectCntl X
VICVectCntl X相应位描述
位 | 31:6 | 5 | 4:0 |
功能 | 保留 | 向量IRQ使能 | 分配给该向量IRQ通道的中断请求或软件中断的编号 |
向量IRQ通道有0—15共16个,优先级依次降低。
VICVectCntl X 4:0 bit 存放 中断通道号(基于VIC的编号0—32),中断编号放入较高向量IRQ通道控制寄存器,该中断就是向量IRQ中断中优先级较高的!
例如:VICVectCntl0 = 0x20 | 4; 定时器0分配为向量IRQ通道0
三,状态寄存器
IRQ状态寄存器 VICIRQStatus 读取得到分配并使能为IRQ的中断状态
FIQ状态寄存器 VICFIQStatus 读取得到分配并使能为FIQ的中断状态
所有中断状态寄存器 VICRawIntr 读取得到所有中断状态
以上寄存器位分配,对应VIC通道号
读取,某位是 1 则代表该中断激活。
相关文章推荐
- 电源管理代码
- 对比Angular/jQueryUI/Extjs:没有一个框架是万能的
- 牛逼顿
- 代码之髓-第一章-如何深入高效学习地学习语言
- JQuery操作CheckBox和Radio
- 返回一个二维整数数组中最大联通子数组的和
- 哈夫曼编码与解码
- 开始博客习惯
- 通过两个特征维度,刻画类别分布
- mysql远程链接不上,本地可以链接
- 滑动窗口协议
- 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)
- java定义和实现接口
- 使用rest-assured测试rest service, 遇到“415 Unsupported Media Type”
- 使用ngView配合AngularJS应用实现动画效果的方法
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- python的smtplib发邮件
- Excel Mode 函数
- 已知点 A(x1, y1) 和点 B(x2, y2), 求线段AB的垂直平分线.
- PHP实现中文圆形印章特效