单片机Flash大小和RAM大小空间理解与分析
我们以上图中的 STM32为例来进行分析和理解
1,空间大小问题
Flash大小 32kBytes 意思是 321024 = 32768 字节(Bytes)
RAM大小 8kBytes 意思是 81024 = 8192字节(Bytes)
2,代码及变量存储问题
我们以KEIL编译器 给我们提供的信息为例来进行分析和理解 如下图 整个程序被分为了 4部分
1,代码: 编译后的代码 会存储在 Flash 中. (这样掉电不会丢失)
2,只读数据: 只读数据(大多为常量) 存储在 Flash 中. (这样掉电不会丢失)
3, 已经赋值的变量: 已经赋初值的变量 用户定义的初值也会存储在 Flash 中. (这样掉电不会丢失). 同时上电程序初始化运行的时候会把 此数据拿出来 放到RAM中
4, 没有赋值的变量: 没有赋值的变量 会在上电程序运行的过程中 存在RAM中 (掉电丢失)
所以我们得到结论 Falsh 应该满足1+2+3
RAM 应该满足 2+3
另外我们还需要注意 单片机本身底层的一些 处理逻辑也会占用一部分
我们来看一下代码超过编译内存后的提示:
英文提示
中文提示:
提示中 我们可以得知 该芯片链接器生成的内容也会占用 Flash大小39字节
同时 这39字节大小 已经在1 代码 这部分中被包含在里面了,所以我们计算的时候 就不需要在加上这39字节的数据了