完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、寄存器组
R0-R12:通用寄存器 R0‐R12 都是 32 位通用寄存器,用于数据操作。但是注意:绝大多数 16 位 Thumb 指令只能访问 R0‐R7,而 32 位 Thumb‐2 指令可以访问所有寄存器。 R13: 两个堆栈指针 Cortex‐M3 拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。 ●主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程) ● 进程堆栈指针(PSP):由用户的应用程序代码使用。 R14:连接寄存器 不像大多数其它处理器, ARM 为了减少访问内存的次数(访问内存的操作往往要 3 个以上指令周期,带 MMU和 cache 的就更加不确定了),把返回地址直接存储在寄存器中。这样足以使很多只有 1 级子程序调用的代码无需访问内存(堆栈内存),从而提高了子程序调用的效率。 R15:程序计数寄存器 指向当前的程序地址。如果修改它的值,就能改变程序的执行流。 特殊功能寄存器 Cortex‐M3 还在内核水平上搭载了若干特殊功能寄存器,包括以下三种: ● 程序状态字寄存器组(PSRs); ● 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI); ● 控制寄存器(CONTROL)。 二、操作模式和特权极别 Cortex‐M3 处理器支持两种处理器的操作模式,还支持两级特权操作。 两种操作模式分别为: 处理者模式(handler mode)和线程模式(thread mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。 Cortex‐M3 的另一个侧面则是特权的分级——特权级和用户级。这可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。处理器支持两种特权级,这也是一个基本的安全模型。 在 CM3线程模式,既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器,并且可以执行所有指令。 特权级与用户级切换 从特权级进入用户级通过修改CONTROL寄存器,一旦切换到用户级,就不能随便切换到特权级。必须执行一条系统调用指令(SVC)。这会触发 SVC 异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。 用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态。 三、嵌套向量中断控制器 Cortex‐M3 在内核水平上搭载了一颗中断控制器——嵌套向量中断控制器 NVIC(Nested Vectored Interrupt Controller)NVIC 提供如下的功能: ●可嵌套中断支持 ●向量中断支持 ●动态优先级调整支持 ●中断延迟大大缩短 ●中断可屏蔽 可嵌套中断支持 可嵌套中断支持的作用范围很广,覆盖了所有的外部中断和绝大多数系统异常。外在表现是,这些异常都可以被赋予不同的优先级。当前优先级被存储在 xPSR 的专用字段中。当一个异常发生时,硬件会自动比较该异常的优先级是否比当前的异常优先级更高。如果发现来了更高优先级的异常,处理器就会中断当前的中断服务例程,而服务新来的异常——即立即抢占。 向量中断支持 当开始响应一个中断后, CM3 会自动定位一张向量表,并且根据中断号从表中找出 ISR 的入口地址,然后跳转过去执行。 动态优先级调整支持 软件可以在运行时期更改中断的优先级。 中断延迟大大缩短 Cortex‐M3 为了缩短中断延迟,引入了好几个新特性。包括自动的现场保护和恢复,以及其它的措施,用于缩短中断嵌套时的 ISR 间延迟。 四、存储器映射 总体来说, Cortex‐M3支持4GB存储空间,如图下图所示地被划分成若干区域。 五、总线接口 Cortex‐M3内部有若干个总线接口,以使CM3能同时取址和访内(访问内存),它们是: ●指令存储区总线(两条) ●系统总线 ●私有外设总线 有两条代码存储区总线负责对代码存储区的访问,分别是 I‐Code 总线和 D‐Code 总线。前者用于取指,后者用于查表等操作,它们按最佳执行速度进行优化。 系统总线用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备,以及系统级存储区的部分空间。 六、存储器保护单元(MPU) Cortex‐M3有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到violated时,MPU就会产生一个fault异常,可以由fault异常的服务例程来分析该错误,并且在可能时改正它。 七、中断和异常 CM3 的所有中断机制都由 NVIC 实现。除了支持 240 条中断之外, NVIC 还支持 16‐4‐1=11 个内部异常源,可以实现fault管理机制。结果,CM3 就有了 256 个预定义的异常类型,异常类型如下: 虽然 CM3 是支持 240 个外中断的,但具体使用了多少个是由芯片生产商决定。 CM3 还有一个NMI(不可屏蔽中断)输入脚。当它被置为有效(assert)时, NMI 服务例程会无条件地执行。 7.1先进的中断处理功能 ●内建的嵌套向量中断控制器支持多达 240 条外部中断输入。中断的嵌套也是在硬件水平上实现的,不需要软件代码来实现。 ●Cortex‐M3 在进入异常服务例程时,自动压栈了 R0‐R3, R12, LR, PSR 和 PC,并且在返回时自 动弹出它们,既加速了中断的响应,也再不需要汇编语言代码。 ●NVIC 支持对每一路中断设置不同的优先级,使得中断管理极富弹性。 ●有些需要较多周期才能执行完的指令,是可以被中断-继续的——就好比它们是一串指令一样。这些指令包括加载多个寄存器(LDM),存储多个寄存器(STM),多个寄存器参与的 PUSH,以及多个寄存器参与的 POP。 ●除非系统被彻底地锁定, NMI(不可屏蔽中断)会在收到请求的第一时间予以响应。对于很多安全‐关键(safety‐critical)的应用, NMI 都是必不可少的。 八、整体系统框图 下图是整个CM3的内核框图 框图英文缩写级含义: 重点含义解释: ● 嵌套向量中断控制器 NVIC: NVIC 是一个在 CM3 中内建的中断控制器。中断的具体路数由芯片厂商定义。 NVIC 是与 CPU 紧耦合的,它还包含了若干个系统控制寄存器。因为 NVIC 支持中断嵌套,使得在 CM3 上处理嵌套中断时清爽而强大。它还采用了向量中断的机制。在中断发生时,它会自动取出对应的服务例程入口地址,并且直接调用,无需软件判定中断源,为缩短中断延时做出了非常重要的贡献。 ●SysTick 定时器: 系统滴答定时器是一个非常基本的倒计时定时器,用于在每隔一定的时间产生一个中断,即使是系统在睡眠模式下也能工作。它使得 OS 在各 CM3器件之间的移植中不必修改系统定时器的代码,移植工作一下子容易多了。 SysTick定时器也是作为 NVIC 的一部分实现的。 ●存储器保护单元: MPU 是一个选配的单元,有些 CM3 芯片可能没有配备此组件。如果有,则它可以把存储器分成一些 regions,并分别予以保护。例如,它可以让某些 regions 在用户级下变成只读,从而阻止了一些用户程序破坏关键数据。 ●BusMatrix: BusMatrix 是 CM3 内部总线系统的核心。它是一个 AHB 互连的网络,通过它可以让数据在不同的总线之间并行传送——只要两个总线主机不试图访问同一块内存区域。BusMatrix 还提供了附加的数据传送管理设施,包括一个写缓冲以及一个按位操作的逻辑(位带(bit‐band) )。 ●AHB to APB: 它是一个总线桥,用于把若干个 APB 设备连接到 CM3 处理器的私有外设总线上(内部的和外部的)。这些 APB 设备常见于调试组件。 CM3 还允许芯片厂商把附加的 APB 设备挂在这条 APB 总线上,并通过 APB 接入其外部私有外设总线。 ●ROM 表: 它只是一个简单的查找表,提供了存储器映射信息,这些信息供包括了多种系统设备和调试组件。当调试系统定位各调试组件时,它需要找出相关寄存器在存储器的地址,这些信息由此表给出。 九、总线连接示范图 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:28 , Processed in 1.033051 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号