- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三讲 Cortex-M3基础 Cortex-M3基础 Cortex‐M3 是一个32 位处理器内核。内部的数据是32 位的,寄存器是32 位的,存储器接口也是32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行。这样一来数据访问不再占用指令总线,从而提升了性能。 内容提要 寄存器组 异常和中断 操作模式和特权极别 存储器映射 总线接口 指令集 复位 3.1 寄存器组 Cortex‐M3 处理器拥有R0‐R15 的寄存器组。 R0-R12:通用寄存器 R0‐R12 都是32 位通用寄存器,用于数据操作。但是注意:绝大多数Thumb 指令只能访问R0‐R7。 R13: 堆栈指针 Cortex‐M3 拥有两个堆栈指针,任一时刻只能使用其中的一个。 主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理。 进程堆栈指针(PSP):由用户的应用程序代码使用。 R14:连接寄存器 当调用一个子程序时,为了减少访问内存的次数,由R14 存储返回地址,把返回地址直接存储在寄存器中,这与其他大多数其它处理器都不一样。 只有1 级子程序调用的代码无需访问内存,从而提高了子程序调用的效率。如果多于1 级,则需要把前一级的R14 值压到堆栈里。 在ARM编程时,应尽量只使用寄存器保存中间结果,迫不得以时才访问内存。 R15:程序计数寄存器(PC) 指向当前的程序地址。 如果修改它的值,就能改变程序的执行。 寄存器 特殊功能寄存器 Cortex‐M3 还在内核上搭载了若干特殊功能寄存器,包括: 程序状态字寄存器组PSRs; 中断屏蔽寄存器组PRIMASK, FAULTMASK, BASEPRI; 控制寄存器CONTROL。 程序状态寄存器(PSRs 或xPSR) 程序状态寄存器在其内部又被分为三个子状态寄存器: 应用程序 PSR(APSR) 中断号 PSR(IPSR) 执行 PSR(EPSR) 这3 个寄存器即可以单独访问,也可以组合访问(2 个组合,3 个组合都可以),当使用三合一的方式访问时,应使用名字“xPSR”或者“PSRs”。 PRIMASK :屏蔽所有的中断——当然了,不可屏蔽NMI。 FAULTMASK:屏蔽所有的fault——NMI 依然不受影响 BASEPRI :屏蔽所有优先级不高于某个具体数值的中断。 控制寄存器(CONTROL) 控制寄存器用于还用于定义特权级别和堆栈指针的选择。 特殊功能寄存器操作指令 只能被专用的MSR 和MRS 指令访问。 MRS gp_reg, special_reg 功能:读特殊功能寄存器的值到通用寄存器。 MSR special_reg, gp_reg 功能:写通用寄存器的值到特殊功能寄存器。 3.2 异常与中断 在ARM 编程领域中,凡是打断程序顺序执行的事件,都被称为异常(exception)。 除了外部中断外,当有指令执行了“非法操作”,或者访问被禁的内存区间,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。在不严格的情况下,异常与中断也可以混用。 程序代码也可以主动请求进入异常状态的(常用于系统调用)。 CM3 的所有中断机制都由NVIC 实现。除了支持240 个外中断之外,NVIC 还支持16‐4‐1=11 个内部异常源。 虽然CM3 是支持240 个外中断的,但具体使用了多少个是由芯片生产商决定。 NMI CM3 还有一个NMI(不可屏蔽中断)输入脚。 当它被置为有效时,NMI 服务程序会无条件地执行,NMI 究竟被拿去做什么,还要视处理器的设计而定。 在多数情况下,NMI 会被连接到一个看门狗定时器,有时也会是电压监视功能块,以便在电压掉至危险级别后警告处理器。NMI 可以在任何时间被激活。 向量表 当一个发生的异常被CM3 内核接受,对应的异常handler(处理程序) 就会执行。为了决定handler(程序) 的入口地址,CM3 使用了“向量表机制”。这里使用一张向量表。 向量表其实是一个WORD(32 位整数)数组,每个下标对应一种异常,该下标元素的值则是该异常handler 的入口地址。 在复位后,该寄存器的值为0。因此,在地址0 处必须包含一张向量表,用于初始时的异常分配。 举例 如果发生了异常11(SVC),则NVIC 会计算出偏移移量是11x4=0x2C,然后从那里取出服务程序的入口地址并跳入。 0 号异常的功能则是个另类,它并不是什么入口地址,而是给出了复位后MSP 的初值。 嵌套向量中断控制器(NVIC) Cortex‐M3 在内核上搭载了一颗中断控制器—嵌套向量中断控制器NVIC
您可能关注的文档
最近下载
- 从百草园到三味书屋.pdf VIP
- 电信诈骗主题教育PPT模板主题班会教育PPT课件模板.pptx VIP
- 医院护理人员职业健康保护制度.docx VIP
- 第4课 《直面挫折 积极应对》课件 - 中职高教版心理健康与职业生涯.ppt
- 《宠物健康与免疫》课件.ppt VIP
- 松香水安全技术说明书样本.doc VIP
- 在WindowsServer2008英文版64位服务器上安装金蝶K3V10.4数据库层方案.pdf VIP
- 中小学班级英语文化建设方案及实施.docx VIP
- 新疆维吾尔自治区乌鲁木齐市2024-2025学年九年级9月月考历史试题(原卷版).pdf VIP
- 第四章 不完全信息动态博弈四章 不完全信息动态博弈第四章 不完全信息动态博弈第四章 不完全信息动态博弈.ppt VIP
文档评论(0)