stm32f407
+ -

STM32F407ZG 内存总线分布

2022-01-01 18 0

Cortex-M3 and Cortex-M4 处理器内存布局大概如下:
Cortex-M3 and Cortex-M4 处理器内存布局

处理器的内存总线分布为两大部分,一部分为外设的地址空间,另一部分为内存,在嵌入式一般为SDRAM,在X86下又是DDR。
外设的地址空间,就是通过系统的物理总线外扩的物理设备,将其外设备的内存空间映映射到处理器的内存空间,这个映射是有一个相对基地址的即起始地址的。
另一部分为真的的物理内存地址,用于代码运行或者数据存储的空间,这个空间一般为掉电易失。
在STM32F407是32位的地址总线,其内存布局如下:
STM32F4内存总线

我们可以看到,低地址用于SDRAM的内存映射。不过可以看到,不同的硬件的启动方式或者硬件结构,其低端的内存空间是映射不同的,特别表现在0x0000 0000 地址空间上。这是因为STM32上电后的运行的起始地址是0x0000 0000,所以每一行代码可以来自SDRAM,也可以是NAND FLASH,也可以NOR FALSH,根据不同的配置方式不同其引导区的代码来源不同,这是由硬件配置决定的。

另一部分是外设。我们可以看到,其外设的地址映射到高端地址(0x40000 0000 ~0xA000 0FFF),这个和x86处理器类似。这部分外设挂载在不同的外设总线上,可以看到的APB1,APB2,AHB1,AHB2,AHB3等。这有点类似我们以前X86处理器的北桥,南桥,PCIE,PCI,ISA等,低速设备挂载的低速总线上,高速设备挂载在高速总线上。

另一个需要说明的是,这个内存是真实的物理内存,并非线性地址或者是虚拟地址。这和我们在x86保护模式下没有开MMU一样,一个更加好理解的环境就是DOS的实模式。所以访问这个物理内存,就是相当于访问外设或者我们真实的SDRAM的内存地址。不过由于意法ST提供的Keil编译环境,我们编译好的代码已经由其自动分配好了运行时的内存空间,这里我们可以不用关注。

0 篇笔记 写笔记

STM32F407ZG 内存总线分布
Cortex-M3 and Cortex-M4 处理器内存布局大概如下:处理器的内存总线分布为两大部分,一部分为外设的地址空间,另一部分为内存,在嵌入式一般为SDRAM,在X86下又是DDR。外设的地址空间,就是通过系统的物理总线外扩的物理设备,将其外设备的内存空间映映射到处理器的内存空间,这个映......
作者信息
我爱开发
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!