RTOS的发展之Armv7-M

时间:2022-10-17来源:网络

  ARMv7-M于2006(文件版本=A)问世,最近一次改版是2021(文件版本=E.e),市场上能搜寻到的产品琳琅满目,属于非常成熟的商品。本文多次引用的Cortex-M4,即属Armv7E-M的架构。

  以一个问世十多年、且广受欢迎的平台来说,其设计应有独到之处,本节将列出几项值得关注的特性。

从架构谈起

  Cortex-M平台在最初设计时,已将Coprocessor纳入考虑,且最多可支持16个协同处理器。M4内置的FPU,就是使用第10,11两个位置,透过它,M4可以快速的处理单精度的浮点数,对比传统的软件方式,效能上有10倍以上的提升。

  除了FPU外,Armv7E-M架构还内含了DSP指令集,在SIMD,Saturate,Q-Format等指令的助攻下,使得32 bit Cortex-M4在运算能力上,来到了一个新的高度,已经远远的、超过了早期8 bit MCU的水准。

  除此之外,ARM在除错的支持上非常齐全,但不在本次的讨论范围。

运作模式的探讨

  Cortex-M的内核,支持两种运作模式,分别是Thread mode,以及Handler mode,后者是发生中断时,CPU所切换的模式。

  Thread mode提供两个特权等级,分别是Privileged及Unprivileged,一般的作法,会让OS有特权,应用程序则无,此外,透过CONTROL寄存器,还可选择使用不同的堆栈指针(MSP or PSP)。

  看似平常的模式,其实有下列几个亮点:(1)Handler mode的离开方式,跟一般函式相同。(2)CPU进出Handler时,硬件会自动PUSH/POP多个缓存器。(3)内建的异步PendSV例外功能。(4)异步例外支持Active and Pending state。

中断及例外处理的优先权

  全系列的Cortex-M都内建了NVIC,NVIC(Nested Vectored Interrupt Controller)紧密的整合于核心旁,可支持高达496个中断、并提供256阶优先权。

  NVIC所提供的巢状中断服务,由硬件执行ISR的Preemption工作,还加码Late arrival及Tail chaining机制。

电源管理指令

  Cortex-M将电源管理直接指令化,WFI(Wait For Interrupt)及WFE(Wait For Event),可使CPU快速的进入睡眠、省电状态(Low Power State)。

  搭配SCR(System Control Register)的多个旗标:SEVONPEND,SLEEPONEXIT,SLEEPDEEP等,还可执行进阶的设定。

无锁的同步指令

  为了解决关键区段的保护问题,并避免关闭中断造成的损失,Armv7-M的LDREX/STREX,以指令的方式,达成non-blocking的内存同步请求。由硬件协助确保read-modify-write的正确性。

A fit real time kernel for Cortex-M

  谈了许多RTOS的缺点,又列出了Armv7-M的特色后,我们是否应跳出旧的思维,并以创意及创新的观点,提出新的RTOS软件作法呢?

作者:科技下午茶啃泥https://www.bilibili.com/read/cv15839248?spm_id_from=333.999.0.0

关键词: 嵌入式 RTOS 系统 Armv7-M

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版