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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-14 17:14
Cortex m3内核规定的存储器映射如下图所示。就好像ARM公司打造了一个柜子,从上到下有这几个抽屉,它规定了每个抽屉放的东西的种类,具体放什么放多少它不管(只要不超过抽屉的大小),由每个芯片厂商自己决定。
# J' [' q1 y. ?: V7 o! x  M; h. X7 m! l5 W' K
20170620105420510.png / G) L" X5 J' L/ K, I$ i( {6 b$ j. e

: N- M9 \0 D5 r6 A图1 cortex m3存储器映射8 j) b( }# I7 V6 d4 a

8 R& E5 M& P% V1 |8 j6 V我们来看看ST公司打造的STM32F1系列芯片是如何在这些抽屉放置东西的。6 p9 d: m3 @- ?7 r" H- v
; ~; G5 s" d- P4 D
代码抽屉
, ?9 h8 E+ a' |6 `在代码这个抽屉,STM32F1布置了Flash模块,用来存储代码,相当于电脑的硬盘,具体展开如下图所示。主存储器(图中Flash区)起始起止为0x0800 0000,终止地址依Flash大小而定,图中0x0807 FFFF为512k的终止地址。然后经过一段保留区,从0x1FFFF000 – 0x1FFF F7FF为系统存储器,是不可擦除的ROM区,存储ISP程序,最后option bytes这个区域是16个字节,是控制flash区域的寄存器。有同学说我漏了一块,对,从0x0000 0000的这块是我要着重讲解的一块。( A! y* I# m: S8 K
3 ]& C# x+ w' }6 f1 |: `/ R
20170620105707324.png
4 d" z. a+ V( [) X" K  x3 y. y% s3 k图2 STM32F1代码区抽屉
% c' u  j! G* [  a' }0 Y% N' F7 k( m1 a5 e* ~0 ~  L9 b
在讲这块之前,首先要讲一下STM32F1的三种启动模式,如下图所示。
" A% r$ W4 W# E: h4 u0 ]1 v1).主闪存存储器启动:从STM32内置的Flash启动(0x0800 0000-0x0807 FFFF),一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
( i- S  u) s# G; u0 A8 m
$ R: v9 Y0 P3 S
2).系统存储器启动:从系统存储器启动(0x1FFFF000 – 0x1FFF F7FF),这种模式启动的程序功能是由厂家设置的。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的ISP程序中,提供了串口下载程序的固件,可以通过这个ISP程序将用户程序下载到系统的Flash中。
0 J  T+ [: ~! ?3 `" G* H( J2 M
! y+ P# z3 m9 f( G9 k3 ?" C
3).片上SRAM启动:从内置SRAM启动(0x2000 0000-0x3FFFFFFF),既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
) j! W( d1 P0 g* K
7 r, [+ j! |, u1 S. ~
下面讲解Boot MemorySpace(Aliased to Flash or systen memory depending onBOOT pins)。其实这块空间是预留的,不存数据,或者它压根不存在。在不同的启动方式下,这块区域会被映射到其他区域:
2 ~# @+ O2 D3 n. m7 s: Z$ q+ O+ g9 d& \

# N& w3 P) @! q1).从Main Flash 启动:Boot Space 是Main Flash 的别名。以0x08000000 对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x08000000 操作,且都是操作的同一块内存, }* [6 S3 x2 s, @+ R+ b+ A
3 e* c0 D! p! s! L$ ^% e+ q
2).从System Memory启动:Boot Space 是System Memory的别名。以0x1FFFFFF0对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x1FFFFFF0操作,且都是操作的同一块内存
0 u- s/ e5 K, A% p' ~" E3 B
. A7 _- w; Q! F$ v$ F- g- `
3).从SRAM 启动:SRAM 只能通过0x20000000进行操作,与上述两者不同。从SRAM 启动时,需要在应用程序初始化代码中重新设置向量表的位置。
$ s$ b1 w$ b8 s: S. H; i
* X3 T! {2 G/ \2 I& }$ i7 r1 N6 ]
20170620105726550.png * ~1 U) h& m* ?+ S. ~

* G! u. T5 @- L+ i& ?9 k6 g. X: k9 U图3 STM32F1三种启动模式
$ c: p' W0 Z! G* W2 r
5 Z+ f( n6 i  t, N
片上SRAM抽屉
6 M7 J) Y$ I8 C在SRAM这个抽屉,STM32F1布置了SRAM,相当于电脑的内存,具体展开如下图所示。& r" |# Z8 M# c" L3 s0 P

3 M4 R$ k! z8 q3 K5 {7 m0 u7 g0 [
20170620105737262.png
/ G# |- c+ S8 ~9 ]$ ~  A
) l" M% n5 z7 q$ O, p& o图4 STM32F1片上SRAM抽屉
9 X) G1 c2 h) S  n& B& h# S, c
' ?" t7 C0 G' f) O  N; e
在这个抽屉中,STM32F1只放了64K的SRAM存储空间,其余的空间保留(空着)。这里需要说明一下,虽然其余那些空间被保留,没有存储器与之对应,但是位带别名区的地址仍然可以操作来改变64K地址中的对应位。; R: h& @% n4 s6 h

4 N1 z' O( |" g& ]. {- k2 p+ h片上外设抽屉" W4 k( x' V0 n1 h$ k; @  I
在这个抽屉中,放置了STM32F1的外设,包括GPIO、UART、ADC等所有外设的控制、状态、数据寄存器都在这个抽屉中。当然,抽屉很大肯定装不满,装不满的空间就预留着。
) F2 v! T* _- j+ z% `/ a' n; o4 @5 s
20170620105744253.png
' b5 w1 j% T( \5 v0 h
" U- ]% N% X8 i8 A6 t# C5 l  O- C图5 STM32F1片上外设抽屉: j3 d8 V, _$ T  l
# V& _- Z9 z- S- e" [6 u  O+ h1 u
0 f: |& b" l* F* C! F, [6 J
片外RAM抽屉
7 n& \) ~% ~. A% o在这个抽屉中,我们可以自己扩展内存,但必须在STM32的FSMC控制器下进行,这个控制器的作用就是将内部AHB总线和外部扩展内存的总线进行转化,利用这个控制器,我们可以很方便的控制LCD,这里就不展开了。这1G的抽屉可以放下图的东西。这片空间STM32并没有放东西,STM2指定我们可以在其中扩展内存NOR/PSRAM1、NOR/PSRAM2……并接受FSMC控制器的控制。7 h* I& ~6 F! s0 b* @: B5 [

0 s7 v) }. B, b" A
20170620105749754.png # y% Y) ^0 `5 S& n* K( o! O+ V
, F, N* A" q( L, \7 q( p
图6 STM32F1片外RAM抽屉& r9 q  g8 ~2 R& u3 H

; ]* o1 E, n; s- S( m3 O片外外设抽屉) s% }' Y. S! i& K$ m- J: [! q
在这个抽屉中,STM32F1放置了FSMC控制器的一些寄存器,就是在这些寄存器的配合下,FSMC控制器得以有效控制片外RAM进行读写操作。* F. J0 J+ K7 U" v0 [
' o) E) B3 b. R+ i$ M
20170620105756238.png 1 ~3 `( P3 Q( F
图7 STM32F1片外外设抽屉$ h1 o: J, ~3 X: O9 y. C$ @% z3 `& T' X4 x
5 i) \0 Z- }- F/ V9 v
其余的抽屉,STM32F1就没动过了。最后,stm32f1的存储器完整映射如下图所示,大家可以和图1对比了解这个过程。0 S: K9 }$ ^" T" n
5 x$ C. H4 F; d6 k3 ~4 R9 U
20170620105927240.png + R- I" T& l% d: o! ]0 D# s  f
图8 STM32F1存储器映射
+ r( E) ~) I7 I: x0 ]' ~————————————————' K7 S* w* _+ q  n; H
版权声明:fantastikman
2 C- j% L, ^1 H' o& v7 w( a如有侵权请联系删除0 O! K' c: l7 ~

5 s1 g( g. k+ @. p  Y
& P6 S% v, z4 j# [% W  R( K0 s- {" y' N, A
收藏 评论0 发布时间:2023-5-14 17:14

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版