在c中使用ARM MCU保留数据

时间:2013-10-22 09:46:00

标签: c arm microcontroller data-persistence

我对嵌入式编程相对较新,并且无法找到将数据保存到MCU的方法,因此在重新启动时它会持续存在。

我在某处读过,我需要使用PROGMEM来保存到MCU闪存。但还没有找到任何进一步的细节。

我需要能够执行以下操作: -

  • 将字符串(设备名称)保存到MCU。
  • 在需要时从MCU中检索字符串(设备名称)。

我正在开发ARM Cortex M4微控制器

编辑:我刚刚注意到我正在使用的ARM Cortex M4(TI TM4C123x系列)有2k的EEPROM,所以我认为这是保存数据的更好选择。但是如何?

2 个答案:

答案 0 :(得分:3)

如果数据只需要通过软复位来保持,那么您应该能够将数据存储在RAM中。您需要确保启动代码不会初始化持久数据所在的RAM部分。但如果您希望在断电时数据保持不变,则需要将数据存储在非易失性存储器中,如闪存或EEPROM。

为了将数据写入闪存或EEPROM,您将需要根据需要操作控制寄存器的驱动程序代码。为了编写驱动程序,您将不得不阅读并理解设备数据表的相关部分。

TI制造了一款名为Tiva C LaunchPad(EK-TM4C123GXL)的评估板,其中包含一个TM4C123G微控制器。为了支持电路板,他们还提供包括示例程序和驱动程序的软件。它们的驱动程序软件包括片上闪存和EEPROM的示例驱动程序。您应下载此软件并查看闪存和EEPROM驱动程序以及其他示例。您可以按原样使用其示例驱动程序。以下是Tiva C LaunchPad resource page的链接,您可以在此处下载该软件。

答案 1 :(得分:1)

您需要查看特定微控制器或片上系统的数据表。

您可以写入程序闪存,但这有点“可怕”,因为您可能会冒外部工具覆盖数据的风险,例如下次重新刷新实际软件时。

如果您的设备有其他非易失性存储区域,请使用该区域代替程序闪存。

关于如何执行此操作的确切方向是(方式)超出C语言指定的范围;你需要弄清楚要写入哪些寄存器以及确切的顺序。通常也有时间要求。

相关问题