amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 8

存储器大小的疑问

[复制链接]
(2639820)
发表于 2020-6-3 14:12:43 来自手机 | 显示全部楼层 |阅读模式
STM32F105的数据手册第一页就提到片内flash 64K,SRAM 64K,可是为什么存储器的地址空间可以到4G呢?没明白他们之间有什么关联。我理解的是FLASH是用来存储编译文件,SRAM是用来存储程序运行中的一些变量,但是假如有一个程序,它用到了AHB/APB12总线上的所有寄存器,那是不是SRAM的存储空间就不够了呢
(2637775)
发表于 2020-6-3 14:46:48 | 显示全部楼层
好像捉到一个妹子

我感觉你理解的是对的
(2637615)
发表于 2020-6-3 14:49:28 | 显示全部楼层
二楼第一句没问题。
第二句,我不懂,听二楼的。
(2637216)
发表于 2020-6-3 14:56:07 来自手机 | 显示全部楼层
32位cpu地址空间都是4g,编码的地址空间不到4g(线性编址)。
(2637188)
发表于 2020-6-3 14:56:35 | 显示全部楼层
2^32次方可不是有4G的寻址,门牌号有这么多,不一定要用足啊,就用了flash 64K,SRAM 64K
(2625667)
发表于 2020-6-3 18:08:36 | 显示全部楼层
4G 是32位的最寻址范围,32位的操作系统也最大只支持4G内存一样
看芯片手册和arm的规格书,对RAM FLASH 外设都会有相应的地址段

FLASH是存执行代码,执行代码也可以在RAM中允许,但也需要从FLASH拷贝到RAM
使用外设寄存器多不一定占很多RAM空间,看应用,但会占用FLASH空间存储外设地址

而且RAM和FLASH空间有很多MCU上还可以外部扩展的

(2624312)
发表于 2020-6-3 18:31:11 | 显示全部楼层
最简单的比喻就是马路上的门牌号:比如说某条马路上门牌号可以从0到99999999,可实际上没那么多楼让你编码;而且门牌号码也不一定非得是连续的,比如350号后面就跳到400号,中间这段啥都没有。
地址空间也一样,比如SRAM占了0x20000000开始的64K地址,FLASH占了0x80000000开始的64K,当中隔着的区域啥都没有;你非要访问个没东西的地址(比如0x20010004),那就直接触发异常。
(2621120)
发表于 2020-6-3 19:24:23 | 显示全部楼层
就算用上片上所有寄存器,但,片上寄存器能有多少呢?根本占用不了多少内存,好吧
并且,外部存储器是不在一起编址的,所以32位单片机基本上是不用操心地址不够用的问题。
(2614867)
发表于 2020-6-3 21:08:36 | 显示全部楼层
4G空间是说的CPU的寻址能力,最大支持到4G,但实际上只用了64K + 64K,其余地址留空,
AHB/APB12总线上的所有寄存器 不占用 这64K + 64K空间,但是仍在4G寻址范围内。

看一下 Memory Mapping那章就懂了。
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-4 03:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表