世界足球俱乐部杯

使用只读内存释放 RAM

出处:维库电子市场网 发布于:2023-12-19 16:55:27

  什么是只读?(又名代码存储器、又名程序存储器)
  存储器分为与电气特性(例如,易失性与非易失性)和架构因素相对应的类别,例如 8051 内部数据存储器和“外部”数据存储器之间的区别(外部 RAM 可以包含在-芯片)。例如:

  

  MSP430 存储器结构。图表由德州仪器 (TI)提供。  
  代码存储器,又称程序存储器或 (ROM),是存储程序指令的地方。我们也将其称为“闪存”,因为现在代码存储器是使用称为闪存的非易失性存储技术来实现的。
  了解微控制器只读存储器的重要一点是它不是只读存储器。首先,如果它真的是“只读”的,那么它就毫无价值,因为的硬件无法向其中写入程序指令。更重要的是,MCU 允许您从固件内写入该存储器。因此,它实际上是可读、可写、非易失性存储器,可用于一般数据存储。
  (注意:我相信从固件写入代码存储器的能力现在相当标准,但如果您遇到不支持此功能的现代微控制器,请在下面的评论部分告诉我们。)
  在进一步讨论之前,我想澄清这一点:当您处理在程序运行期间必须存储的数据时,代码存储器是 RAM 的替代品。
  访问 RAM 速度更快,根据我的经验,在固件执行期间写入代码存储器所需的过程很复杂,并且存在损坏闪存的风险。
  不要使用代码内存来存储需要频繁修改的变量和数组——这些应该位于数据内存中。
  如果您的 MCU 没有足够的 RAM 来容纳所有经常修改的变量,请使用不同的 MCU 或添加外部存储芯片。 
  运行前存储
  使用代码存储器补充 RAM 的更好方法是存储常量值。这些可能是许多不同的东西:您将发送到 LCD 模块的显示模式、将通过SPI或UART传输的固定字节或字符序列、将用于通过数字到音频生成不同音频的预先计算的正弦波值。 - 模拟转换等。
  将常量值存储在闪存而不是 RAM 中很容易,因为您只需将这些值包含在固件中(作为普通变量或数组)并告诉编译器您希望将它们存储在代码存储器中。对于我的编译器,我需要做的就是将关键字“code”放在变量名之前(请参阅下面的示例);您的编译器可能有所不同。
  无符号字符代码 UART_Message[4] = {0xAA, 0xAA, 0x1C, 0x2D};
  代码存储器有时非常丰富,以至于该技术可用于存储某种基本图像或简短的数字化音频剪辑。  
  运行时存储
  运行时存储是使用代码内存替代 RAM 的更复杂的方法。您必须查阅 MCU 的数据表,甚至可能是相关的应用说明,才能找到所需的过程并了解潜在的问题。例如,下图传达了有关 16 位 PIC 微控制器的闪存写入过程的信息:

  

  图表由Microchip提供。
  运行时代码内存存储对于保存设备操作期间生成的校准值非常有用。在这种情况下,主要优点是代码存储器是非易失性的,因为这些类型的数据通常不会消耗太多 RAM。运行时代码内存存储将帮助您应对 RAM 限制的一个例子是,如果您需要记录一长串测量值,这些测量值被收集,然后保留下来,直到操作员将测量值到 PC。 
  结论
  对于那些像我一样在用完闪存之前更有可能用完 RAM 的人来说,程序存储器是一种宝贵的资源,因为它可以让您在使用较小的微控制器并消除复杂性和成本的同时满足系统要求。包含一个外部存储芯片。

关键词:嵌入式内存

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//domainnameq.cn,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
 一键连接广大的电子世界。 

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!