打印
[经验分享]

RAM是如何划分的?

[复制链接]
楼主: febgxu
手机看帖
扫描二维码
随时随地手机跟帖
21
mnynt121| | 2025-4-20 18:38 | 只看该作者 回帖奖励 |倒序浏览
某些单片机将特殊功能寄存器(SFRs)存储在RAM中,尽管它们实际上是硬件的一部分。这些寄存器用于控制单片机的各种外围设备。

使用特权

评论回复
22
loutin| | 2025-4-20 18:54 | 只看该作者
单片机的RAM划分体现了对不同类型数据和功能的细致管理,从高速的通用寄存器到大容量的用户RAM,再到专用的特殊功能寄存器和可扩展的外部RAM,各部分协同工作

使用特权

评论回复
23
albertaabbot| | 2025-4-20 19:06 | 只看该作者
当单片机内部的RAM容量不足以满足程序的需求时,可以通过外部扩展的方式来增加RAM的容量。扩展RAM区通常位于单片机外部,通过总线与其他外部芯片相连,用于存储大量的数据或程序。

使用特权

评论回复
24
chenci2013| | 2025-4-20 19:17 | 只看该作者
如果全局变量或静态变量有初始值,那么这些初始值通常会存储在Flash中,并在系统启动时复制到RAM中的静态区。

使用特权

评论回复
25
mickit| | 2025-4-20 19:34 | 只看该作者
用static关键字限制变量作用域。

使用特权

评论回复
26
sdlls| | 2025-4-20 19:46 | 只看该作者
未初始化的全局变量直接存储在RAM,初始化为0。

使用特权

评论回复
27
belindagraham| | 2025-4-20 20:02 | 只看该作者
某些单片机可能没有明确划分的区域,而是提供了一个连续的RAM空间供程序员自由使用。

使用特权

评论回复
28
earlmax| | 2025-4-20 20:16 | 只看该作者
通用工作寄存器区:这部分RAM用于存储通用变量和临时数据。它是程序员最常用的存储区域,用于存放程序运行时的各种数据。

使用特权

评论回复
29
kmzuaz| | 2025-4-20 20:28 | 只看该作者
当一个函数被调用时,系统会为该函数在栈中分配一块内存空间,用于存储相关信息。

使用特权

评论回复
30
eefas| | 2025-4-20 20:40 | 只看该作者
在C语言中声明为static或在任何函数外部声明的变量会被分配到这一区域。这些变量在整个程序执行期间都存在,并且它们的生命周期从程序开始直到结束。

使用特权

评论回复
31
dspmana| | 2025-4-20 20:55 | 只看该作者
查看链接脚本中的_sstack和_estack地址,计算剩余空间。

使用特权

评论回复
32
usysm| | 2025-4-20 21:34 | 只看该作者
数据存储区域              

使用特权

评论回复
33
macpherson| | 2025-4-20 21:53 | 只看该作者
链接脚本定义了RAM的起始地址、各区域的分布规则

使用特权

评论回复
34
belindagraham| | 2025-4-20 22:09 | 只看该作者
部分单片机的RAM地址被映射到外设寄存器

使用特权

评论回复
35
yeates333| | 2025-4-20 22:43 | 只看该作者
单片机RAM的划分本质是​​在有限资源下平衡功能需求与稳定性​​。

使用特权

评论回复
36
sdlls| | 2025-4-21 13:49 | 只看该作者
数据存储区              

使用特权

评论回复
37
kkzz| | 2025-4-21 14:02 | 只看该作者
堆用于动态分配内存,允许程序在运行时根据需要请求和释放内存块。这通常是通过标准库函数如malloc()、calloc()、realloc()和free()来管理的。

使用特权

评论回复
38
pmp| | 2025-4-21 14:23 | 只看该作者
静态存储区              

使用特权

评论回复
39
nomomy| | 2025-4-21 14:35 | 只看该作者
过多的全局变量不仅占用大量静态存储空间,还可能导致命名冲突和难以维护的问题。尽可能使用局部变量或封装成结构体。

使用特权

评论回复
40
tabmone| | 2025-4-21 15:05 | 只看该作者
用于存放全局变量、静态变量以及程序运行时的动态数据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则