打印
[应用方案]

单片机存储空间浅析

[复制链接]
2568|45
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ingramward|  楼主 | 2024-9-25 14:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、单片机的存储空间 = RAM + FLASH(ROM),那么什么是RAM?什么是FLASH?
RAM : 一种可读可写的存储单元,掉电后存储数据清除,读写速度快。RAM在单片机运行时,是内部各种寄存器、全局变量(先存放在FLASH中,上电初始化后会将其拷贝至RAM中)、堆栈(程序运行过程中申明的局部变量、产生中断或者函数调用时用来保存现场的数据)等的载体。

FLASH:一种只能读取的存储单元,掉电后存储数据保留,读取速度慢。FLASH在单片机运行时,是程序指令、常量、中断向量表、BOOT引导代码、EEPROM等的载体。
二、ROM和FLASH的区别
传统的ROM是在芯片出厂一次写入以后就不能更改了,但随着应用环境的逐渐变化,以及技术的不断创新,ROM可以支持多次电擦除,擦除后可重复写入的功能,这样使得FLASH就成为了广泛意义上的EEPROM。方便了广大的程序员的操作,例如可以通过BOOT对单片机里的应用程序进行刷新,以及对内部存储数据的在线更改等功能。
三、冯诺依曼结构与哈弗结构区别
冯诺依曼结构常见用于PC机上,程序和数据在没有运行的时候,存放在硬盘中;当程序需要运行时,会将全部程序从硬盘复制到RAM中去,从RAM里去执行,由于RAM高速的读写,从而程序运行速度加快。哈弗结构常见用于嵌入式系统上,由于单片机其RAM大小有限,将全部程序复制到RAM中去运行难以实现,所以运行的时候程序放在FLASH中,变量数据存放在RAM中,所以CPU从Flash中取程序指令,RAM中获取数据。当然在嵌入式系统中,有些对代码执行速率有严格要求或者执行地址有严格要求的地方,也是可以将小规模的程序复制到RAM中去执行。这里推荐51单片机作为入门必学
四、单片机上电后对存储空间的操作
当你写好了你的单片机代码会经过如下步骤:
预处理:展开头文件/宏替换/去掉注释/条件编译编译: 检查语法,生成汇编
汇编: 汇编代码转换机器码
链接: 链接到一起生成可执行程序最后,就可以生成一个可以烧录的Hex文件啦,这个HEX文件里包含了你整个程序里的所有内容,你的程序逻辑、所申明的局部变量、全局变量、常量等等等等都会会变成一堆由01构成的二进制信息,这些信息使得单片机可以按照用户的定义去运行。
从单片机复位上电的那一刻开始,PC指针清零,指向0000H地址,此时单片机会产生一个复位中断,PC指针会跳转至中断向量表复位中断里存放的入口函数地址(常见的一般是工程的引导程序,执行MAIN函数之前执行的汇编代码),一般引导程序里主要是:1、对堆栈进行初始化,设置长度还有分配地址
2、对于没有赋值的全局变量,则在RAM中分配一个地址出来,对于已经分配初值的全局变量,在RAM中分配一个地址出来之后,将ROM中的初始值拷贝到对应的地址中去。
3、主函数的跳转
初始化前


初始化后


使用特权

评论回复
沙发
我想看大海| | 2024-9-28 15:07 | 只看该作者
说的挺全面的

使用特权

评论回复
板凳
pl202| | 2024-10-7 12:52 | 只看该作者
只读存储器(ROM):
用途:用于存储不可更改的程序或数据,如Bootloader程序。

使用特权

评论回复
地板
usysm| | 2024-10-7 15:17 | 只看该作者
程序存储器:使用16位地址进行寻址。
数据存储器:使用8位地址进行寻址,分为内部和外部数据存储器。

使用特权

评论回复
5
uytyu| | 2024-10-7 16:06 | 只看该作者
单片机的存储管理涉及到地址的分配和寻址方式,这对于高效利用存储空间至关重要。

使用特权

评论回复
6
beacherblack| | 2024-10-7 18:37 | 只看该作者
可以使用EEPROM、SD卡等存储设备来增加存储容量,满足更复杂的应用需求。

使用特权

评论回复
7
robincotton| | 2024-10-8 09:22 | 只看该作者
数据存储器用于临时存储数据和中间计算结果。在8051单片机中,内部RAM通常分为几个区域,包括通用工作寄存器区、位寻址区、用户RAM区和特殊功能寄存器映射区。RAM的大小影响了单片机处理数据的能力和速度。

使用特权

评论回复
8
pmp| | 2024-10-8 11:07 | 只看该作者
对于数据存储器,可以通过压缩算法来减少所需的存储空间。

使用特权

评论回复
9
claretttt| | 2024-10-8 16:36 | 只看该作者
数据存储器用于存储单片机在运行过程中的临时数据。这包括变量的值、运算的中间结果、堆栈数据等。例如,当单片机执行一个算术运算时,操作数和运算结果可能会暂时存储在数据存储器中;在函数调用过程中,函数的局部变量、返回地址等信息会存储在栈区(数据存储器的一部分)。

使用特权

评论回复
10
burgessmaggie| | 2024-10-8 18:56 | 只看该作者
ROM(只读存储器)
特点:数据只能读出,不能写入或修改。即使断电,存储的数据也不会丢失。
类型:包括PROM、EPROM、EEPROM和Flash等。其中,Flash存储器在单片机中非常常见,它结合了ROM的非易失性和RAM的可擦写性,使得程序和数据可以在需要时进行修改。
用途:用于存储单片机的程序代码、常量数据、配置信息等。
RAM(随机存储器)
特点:数据既可以读出,也可以写入或修改。但断电后,存储的数据会丢失。
类型:通常分为静态RAM(SRAM)和动态RAM(DRAM)。在单片机中,SRAM更为常见,因为它具有更高的速度和稳定性。
用途:用于存储单片机运行时的临时数据、局部变量、堆栈等。

使用特权

评论回复
11
nomomy| | 2024-10-8 21:56 | 只看该作者
Flash ROM:目前应用最为广泛的一种程序存储器类型。它具有成本低、可擦除和重写次数较多、读写速度较快等优点。许多现代单片机都采用 Flash ROM 作为程序存储器,方便用户进行程序的开发、调试和更新。

使用特权

评论回复
12
wengh2016| | 2024-10-9 11:53 | 只看该作者
程序存储器通常用于存放单片机执行的程序代码,这些代码在单片机运行过程中是不可更改的。

使用特权

评论回复
13
ccook11| | 2024-10-11 20:41 | 只看该作者
栈区:由编译器自动分配和释放,用于存储函数调用时的参数、局部变量和返回地址等。栈区的大小在编译时确定,通常根据函数的嵌套深度和局部变量的大小来决定。
堆区:由程序员手动分配和释放,用于存储程序运行期间动态分配的内存。堆区的大小取决于程序的需求,但总大小不能超过单片机硬件的实际RAM大小。
数据区:包括全局变量和静态变量的存储区域。已初始化的全局变量和静态变量存放在.data段,未初始化的全局变量和静态变量存放在.bss段。程序结束后,这些数据区由系统自动释放。
常量区:用于存储程序中的常量数据,如字符串常量、数字常量等。这些常量在编译时确定,并在程序运行期间保持不变。常量区的数据通常存放在ROM中。
代码区:用于存储单片机的程序代码,包括函数体的二进制代码等。代码区的数据在程序运行时被CPU读取和执行。

使用特权

评论回复
14
updownq| | 2024-10-14 09:33 | 只看该作者
数据存储器的访问速度通常比程序存储器快,因为它需要频繁地读写数据。

使用特权

评论回复
15
hudi008| | 2024-10-14 17:39 | 只看该作者
数据存储器的容量也因单片机类型而异。一般来说,8 位单片机的数据存储器容量相对较小,可能从几十字节到几 KB 不等,而 32 位单片机的数据存储器容量可能达到数百 KB 甚至更大。数据存储器同样有自己的地址空间,单片机通过数据指针(如 8051 单片机中的 DPTR)或其他寻址方式来访问其中的数据。

使用特权

评论回复
16
1988020566| | 2024-10-15 10:49 | 只看该作者
特殊功能寄存器在单片机的地址空间中有特定的地址分配。一般来说,它们的地址与普通的数据存储器地址是分开的,以方便区分和管理。单片机通过特定的指令(如直接寻址或位寻址指令,在 8051 单片机中)来访问这些特殊功能寄存器。例如,在 8051 单片机中,可以使用 “MOV” 指令直接对特殊功能寄存器进行数据的读写操作,或者使用位操作指令(如 “SETB”、“CLR” 等)来对特殊功能寄存器中的特定位进行操作。

使用特权

评论回复
17
Jacquetry| | 2024-10-15 19:12 | 只看该作者
flash跟内置eeprom啥区别啊

使用特权

评论回复
18
phoenixwhite| | 2024-10-16 19:01 | 只看该作者
程序存储器用于存放单片机的程序代码。在早期的8051单片机中,程序存储器通常是只读存储器(ROM),但现在许多现代单片机使用的是可擦写可编程只读存储器(EEPROM)或闪存(Flash)。程序存储器的大小决定了单片机可以存储多少程序代码。

使用特权

评论回复
19
FranklinUNK| | 2024-10-16 19:47 | 只看该作者
有些单片机说内部自带eeprom是什么啊

使用特权

评论回复
20
deliahouse887| | 2024-10-18 12:53 | 只看该作者
为了防止程序错误地修改数据存储器中的内容,一些单片机提供了内存保护机制。

使用特权

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

本版积分规则

15

主题

1271

帖子

0

粉丝