I am鼎!
DMA框架解析1
DMA框架解析2
DMA框架解析3
储存空间映射
上一篇讲了关于储存空间映射的问题,下面讲一讲储存器重映射的问题。
程序是怎么运行的
简单说一下,复位之后,总是从地址0x04拿到复位代码的起始地址,以及从地址0x0取堆栈指针,开始执行复位程序。
这个0x04地址里面存的东西就是很关键的东西,大白话讲,它就是程序的开头索引。
目前STM32有四块可用于启动储存器的物理地址,0x04里面存放的地址就是它们之一:
- 片上SRAM起始地址:0x2000_0000
- 片上用户Flash起始地址:0x0800_0000
- 片上系统闪存(BootLoader)起始地址:0x1FFF_0000
- 外部RAM
分析一下这四种:
首先说结论:片上Flash最常用,严格来说这种方式只要不是太奇葩的项目都可以。
如果在调试阶段,需要反复的擦写程序,理论上调试用SRAM,调试结束用Flash最好,实际上却一般不用SRAM,因为Flash擦写虽然有寿命,但是寿命最少达到1W次(实际可能10W都可能),做个计算,每天擦写20次,也需要坚持一年半不停才能用坏,即使是实验板,也足够了。
片上系统闪存:也就是系统储存器, 里面的程序由ST在生产线上写入, ISP下载方式用的就是它,目前STM4