你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F1(Cortex M3内核)存储器映射经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-14 17:14
Cortex m3内核规定的存储器映射如下图所示。就好像ARM公司打造了一个柜子,从上到下有这几个抽屉,它规定了每个抽屉放的东西的种类,具体放什么放多少它不管(只要不超过抽屉的大小),由每个芯片厂商自己决定。
# A+ G% `" h" g( l8 `8 e- g
1 }1 n/ t) G0 }8 z$ c' |
20170620105420510.png 9 z; A; [2 i* J( m5 W

( E4 o% A9 p; J+ Q5 _+ ~图1 cortex m3存储器映射
4 S! |; m3 |6 z: Y/ Y$ y% C- [8 X$ Q; P3 }: k6 J2 I
我们来看看ST公司打造的STM32F1系列芯片是如何在这些抽屉放置东西的。9 Z8 w( [9 |4 V) b3 l4 n

& J. X) U. K5 ]; ~: R" T: y( l5 p0 k代码抽屉$ v; M! T* r8 v
在代码这个抽屉,STM32F1布置了Flash模块,用来存储代码,相当于电脑的硬盘,具体展开如下图所示。主存储器(图中Flash区)起始起止为0x0800 0000,终止地址依Flash大小而定,图中0x0807 FFFF为512k的终止地址。然后经过一段保留区,从0x1FFFF000 – 0x1FFF F7FF为系统存储器,是不可擦除的ROM区,存储ISP程序,最后option bytes这个区域是16个字节,是控制flash区域的寄存器。有同学说我漏了一块,对,从0x0000 0000的这块是我要着重讲解的一块。8 q. X1 F9 K' C$ @9 G/ A8 A
" v; \8 i" K! w' u) h8 @
20170620105707324.png
% C' _! Z% Q7 M图2 STM32F1代码区抽屉
2 P1 N& F3 i1 P( @' o# m- g: b2 S3 w( U$ j  t
在讲这块之前,首先要讲一下STM32F1的三种启动模式,如下图所示。( u. r' N7 t, f, a/ t: |3 f
1).主闪存存储器启动:从STM32内置的Flash启动(0x0800 0000-0x0807 FFFF),一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。$ W5 d! }8 {/ p7 e: `& O: C$ i
! k4 {/ M7 ~- q5 ?& j. c- d
2).系统存储器启动:从系统存储器启动(0x1FFFF000 – 0x1FFF F7FF),这种模式启动的程序功能是由厂家设置的。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的ISP程序中,提供了串口下载程序的固件,可以通过这个ISP程序将用户程序下载到系统的Flash中。
; H, A; I7 y! [1 x2 F+ Y7 e* T9 |7 H/ U
3).片上SRAM启动:从内置SRAM启动(0x2000 0000-0x3FFFFFFF),既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
7 f7 t/ r( g1 a* f: n7 S
0 h" P1 F7 Z. x+ L8 Y6 {
下面讲解Boot MemorySpace(Aliased to Flash or systen memory depending onBOOT pins)。其实这块空间是预留的,不存数据,或者它压根不存在。在不同的启动方式下,这块区域会被映射到其他区域:
3 U6 W. R9 H4 P# X& t. Y7 p  L
6 n8 S1 b5 Q- V8 S+ a

/ L# f! R4 K$ Y/ ~, u4 N2 H& x1).从Main Flash 启动:Boot Space 是Main Flash 的别名。以0x08000000 对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x08000000 操作,且都是操作的同一块内存
# d8 _) X1 m6 c) Q
9 x" h! i) w* m% P0 d$ l; U. u
2).从System Memory启动:Boot Space 是System Memory的别名。以0x1FFFFFF0对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x1FFFFFF0操作,且都是操作的同一块内存
5 _# o6 c/ k- |" F! M
: V  _/ P4 `) J1 o( d3 X! @
3).从SRAM 启动:SRAM 只能通过0x20000000进行操作,与上述两者不同。从SRAM 启动时,需要在应用程序初始化代码中重新设置向量表的位置。
4 l  j& W* x9 l+ Y4 s0 U( n% i, ^
8 k7 ^$ K2 k. b7 U
20170620105726550.png ' ^6 z& ^# O5 [4 F( Z9 h

0 n( D1 r8 ~" Q: m/ s0 A图3 STM32F1三种启动模式* W+ ~# e& ~4 b, W4 L4 ?# f- G) P
! b& {4 p" B4 m. B  g* c* Y- l
片上SRAM抽屉
! P4 U0 w* H. L/ [& b) N: b$ l在SRAM这个抽屉,STM32F1布置了SRAM,相当于电脑的内存,具体展开如下图所示。
/ d! W% u2 r+ X1 y( Z7 A8 h* b: x! `9 F
20170620105737262.png
5 Y' q) V( m7 q( ^& E* |, V
' n6 G4 B/ w$ s0 N图4 STM32F1片上SRAM抽屉
5 g0 K& m& H9 R3 D1 w
  |! I9 l6 q, b) I
在这个抽屉中,STM32F1只放了64K的SRAM存储空间,其余的空间保留(空着)。这里需要说明一下,虽然其余那些空间被保留,没有存储器与之对应,但是位带别名区的地址仍然可以操作来改变64K地址中的对应位。
! k# q% p; `' J$ q. D* t. t/ l7 u- L# u) M) E6 @0 L0 M0 I
片上外设抽屉) o  E# `% V3 ^/ x0 o. l
在这个抽屉中,放置了STM32F1的外设,包括GPIO、UART、ADC等所有外设的控制、状态、数据寄存器都在这个抽屉中。当然,抽屉很大肯定装不满,装不满的空间就预留着。5 f) f3 l0 O2 C6 U

9 n( J# C% g) C7 m- [
20170620105744253.png 8 Z5 W3 Z: U) v( K" `: {; `0 v7 x

( M2 M0 L5 P; X- M0 ?' G& k: o图5 STM32F1片上外设抽屉2 J: o7 u& C+ a' U7 O

. a" k, f& l1 e$ s

# B$ N4 L3 `' x. j9 E3 e' D片外RAM抽屉
( [/ A8 J' ?1 {1 b3 V2 x1 C在这个抽屉中,我们可以自己扩展内存,但必须在STM32的FSMC控制器下进行,这个控制器的作用就是将内部AHB总线和外部扩展内存的总线进行转化,利用这个控制器,我们可以很方便的控制LCD,这里就不展开了。这1G的抽屉可以放下图的东西。这片空间STM32并没有放东西,STM2指定我们可以在其中扩展内存NOR/PSRAM1、NOR/PSRAM2……并接受FSMC控制器的控制。% ~8 z& m: Q& E" C3 h' T2 P

4 P9 k! R& `7 G
20170620105749754.png
" }3 x  k2 f- L4 m! e0 t; m' ^1 z& Q" x$ X8 `, H2 Q0 T" W
图6 STM32F1片外RAM抽屉
; Z1 e# m( j+ b4 W* y; _  x; i2 l5 u
片外外设抽屉
' z4 l' x4 {0 X! w' N& \! V在这个抽屉中,STM32F1放置了FSMC控制器的一些寄存器,就是在这些寄存器的配合下,FSMC控制器得以有效控制片外RAM进行读写操作。
5 Z7 |; C# Q( e4 n/ M
  ?0 X* b& u+ C, o* ~! u7 T5 O* {! U
20170620105756238.png / B$ V8 U9 f9 h3 V- M; p+ v1 v% }
图7 STM32F1片外外设抽屉
. A$ ?" C8 X" s( o; q$ n  V+ {  O
- B* j3 ^# I" U7 m其余的抽屉,STM32F1就没动过了。最后,stm32f1的存储器完整映射如下图所示,大家可以和图1对比了解这个过程。2 j/ k, ~$ R/ H1 T! r8 [. `
. p; |0 M* [1 Z. X+ `: ?$ H  s
20170620105927240.png
. P; D! w4 j! H图8 STM32F1存储器映射6 n1 l$ ?+ f  ^, |( r+ _
————————————————) z% W7 K+ C' L' O
版权声明:fantastikman2 @5 c- L/ h! z; d
如有侵权请联系删除, q2 R" {% \% b, C  X

" z3 D  {: i6 l! j9 o$ v+ w. Z( l3 |7 M1 v& Y

; g' i# M, d$ j) T
赞 收藏 评论0 发布时间:2023-5-14 17:14

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版