基于Cortex-M3位带地址映射技术的位带操作研究与实现
2020-11-13李国强
李国强
(安徽华东中投科技有限公司,安徽 合肥 230000)
在当今的计算机控制领域中,许多智能控制产品都使用了基于Cortex-M3内核的Arm处理器。在这里,主要针对Arm处理器内核Cortex-M3存储器支持的“bit-band”位带,对位带地址映射技术进行研究以及如何实现位带操作。
一、 Cortex-m3的位带区与位带别名区
Cortex-M3是Arm处理器内核,可支持4GB存储空间,Cortex-M3内核是通过ICode、DCode、System总线与STM32内部的Flash、SROM相连接的,Cortex-M3存储器支持“bit-band”位带。在Cortex-M3存储器中有二个 1MB的位带区,以及对应的32MB的“位带别名(alias)区” 。位带别名区可以把每个位(bit)扩展成一个32位的字。当通过位带别名区访问这些字时,就可以达到访问原来位的目的,如图1所示。
在SRAM区的底部,有一个 1MB的位带区,这个位带区还有一个对应的32MB的“位带别名(alias)区”,容纳了8M个“位变量”,每个位变量是32位(既1个字4个字节)。位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个bit位。位带操作只适用于数据访问,不适用于取指。

图1 位带区与位带别名区示意图
在片上外设区的底部,也有一个1MB的位带区,并有一个与其对应的32MB的位带别名区,用于快捷访问外设寄存器。这样,就使得我们访问各种控制位和状态位,就像访问普通内存一样方便。
二、Cortex-m3的位带地址映射
存储器映射是指把芯片中或芯片外的FLASH、RAM以及外设等进行了统一编址,即用地址来表示对象。Cortex-M3存储器的4G地址空间被划分为大小相等的8块区域,每块区域大小为512M。
这里划分的8块区域是粗线条的,主要包括代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。……
