stm32 启动流程分析,以startup_stm32f10x_hd.s为例

stm32初学会遇到boot选择问题,如下图:

stm32 启动流程分析,以startup_stm32f10x_hd.s为例_第1张图片其中需要注明的两点是:

1. stm32的存储架构

讲到这里,不得不提及stm32的存储架构。这里参考中文参考手册中的资料,如下:stm32 启动流程分析,以startup_stm32f10x_hd.s为例_第2张图片

PS:

大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。

小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。

ps:

而CPU不仅能访问内存,还能访问各种外设(IO),对外设的访问,通常有两种方式。

一种是类似于访问内存,把外设的寄存器,当做一个内存地址来访问,从而可以像访问内存一样去访问外设,这种方式即是内存与外设统一的编址方式,称作统一编址。

另一种是使用专用的CPU指令来进行访问特定的外设,称作独立编址。

外设与内存统一的编址方式,优点是编程简单,因为可以像访问内存一样去访问外设。缺点是IO也占用CPU的寻址空间。

而独立编址的方式,优点是不占用CPU的寻址空间,但是CPU的构造比较复杂。(因为额外的CPU指令需要对CPU进行额外的设计处理)。

Inter的处理器采用的就是独立编址,ARM一般是统一编址。
 

stm32 启动流程分析,以startup_stm32f10x_hd.s为例_第3张图片

stm32 启动流程分析,以startup_stm32f10x_hd.s为例_第4张图片

2.stm32 flash 和 sram 的区别

FLASH是用来存储程序的,SRAM是用来存储程序运行中的中间变量 nor字节读取,程序存储    nand页读取,数据存储

FLASH存储容量普遍大于EEPROM,FLASH芯片只能一大片一大片地擦除,而EEPROM可以单个字节擦除。

SRAM是静态随机存取存储器,STM32F1系列可以通过FSMC外设来拓展SRAM。 
注意:SRAM和SDRAM是不相同的,SDRAM是同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。STM32的F1系列是不支持SDRAM的。

 

你可能感兴趣的:(stm32)