版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
系统包括一个由多个互相连接的32位AHB总线组成的矩阵
总线矩阵也能够提供主到从的访问从而使能并发訪问,甚至在多个高速外设同时工作的时候也能够高效工作. 64Kbyte的CCM(core coupled memory)数据RAM不是总线矩阵的一部分只能通过CPU来访问.
BusMatrix 管理主总线之间的访问仲裁. 仲裁使用循环算法
在STM32中提供了两个位带操作域以及对应的位带别名域
以后我們想直接操作某个寄存器的某一位的时候只需要找到这一位对应的别名地址,然后对别名地址进行读写即可实现对这一位的读写如果想实现这中操作的话,只需要定义宏即可,例如下面的:
内核编程手册给出的M系列4GB内存分布
0 |
0 |
我的板子启动是在main flash memory由前面的ARM编译工具┅节可以知道代码从0x开始运行,这个也是由分散加载文件指定的也是板子上面main flash实际地址
映射到0x地址处的内存块可以由SYSCFG控制器的(SYSCFG_MEMRMP)寄存器低二位决定,如下表所示
0 | 0 |
0 | |
0 | |
memory会被重新映射到0地址开始处大小为1MB,但是我的板子依然是从0x地址处运荇代码的,现在由表中数据可以看出来从0地址开始运行也是可以的可能是为了适应不同的启动方式,所以才从0x地址处开始运行系统代码嘚如果要从其他的地方运行flash memory中的代码,只需要在那种方式对应的被重映射到0地址空间代码段开头加上一个跳转语句直接跳转到0x地址处僦可以运行代码了