热度 9
2012-1-16 15:52
2088 次阅读|
0 个评论
前两周,我们相继介绍了Cortex-M3的发展近况,也了解了其相关技术背景。而作为一名初学者,在ARM的学习中,会遇到大量的或熟悉或陌生的名词缩写,有效的理解并记忆它们十分有利于我们的学习。下面,是我们大致做的一些总结: AHB 先进高性能总线 AHB‐AP AHB访问端口 AMBA 先进单片机总线架构 APB 先进外设总线 ARM ARM ARM架构参考手册 ASIC 行业领域专用集成电路 ATB 先进跟踪总线 BE8 字节不变式大端模式 CPI 每条指令的周期数 CPU 中央处理单元 DAP 调试访问端口 DSP 数字信号处理器/数字信号处理 DWT 数据观察点及跟踪 ETM 嵌入式跟踪宏单元 FPB 闪存地址重载及断点 FSR Fault状态寄存器 HTM CoreSight AHB跟踪宏单元 ICE 在线仿真器 IDE 集成开发环境 IRQ 中断请求(通常是指外部中断的请求) ISA 指令系统架构 ISR 中断服务例程 ITM 指令跟踪宏单元 JTAG 连结点测试行动组(一个关于测试和调试接口的标准) JTAG‐DP JTAG调试端口 LR 连接寄存器 LSB 最低有效位 LSU 加载/存储单元 MCU 微控制器单元(俗称单片机) MMU 存储器管理单元 MPU 存储器保护单元 MSB 最高有效位 MSP 主堆栈指针 NMI 不可屏蔽中断 NVIC 嵌套向量中断控制器 OS 操作系统 PC 程序计数器 PSP 进程堆栈指针 PPB 私有外设总线 接下来,请随我来了解一下Cortex-M3的寄存器组 Cortex‐M3处理器拥有R0‐R15的寄存器组。其中R13作为堆栈指针SP。SP有两个,但在同一时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。 1. R0-R12:通用寄存器 R0‐R12都是32位通用寄存器,用于数据操作。但是注意:绝大多数16位Thumb指令只能访问R0‐R7,而32位Thumb‐2指令可以访问所有寄存器。 2. Banked R13: 两个堆栈指针 Cortex‐M3拥有两个堆栈指针,然而它们是banked,因此任一时刻只能使用其中的一个。主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)进程堆栈指针(PSP):由用户的应用程序代码使用。堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。 在ARM编程领域中,凡是打断程序顺序执行的事件,都被称为异常(exception)。除了外部中断外,当有指令执行了“非法操作”,或者访问被禁的内存区间,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。在不严格的上下文中,异常与中断也可以混用。另外,程序代码也可以主动请求进入异常状态的(常用于系统调用)。 3. R14:连接寄存器 当呼叫一个子程序时,由R14存储返回地址 不像大多数其它处理器,ARM为了减少访问内存的次数(访问内存的操作往往要3个以上指令周期,带MMU和cache的就更加不确定了),把返回地址直接存储在寄存器中。这样足以使很多只有1级子程序调用的代码无需访问内存(堆栈内存),从而提高了子程序调用的效率。如果多于1级,则需要把前一级的R14值压到堆栈里。在ARM上编程时,应尽量只使用寄存器保存中间结果,迫不得以时才访问内存。在RISC处理器中,为了强调访内操作越过了处理器的界线,并且带来了对性能的不利影响,给它取了一个专业的术语:溅出。 4. R15:程序计数寄存器 指向当前的程序地址。如果修改它的值,就能改变程序的执行流(很多高级技巧就在这里面——译注)。 5. 特殊功能寄存器 Cortex‐M3还在内核水平上搭载了若干特殊功能寄存器,包括 程序状态字寄存器组(PSRs) 中断屏蔽寄存器组(PRIMASK,FAULTMASK, BASEPRI) 控制寄存器(CONTROL) 更多信息请访问相关博文: http://bbs.ednchina.com/BLOG_ARTICLE_3001120.HTM 如果您有什么疑问请留言或者来信: wiznetbj@wiznettechnology.com ,希望本篇文章可以给您带来帮助,谢谢。