Cortex-M4 ARM 汇编语言

转载  http://blog.csdn.net/guojing3625/article/details/16877639

4.3.5 汇编语言:指令隔离(barrier)指令和存储器隔离指令

CM3 中的另一股新鲜空气是一系列的隔离指令(亦可以译成“屏障”、“路障”,可互换使用——译者 注)。它们在一些结构比较复杂的存储器系统中是需要的(典型地用于流水线和写缓冲——译者注)。在 这类系统中,如果没有必要的隔离,会导致系统发生紊乱危象(race condition),(相当于数电中的“竞争 与冒险”——译者注).

举例来说,如果可以在运行时更改存储器的映射关系或者内存保护区的设置,(通过写 MPU 的寄存 器),就必须在更改之后立即补上一条 DSB 指令(数据同步指令)。因为对 MPU 的写操作很可能会被放 到一个写缓冲中。写缓冲是为了提高存储器的总体访问效率而设的,但它也有副作用,其中之一,就是 会导致写内存的指令被延迟几个周期执行,因此对存储器的设置不能即刻生效,这会导致紧临着的下一 条指令仍然使用旧的存储器设置——但程序员的本意显然是使用新的存储器设置。这种紊乱危象是后患 无穷的,常会破坏未知地址的数据,有时也会产生非法地址访问 fault。紊乱危象还有其它的表现形式, 后续章节会一一介绍。CM3 提供隔离指令族,就是要消灭这些紊乱危象(在有些讲解计算机体系体系结 构的书中,这类紊乱危象也被称为“存储器相关”——译注)。

CM3 中共有3 条隔离指令,如表4.27 所列

表4.27 隔离指令

指令名

功能描述

DMB

数据存储器隔离。DMB 指令保证: 仅当所有在它前面的存储器访问操作

都执行完毕后,才提交(commit)在它后面的存储器访问操作。

DSB

数据同步隔离。比 DMB 严格: 仅当所有在它前面的存储器访问操作

都执行完毕后,才执行在它后面的指令(亦即任何指令都要等待存储器访 问操作——译者注)

ISB

指令同步隔离。最严格:它会清洗流水线,以保证所有它前面的指令都执

行完毕之后,才执行它后面的指令。

DMB 在双口 RAM 以及多核架构的操作中很有用。如果 RAM 的访问是带缓冲的,并且写完之后

马上读,就必须让它“喘口气”——用 DMB 指令来隔离,以保证缓冲中的数据已经落实到 RAM 中。 DSB 比 DMB 更保险(当然也是有执行代价的),它是宁可错杀也不漏网——清空了写缓冲,使得任 何它后面的指令,不管要不要使用先前的存储器访问结果,通通等待访问完成。大虾们可以在有绝 对信心时使用 DMB,新手还是使用 DSB 比较保险。
同 DMB/DSB 相比,ISB 指令看起来似乎最强悍,但是却一身都是“愣劲”,不由分说就“动粗”。

不过它还有其它的用场——对于高级底层技巧:“自我更新”(self-mofifying)代码,非常有用。举例 来说,如果某个程序从下一条要执行的指令处更新了自己,但是先前的旧指令已经被预取到流水线 中去了,此时就必须清洗流水线,把旧版本的指令洗出去,再预取新版本的指令。因此,必须在被 更新代码段的前面使用 ISB,以保证旧的代码从流水线中被清洗出去,不再有机会执行(译者觉得 这种做法太工于技巧,有点“作秀”,现实编程中应该极少会用到,因此读者不必太钻它)。

FreeRTOS eg:

__asm void prvStartFirstTask( void )
{
PRESERVE8


/* Use the NVIC offset register to locate the stack. */
ldr r0, =0xE000ED08
ldr r0, [r0]
ldr r0, [r0]
/* Set the msp back to the start of the stack. */
msr msp, r0
/* Globally enable interrupts. */
cpsie i /*Change Processor Status Int Enable  IRQ*/
cpsie f /*Change Processor Status Int Enable  FIQ*/
dsb
isb

/* Call SVC to start the first task. */
svc 0
nop
nop
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《ARM Cortex-M3和Cortex-M4处理器权威指南(第三版)》是一本关于ARM Cortex-M3和Cortex-M4处理器的权威指南,该书在CSDN有提供。 本书是针对ARM Cortex-M3和Cortex-M4处理器的深入介绍和解析,旨在帮助读者更好地理解和应用这两款处理器。书中详细介绍了这两款处理器的关键特性、架构、指令集,而且还提供了丰富的编程示例和实践案例。 书中首先介绍了ARM Cortex-M系列处理器的基本概念和特性,包括处理器的体系结构、寄存器组织、中断处理、异常处理等。接着,详细分析了Cortex-M3和Cortex-M4处理器的指令集,包括寻址模式、数据处理指令、逻辑指令等。 本书还涵盖了处理器的重要特性,如睡眠模式、低功耗性能、外设接口等。此外,针对实际应用中的常见问题,还提供了一些解决方案和调试技巧。读者通过学习本书,可以了解到如何最大限度地发挥Cortex-M3和Cortex-M4处理器的性能,以及如何优化代码和调试工具。 需要注意的是,本书是第三版,相较于前两版做了一些更新和完善。所以,即使已经阅读过前两版的读者,也可以通过阅读本书来进一步扩展和深化对ARM Cortex-M3和Cortex-M4处理器的理解。 总之,《ARM Cortex-M3和Cortex-M4处理器权威指南(第三版)》是一本非常有价值的技术书籍,对于从事嵌入式开发、嵌入式系统设计以及对ARM Cortex-M系列感兴趣的读者来说,是一本必备的参考书。在CSDN上能够获取此书,可以帮助读者更加方便地获取相关知识。 ### 回答2: 《ARM Cortex-M3和Cortex-M4处理器权威指南(第三版)》是一本介绍ARM Cortex-M3和Cortex-M4处理器的权威指南,旨在帮助读者深入了解这两种处理器的架构、特性和应用。 该书分为多个章节,首先介绍了ARM公司和Cortex-M系列处理器的背景和发展历程。然后详细介绍了Cortex-M3和Cortex-M4的架构和指令集,并从底层硬件到软件编程的角度对其进行了全面阐述。 在介绍Cortex-M3处理器时,书中详细解释了其内部的存储器结构、中断系统、异常处理、时钟和电源管理等重要组成部分。同时,也讲解了Cortex-M3处理器的特性,例如支持的调试功能、低功耗设计和可靠性等。 针对Cortex-M4处理器,该书还介绍了其在基于ARMv7-M架构上的新特性和性能提升。其中包括浮点运算单元(FPU)、数字信号处理扩展(DSP)和Systick定时器等。同时,还详细介绍了Cortex-M4处理器和Cortex-M3处理器的差异和应用场景。 此外,该书还深入讲解了使用C语言编程和汇编语言编程开发应用程序的方法和技巧。读者可以学习到如何进行中断处理、时钟配置、外设控制以及优化代码等方面的内容。 总之,《ARM Cortex-M3和Cortex-M4处理器权威指南(第三版)》通过深入浅出的方式,全面介绍了ARM Cortex-M3和Cortex-M4处理器的架构、特性和应用。对于从事嵌入式系统开发的工程师和研究人员来说,这本书是一本非常实用的参考资料。 ### 回答3: 《ARM Cortex-M3和Cortex-M4处理器权威指南(第三版)》是一本完整介绍ARM Cortex-M3和Cortex-M4处理器的权威性指南。此书由ARM公司主持编写,旨在帮助读者全面了解和掌握这两款处理器的原理、特性和功能。 Cortex-M3和Cortex-M4处理器是ARM公司推出的针对嵌入式系统设计的32位处理器。它们具有低功耗、高性能和强大的系统集成能力等特点,在嵌入式行业应用广泛。本书对这两种处理器的内部结构及其相互之间的差异进行了详细解析,同时还介绍了它们的指令集、内存管理单元、中断控制器等硬件特性。 本书还详细讨论了Cortex-M3和Cortex-M4处理器的软件开发环境和编程模型。读者可以了解到如何使用ARM开发工具链进行软件开发,并学习到如何编写高效的嵌入式软件程序。此外,还介绍了一些常见的嵌入式系统设计方法和技巧,以帮助读者更好地应用这两款处理器。 《ARM Cortex-M3和Cortex-M4处理器权威指南(第三版)》适合嵌入式系统的开发者、工程师和学生阅读。无论是初学者还是有经验的专业人士,都能从中获得宝贵的知识和实战经验。此书内容全面且详细,对于深入了解和应用Cortex-M3和Cortex-M4处理器非常有帮助。无论是学习嵌入式系统设计还是进行相应的应用开发,本书都是一本不可或缺的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值