STM32F103处理器内部存储器结构及映射
STM32F103存储器映像为预定义形式,严格规定了哪个位置使用哪条总线。
STM32F103的程序存储器、数据存储器、寄存器和IO端口被组织到一个4GB的线性地址空间。数据字节以小端模式存放在存储器中。地址空间分8块,每块512MB。
注: 小端模式:与大端模式相对应,将数据的低字节保存在内存的低地址中,高字节保存在高地址中。
其中:
代码区:(0x00000000 ~ 0x1FFFFFFF,512MB)
主要包括:启动空间(0x00000000 ~ 0x07FFFFFF,128MB)
Flash(0x08000000 ~ 0x08xxxxxx,16KB~1MB)
系统存储区(0x1FFFF000 ~ 0x1FFFF800,2KB)
Flash:用于存放用户编写的程序
系统存储区:存放串口下载程序,当系统上电后,根据用户设定的启动配置,将Flash或系统存储区映射到启动空间,执行用户程序或串口下载程序。
内部SRAM(0x20000000 ~ 0x200xxxxx,6~96KB):保护程序运行时产生的临时数据的随机存储器。
外设区:外设寄存器地址空间,用于调试组件等私有外设。例如:FPB,DWT,ITM,ETM,TPIU,ROM表等。
启动配置
STM32F103系列单片机因为固定的存储器映像,代码区时钟从地址最初开始(0x0000000),通过ICode和DCode总线访问。启动之后,CPU从最初地址开始获取堆栈顶的地址,并从启动存储器0x00000004指示的地址开始执行。而SARM始终从0x20000000开始,直接通过系统总线访问。
由于单片机CPU始终从ICode总线获取复位向量,因此启动只能从代码区开始,常用的启动方法是使用Flash启动(程序代码常存放于Flash上面)。
但是STM32F103实现了特殊的机制,系统可以从三个地方进行启动:Flash、系统存储区、内置SRAM
当系统复位后,SYSCLK发出的第四个上升沿,BOOT0、BOOT1的状态进行锁存。
启动模式 | 选择引脚 | 启动模式 | 说明 |
---|---|---|---|
BOOT1 | BOOT0 | × | × |
X | 0 | 主闪存存储器 | Flash被选为启动区域 |
0 | 1 | 系统存储器 | 系统存储区被选为启动区域 |
1 | 1 | 内置SRAM | 内置SRAM被选为启动区域 |
启动方式
Flash启动:Flash中存放着用户代码,将Flash映射到启动空间(0x00000000),启动后单片机将执行用户程序,但仍然能在用户程序原有的地址(0x08000000)进行访问。
系统存储器启动:系统存储器在芯片出厂的时候存放着串口下载程序,这种启动方式可以将系统存储器映射到启动空间(0x00000000),启动后单片机将会执行串口下载程序即通过串口将程序下载到Flash中。程序下载完成后在配置为从Flash启动。
内置SRAM启动内置SRAM一般存放程序运行时产生的临时数据,没有程序,只能在0x20000000开始的地址区访问SRAM。
来源:CSDN
作者:不见流年
链接:https://blog.csdn.net/qq_42634010/article/details/104483516