Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1188399
  • 博文数量: 56
  • 博客积分: 400
  • 博客等级: 一等列兵
  • 技术积分: 2800
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-30 13:08
个人简介

一个人的差异在于业余时间

文章分类

全部博文(56)

文章存档

2023年(1)

2019年(1)

2018年(1)

2017年(1)

2016年(2)

2015年(20)

2014年(10)

2013年(7)

2012年(12)

2011年(1)

分类: 嵌入式

2012-05-29 23:57:34

   说起arm体系,其实我并不是太了解,以前一直做的mips体系的,做做驱动,或者调试调试oops bug.
   这里也仅限于给自己来个抛砖引玉,作为深入研究的一个开始吧^^.
 ARM, Advanced RISC Machines, 1991年成立于英国剑桥; 巧合的是, LINUX也诞生在这一年;
ARM的7种运行模式:
非特权模式<--->-特权模式
非异常模式<--->异常模式
用户模式    系统模式    中断模式,快中断模式, 管理模式, 终止模式, 未定义模式
内存结构模型:冯诺依曼结构和哈佛结构;后者分2个独立的内存空间:指令空间和数据空间;
ARM的工作状态, ARM态(32bit), THUMB态(16bit); BX指令可以切换;
ARM的存储器格式, 可设为大端格式或小端格式;
ARM寄存器组织, 37个32bit寄存器,其中:
31个通用寄存器:未分组R0~R7, 分组R8~R14(R13为堆栈指针寄存器SP, R14为子程序链接寄存器LR), 程序计数器PC(R15);
6个为状态寄存器, CPSR+5*SPSR;
ARM的7种异常:
0X0-reset, 0X4-undefined, 0X8-swi, 0XC-prefetch abort, 0X10-data abort, 0X14-保留, 0X18-irq, 0X1C-fiq;
异常优先级排序:
1.RESET  2.DATA ABORT  3.FIQ  4.IRQ  5.PRE ABORT  6.UNDEF, SWI
ARM对异常的响应:
下一条指令存入LR->CPSR复制到相应的SPSR保存->设置CPSR模式位->禁止中断位->调整到异常处理向量;
ARM从异常返回:
LR的值减去相应的偏移量送到PC中, SPSR复制到CPSR中, 同时也恢复了中断禁止位;
ARM指令分类(7种):
跳转指令, 数据处理指令, 乘法指令, 加载/存储指令, 状态寄存器指令, 协处理器指令, Thumb指令集;
嵌入式最小系统:   处理器, 内存, 时钟, 电源和复位
FIQ比IRQ更快的原因:   
1. 寄存器R8~R14, 不用保存;   2. 优先级更高;   3. 最异常向量表最后, 不用跳转;
这里我们可以查看cpsr寄存器来查看当前cpu的工作模式.
对于更详细的我们只能通过cpu手册,还有参考相关实现代码和调试来加深我们的理解了.


阅读(5521) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

lmnos2012-10-05 20:55:15

希望博主继续写下去