ROM\RAM\flash 傻傻分不清

注意:该文章大部分是通过 文心一言 的回答编写。有啥不对的,还请评论区指正,感谢!!!

这篇文章也很好:

单片机中那些数据位于flash中,哪些数据位于ram中??_什么样的信息是放在flash里面的额-CSDN博客

1、RAM:

断电数据丢失,可以理解为手机的运行内存。用于程序运行起来后,数据与数据结果的临时存储。线程任务的栈空间就分配在RAM里。(操作系统会被引导程序从flash中加载到RAM中运行。)

2、ROM:

断电数据不丢失,是固化在硬件中的程序,一般里面是boot、BIOS、一些引导程序。一般是芯片厂商出厂时就固化在里面的了,用户无法改变。

3、flash:

断电数据不丢失,可以理解为硬盘,u盘。在嵌入式中,一般编译好的单片机程序会烧录到flash里面。

4、程序是怎么运行起来的?

4.1 系统启动:

上电后,CPU会从预设的启动地址(芯片内部的ROM或者外部flash的特定区域)读取指令。

指令初始化硬件资源。

4.2 加载固件:

ROM中的启动代码会查找存储在flash中的开发者烧录好的固件程序,若固件需要与运行,会将其复制到RAM中的特定区域。

4.3 程序运行:

固件程序被加载到RAM中(或者还在flash里),CPU就会执行RAM中的固件程序,需要什么数据就聪flash里面读取到RAM中,或者数据写入到flash中。(类似计算机的3级缓存)。

注意:CPU的寻址空间就是地址总线相连接RAM,所以读些RAM比flash快很多。


5、cpu的寻址空间与ram\rom\flash之间的关系

cpu的寻址空间:取决于 cpu的地址总线宽度和系统设计、硬件架构。

CPU的寻址空间是指CPU能够直接访问的内存(包括RAM和其他类型的存储器,如ROM、Flash等)以及I/O设备的地址范围的总和。

所以它包括了CPU能够直接访问的所有内存和I/O设备的地址范围,而不仅仅是与CPU通过地址总线相连的RAM。RAM的大小只是这个寻址空间中的一个部分。

理论上,8位的cpu的地址总线是8根,可以寻址的空间大小是2^7=256个单位,即256字节。

cpu寻址空间的大小可能比ram小:cpu寻址空间还包括rom等。

cpu寻址空间的大小可能比ram大:通过某种方式,如分页或分段,来映射到CPU的寻址空间内。

还需要注意的是,即使CPU的地址总线宽度足够大,以支持更大的寻址空间,系统也可能由于物理内存限制、成本考虑或其他因素而使用较小的RAM。同时,系统还可能使用虚拟内存技术来扩展可用的内存空间,但这已经超出了CPU直接寻址的范围。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值