- 1、本文档共83页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第2章;帮助初学者深入了解CPU的运作机制及其性能;
本章着眼于Cortex-M3内核,处理器状态与模式,内部寄存器,特殊功能寄存器,异常、中断及其向量表和存储系统,为成为一名应用工程师打下基础。;目录;2.1ARM体系结构的特点;目录;2.2各ARM体系结构版本;指令集演进图;ARMV8架构
V8-A:将64位架构支持引入ARM架构中,其中包括:
64位通用寄存器、SP(堆栈指针)和?PC(程序计数器)
64?位数据处理和扩展的虚拟寻址。
两种主要执行状态:
AArch64?-64位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
AArch32?-32位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
支持三个主要指令集:A32、T32、A64
成员有:Cortex-A32(32位)、Cortex-A35、Cortex-A53、Cortex-A57、Cortex-A72、Cortex-A73。
V8-R:暂无
V8-M:Cortex-M7;提示:接下来的3节内容与课本内容不一致,将介绍CM3的内核原理。下图为CM3的组成框图。;Cortex-M3处理器有2种工作状态:
Thumb状态:这是16位和32位半字对齐Thumb和Thumb-2指令的正常执行状态;
调试状态:当处理器停机调试时进入该状态。
CM3处理器不支持ARM指令,没有ARM状态。;Cortex-M3处理器支持两种特权分级:特权级(Privileged)和非特权级(Unprivileged,也叫用户级)。
代码可以是特权执行或非特权执行,非特权执行时对有些资源的访问受到限制或不允许访问,特权执行可访问所有资源。
通过引入特权级和用户级,就能够在硬件水平上限制某些不受信任的或者还没有调试好的程序,不让它们随便地配置涉及要害的寄存器,因而系统的可靠性得到了提高。进一步地,如果配了MPU(存储器保护单元),它还可以作为特权机制的补充——保护关键的存储区域不被破坏,这些区域通常是操作系统的区域。?
举例来说,操作系统的内核通常都在特权级下执行,所有没有被MPU禁掉的存储器都可以访问。在操作系统开启了一个用户程序后,通常都会让它在用户级下执行,从而使系统不会因某个程序的崩溃或恶意破坏而受损。;在特权级下的程序可以为所欲为,但也可能会把自己给玩进去——切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写CONTROL寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发SVC异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。
事实上,从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态(也可以手工指定返回的状态)。;合法的工作模式和特权级别转换图;目录;Cortex-M3处理器的寄存器及其分组情况;寄存器R13用作堆栈指针SP,SP忽略写入位[1:0]的值,SP的最低两位总是0(事实上R13的最低2位被硬件连接到0),故堆栈操作是字对齐的。
SP有两个分组版本:MSP(MainStackPointer,或写作SP_main)主堆栈指针和PSP(ProcessStackPointer,或写作SP_process)进程堆栈指针;
MSP由OS内核、异常服务程序以及所有需要特权访问的应用程序使用;
PSP用于常规的应用程序代码(不处于异常服务程序中)。用户应用程序代码可以使用PSP(CONTROL[1]=1),也可以使用MSP(CONTROL[1]=0)。
若要指明访问PSP或MSP则必须通过专门的指令(MSR和MRS)访问。
CM3处理器使用FD(FullDescending满递减)堆栈,即入栈操作为:SP先减4,数据再入栈,SP总是指向最后一个入栈的数据,而传统的ARM有FD、ED、FA、EA四种堆栈。;在进入异常服务程序后,LR的值被自动更新为特殊的EXC_RETURN,这是一个高28位全为1的值,只有[3:0]的值有特殊含义,如下表所示。当异常服务例程把这个值送往PC时,就会启动处理器的中断返回序列。
合法的EXC_RETURN值共3个,如下表所示。?;R15用作程序计数器,因为CM3内部使用了指令流水线,读PC时返回的值是当前指令的地址+4。
CM3中的指令至少是半字对齐的,所以PC的LSB总是读回0。如果向PC中写数据,就会引起一次程序的跳转,无论是直接写PC值还是使用分支指令进行跳转,都必须保证加载到PC的值的
您可能关注的文档
最近下载
- 中国高尔夫差点系统会员入会申请书.doc
- 江苏国泰(002091)公司2023年财务分析研究报告.doc
- 2024执业药师继续教育药物分析(3)参考答案.docx
- DB11T 383-2023 建筑工程施工现场安全资料管理规程.docx
- 总体国家安全观授课.pptx VIP
- 一种聚4-甲基-1-戊烯中空纤维膜的制备方法.pdf VIP
- DB11T 1832.2-2023 建筑工程施工工艺规程 第2部分:防水工程.docx
- 普外科麻醉科运用PDCA循环提高患者术后自控镇痛有效率QCC品管圈成果汇报书.docx
- 海信BCD-203FH电冰箱使用说明书.pdf
- 哈工大尹海洁社会统计学(第2版)课后习题答案.docx
文档评论(0)