- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统总线(System Bus)是内核访问数据、指令,以及调试模块的接口。采用Bit-band的映射区会自动转换成对应的位访问。同D-code一样,所有非对齐的访问会被分为对齐的访问。访问空间为0x2000 0000~0xDFFF FFFF和0xE010 0000~0xFFFF FFFF。 PPB总线是私有外设总线,是基于APB的32位总线,挂接了系统内的调试模块,ROM表等。芯片商可以挂接自己的自有模块。一般访问地址为0xE004 0000~0xE00F FFFF。 * 2.7 总线接口 Cortex-M3在内核水平上进行程序执行控制,包括停机(halting)、单步执行(stepping)、指令断点、数据观察点、寄存器和存储器访问、性能速写(profiling)以及各种跟踪机制。 Cortex-M3的调试系统基于ARM最新的CoreSight架构。CPU提供称为“调试访问接口(DAP)”的总线接口。通过这个总线接口,可以访问芯片的寄存器,也可以访问系统存储器,甚至是在内核运行的时候访问!对此总线接口的使用,是由一个调试端口(DP)设备完成的(SWJ-DP、SW-DP、JTAG-DP )。 * 2.8 调试系统 Cortex-M3只使用Thumb-2指令集。允许使用32位指令和16位指令。 Cortex-M3内核都不支持ARM指令,中断也在Thumb态下处理。 * 2.9 指令集 在过去,做 ARM 开发必须处理好两个状态:32 位的 ARM状态和16位的Thumb状态。当处理器在ARM状态下时,所有的指令均是32位的,此时性能相当高。而在Thumb状态下,所有的指令均是16位的,代码密度提高了一倍。 * 2.9 指令集 CM3使用Thumb-2,旧的应用程序需要移植和重建。对于大多数C源程序,只需简单地重新编译就能重建,汇编代码则可能需要大面积地修改和重写,才能使用CM3的新功能,并且要融入CM3新引入的统一汇编器框架(unified assembler framework)中。 CM3并不支持所有的Thumb-2指令,ARMv7-M的规格书只要求实现Thumb-2的一个子集。 * 2.9 指令集 总结 * * * * * * * * * 溢出标志的判断 处理器硬件判断规则 最高位和次高位同时有进位或同时无进位,无溢出;最高位和次高位进位状态不同,有溢出 人工判断的简单规则 只有当两个相同符号数相加(含两个不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;其他情况下,不会产生溢出 正数 正数 负数 最高位 次高位 零标志ZF(Zero Flag) 运算结果为0,则ZF=1,否则ZF=0 结果是0, ZF标志不是0 ! 举例 8位二进制数相加: 01111100 结果不是0,ZF=0 8位二进制数相加: 01111100=[1 结果是0,ZF=1 结果 进位 符号标志NF(Negative Flag) 运算结果最高位为1,则NF=1;否则NF=0 举例 8位二进制数相加: 01111100 最高位=1:SF=1 8位二进制数相加: 01111100=[1 最高位=0:SF=0 结果 进位 最高位=符号位=NF 5 .特殊功能寄存器——中断屏蔽寄存器组 PRIMASK, FAULTMASK和BASEPRI,这三个寄存器用于控制异常的使能和除能。 * 2.3 寄存器组 名字 功能描述 PRIMASK 这是个只有单一比特的寄存器。在它被置 1 后,就关掉所有可屏蔽的异常,只剩下 NMI 和硬 fault 可以响应。它的缺省值是 0,表示没有关中断。 FAULTMASK 这是个只有 1 个位的寄存器。当它置 1 时,只有 NMI 才能响应,所有其它的异常,甚至是硬 fault,也通通关掉。它的缺省值也是 0,表示没有关异常。 BASEPRI 这个寄存器最多有 9 位(由表达优先级的位数决定)。它定义了被屏蔽优先级的阈值。当它被设成某个值后,所有优先级号大于等于此值的中断都被关(优先级号越大,优先级越低)。但若被设成 0,则不关闭任何中断,0 也是缺省值。 5 .特殊功能寄存器——控制寄存器(CONTROL) 控制寄存器有两个用途,其一用于定义特权级别,其二用于选择当前使用哪个堆栈指针。由两个比特来行使这两个职能。 * 2.3 寄存器组 位 功能 CONTROL[1] 堆栈指针选择 0=选择主堆栈指针 MSP(复位后的缺省值) 1=选择进程堆栈指针 PSP 在
文档评论(0)