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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-14 17:14
Cortex m3内核规定的存储器映射如下图所示。就好像ARM公司打造了一个柜子,从上到下有这几个抽屉,它规定了每个抽屉放的东西的种类,具体放什么放多少它不管(只要不超过抽屉的大小),由每个芯片厂商自己决定。& ^2 |, h# s! X. Z" B5 v
1 e3 {7 F2 ^% ^/ w" ?* P
20170620105420510.png + R% ]; S1 g3 O* H8 n7 k

: W, I* G' e9 }) g" M图1 cortex m3存储器映射# Z2 i, t( d& p0 P: u; z* `7 A
$ ?1 p' d& g0 ]0 Q
我们来看看ST公司打造的STM32F1系列芯片是如何在这些抽屉放置东西的。
4 D& H! y, J/ M0 z& o
) E' K9 N# z! [6 u# O4 I- Y
代码抽屉! r/ k5 s; Z" Z1 L5 _
在代码这个抽屉,STM32F1布置了Flash模块,用来存储代码,相当于电脑的硬盘,具体展开如下图所示。主存储器(图中Flash区)起始起止为0x0800 0000,终止地址依Flash大小而定,图中0x0807 FFFF为512k的终止地址。然后经过一段保留区,从0x1FFFF000 – 0x1FFF F7FF为系统存储器,是不可擦除的ROM区,存储ISP程序,最后option bytes这个区域是16个字节,是控制flash区域的寄存器。有同学说我漏了一块,对,从0x0000 0000的这块是我要着重讲解的一块。7 B3 C) n. D* _6 M$ R
# o  v2 i& }: V( ]- I
20170620105707324.png 3 C, ^; [3 r+ U( P
图2 STM32F1代码区抽屉
8 D3 H# W* |. e' [. t. e) C8 C" u) e% \5 N
在讲这块之前,首先要讲一下STM32F1的三种启动模式,如下图所示。4 V! G" x4 g" p' H: P5 O; g& \
1).主闪存存储器启动:从STM32内置的Flash启动(0x0800 0000-0x0807 FFFF),一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
! ^9 f# |) h- W; P" Q% z. \: ~, n% H7 v* a- H% K
2).系统存储器启动:从系统存储器启动(0x1FFFF000 – 0x1FFF F7FF),这种模式启动的程序功能是由厂家设置的。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的ISP程序中,提供了串口下载程序的固件,可以通过这个ISP程序将用户程序下载到系统的Flash中。7 {; q0 H, ~2 c

/ i# J) l+ y. {* N( ^9 W
3).片上SRAM启动:从内置SRAM启动(0x2000 0000-0x3FFFFFFF),既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
/ R/ s# c. H; e
+ o$ Q; s% S1 D" H
下面讲解Boot MemorySpace(Aliased to Flash or systen memory depending onBOOT pins)。其实这块空间是预留的,不存数据,或者它压根不存在。在不同的启动方式下,这块区域会被映射到其他区域:2 @, |6 w$ |! a& D4 h

$ {% N" i3 B: W2 ?2 G; [7 \

0 Z) A3 }$ M2 ^! L+ }1).从Main Flash 启动:Boot Space 是Main Flash 的别名。以0x08000000 对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x08000000 操作,且都是操作的同一块内存" \! B  j! n0 \

1 T/ a$ w# e+ P5 I' g  ^
2).从System Memory启动:Boot Space 是System Memory的别名。以0x1FFFFFF0对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x1FFFFFF0操作,且都是操作的同一块内存& e; ?8 q; B% Y. S) s! K8 }4 t

. K, J; S) u( x2 F1 i1 s% \$ F
3).从SRAM 启动:SRAM 只能通过0x20000000进行操作,与上述两者不同。从SRAM 启动时,需要在应用程序初始化代码中重新设置向量表的位置。# Z- p2 r% f, ?- X: O5 ?/ M

; i' P: N$ P6 h5 A
20170620105726550.png ! J& g' Y; _% H' ~9 C9 v) M8 X) b. R
2 O) k; x  R' p, p
图3 STM32F1三种启动模式
/ {2 U2 h$ a, Y9 `0 i

8 i8 y2 h; ?3 H9 }片上SRAM抽屉
  V' g  S9 l2 N) r6 z* b9 v在SRAM这个抽屉,STM32F1布置了SRAM,相当于电脑的内存,具体展开如下图所示。% {0 |6 t' }1 f. x

# n) q# k; V: p3 i
20170620105737262.png
$ }* U4 D8 B: _+ H# W0 k
; n" Q7 N: g& V; H0 @5 b图4 STM32F1片上SRAM抽屉
' _% c# j! u, i  o, Z
4 y7 S0 r- {( c4 p3 z1 y+ X8 l
在这个抽屉中,STM32F1只放了64K的SRAM存储空间,其余的空间保留(空着)。这里需要说明一下,虽然其余那些空间被保留,没有存储器与之对应,但是位带别名区的地址仍然可以操作来改变64K地址中的对应位。
3 Z. _3 L) ]& c# A6 q
3 P" j+ n7 M! X# A片上外设抽屉* p7 r- \+ `6 T/ r+ X6 ~
在这个抽屉中,放置了STM32F1的外设,包括GPIO、UART、ADC等所有外设的控制、状态、数据寄存器都在这个抽屉中。当然,抽屉很大肯定装不满,装不满的空间就预留着。
) h  @0 D& C8 w7 f* b* ?5 Y5 D$ C. P) E4 h
20170620105744253.png
5 H' \4 m. d. U: _, h& Y' y6 S3 X( r) Y" J  A3 y
图5 STM32F1片上外设抽屉1 q: n; \  B, g/ X- I

; S* h3 M5 x% L. A. }
- [2 W* I# w3 D+ B% q
片外RAM抽屉8 J, n; ~, h. N  y7 C  g0 }) _
在这个抽屉中,我们可以自己扩展内存,但必须在STM32的FSMC控制器下进行,这个控制器的作用就是将内部AHB总线和外部扩展内存的总线进行转化,利用这个控制器,我们可以很方便的控制LCD,这里就不展开了。这1G的抽屉可以放下图的东西。这片空间STM32并没有放东西,STM2指定我们可以在其中扩展内存NOR/PSRAM1、NOR/PSRAM2……并接受FSMC控制器的控制。
" u. J0 a8 \" d( D9 M8 w% `  B( P9 T/ I7 C$ x
20170620105749754.png % C, i8 m9 X1 o6 v% r

0 T6 y2 I2 W$ v  m0 k图6 STM32F1片外RAM抽屉; Z( {7 L2 X( A" A
2 e. l* D; a# O+ j# V+ \
片外外设抽屉2 ~4 x) Y; c! O6 T8 m, X2 I3 S7 C8 i2 L
在这个抽屉中,STM32F1放置了FSMC控制器的一些寄存器,就是在这些寄存器的配合下,FSMC控制器得以有效控制片外RAM进行读写操作。% O+ n# J& ~$ S! M/ s* S
8 D6 l# F2 _4 X; p" L
20170620105756238.png & ]8 L" p+ R0 ^1 s  a+ g
图7 STM32F1片外外设抽屉
9 R% t$ w0 }# M! b- Y4 ~
) ?  M9 Y! m) w2 x# O# t* g其余的抽屉,STM32F1就没动过了。最后,stm32f1的存储器完整映射如下图所示,大家可以和图1对比了解这个过程。/ A. O$ |: y7 E

7 i7 n: N6 Q; [0 F1 v6 I9 _
20170620105927240.png
5 [7 u1 B- {) b4 s1 R8 ]5 C图8 STM32F1存储器映射4 R& q# T% ?, H) M" b
————————————————
3 J3 c: T; ?" Z+ T版权声明:fantastikman! l( U) v/ a5 p
如有侵权请联系删除% @/ c- X% W% R' O4 b
& n7 Y2 |% ]( {4 N: Q8 ^& i
; I/ M! q: U) D0 g
" |, b9 Z; M% Y
赞 收藏 评论0 发布时间:2023-5-14 17:14

举报

0个回答

所属标签

相似技术帖

官网相关资源

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