文件名称:总线接口-netfpga-1g-cml: kintex-7 fpga开发板 用户手册
文件大小:6.52MB
文件格式:PDF
更新时间:2024-06-29 04:47:28
Cortex-M3
2.6 总线接口 Cortex-M3内部有若干个总线接口,以使 CM3能同时取址和访内(访问内存),它们是: 指令存储区总线(两条) 系统总线 私有外设总线 有两条代码存储区总线负责对代码存储区的访问,分别是 I-Code 总线和 D-Code 总线。前者 用于取指,后者用于查表等操作,它们按最佳执行速度进行优化。 系统总线用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备, 以及系统级存储区的部分空间。 私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。 2.7 存储器保护单元(MPU) Cortex-M3有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分 别施加不同的访问限制。当检测到犯规(violated)时,MPU 就会产生一个 fault 异常,可以由 fault异常的服务例程来分析该错误,并且在可能时改正它。 MPU 有很多玩法。最常见的就是由操作系统使用 MPU,以使特权级代码的数据,包括操作系统 本身的数据不被其它用户程序弄坏。MPU在保护内存时是按区管理的(“区”的原文是 region,以 后不再中译此名词——译注)。它可以把某些内存 region设置成只读,从而避免了那里的内容意外 被更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更 加健壮,更加可靠(很多行业标准,尤其是航空的,就规定了必须使用 MPU来行使保护职能——译 注)。 2.8 指令集 Cortex-M3 只使用 Thumb-2 指令集。这是个了不起的突破,因为它允许 32 位指令和 16 位指 令水乳交融,代码密度与处理性能两手抓,两手都硬。而且虽然它很强大,却依然易于使用。 在过去,做 ARM 开发必须处理好两个状态。这两个状态是井水不犯河水的,它们是:32 位的 ARM 状态和 16 位的 Thumb 状态。当处理器在 ARM 状态下时,所有的指令均是 32 位的(哪怕只是 个”NOP”指令),此时性能相当高。而在 Thumb状态下,所有的指令均是 16位的,代码密度提高了 一倍。不过,thumb状态下的指令功能只是 ARM下的一个子集,结果可能需要更多条的指令去完成 相同的工作,导致处理性能下降。 为了取长补短,很多应用程序都混合使用 ARM和 Thumb代码段。然而,这种混合使用是有额外 开销(overhead)的,时间上的和空间上的都有,主要发生在状态切换之时。另一方面,ARM代码 和 Thumb代码需要以不同的方式编译,这也增加了软件开发管理的复杂度。