Other Parts Discussed in Thread: MSP430FR6989
主题中讨论的其他器件:MSP430WARE、
您好!
我的客户希望将器件中可用的 FRAM 的一半用作 EEPROM。 他们希望在应用程序中使用此空间进行数据记录。 但是、只要它们通过 IAR 或 CCS 进入调试模式、数据就会被完全擦除。 是否有办法防止这种情况发生?
此致、
Chander
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: MSP430FR6989
您好!
我的客户希望将器件中可用的 FRAM 的一半用作 EEPROM。 他们希望在应用程序中使用此空间进行数据记录。 但是、只要它们通过 IAR 或 CCS 进入调试模式、数据就会被完全擦除。 是否有办法防止这种情况发生?
此致、
Chander
要将 NOINIT 从 RAM 移到 FRAM、您需要更改链接器文件。
删除此行(lnk_msp430fr6989.cmd 副本中的第191行):
.TI.noinit:{}>RAM /*用于#pragma noinit *
并在.TI.persistent (副本中的第137行)之后插入(略有更改):
.TI.persistent:{}//*代表#pragma PERSISTENT */
.TI.noinit:{}//*代表#pragma noinit */
.cio:{}//* C I/O 缓冲器*/
由于您希望使用较大的空间、您可能需要更改 MPU 定义("Build Settings->CCS General->MPU"选项卡)、因为它看起来像默认布局、只提供大约2KB 的读取/写入。
这将为您提供小于48KB (低 FRAM)的工作空间。 如果您需要更多、您可能需要使用高 FRAM (FRAM2区域)、这需要更多的抖动。
我在这里没有 FR6989可供使用、但.map 文件似乎表明我成功执行了这一操作。
您好、Chander、
您需要使用调试而不下载函数、以不擦除和初始化变量。
对于 IAR、您可以找到"Menu button "debug without download"。
对于 CCS,请参阅此帖子以进行调试而不下载: https://e2e.ti.com/support/tools/ccs/f/81/t/538495?How-to-debug-existing-code-in-CCS-without-flashing-a-new-code- 。 您也可以直接观看视频: 快速提示视频。
谢谢、
Lixin
不、当我将 NOINIT 空间分配更改为 FRAM 时、它们会在进入调试模式时开始被擦除。 我在 xcl 文件中的更改反映在下面:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/--------------
//内存保护单元(MPU)边界
//
-Z (const) MPU_B2
//--------------------
//常量数据
//
-Z (const) DATA16_C、DATA16_ID、TLS16_ID、DIFUNCT、校验和=4400-FF7F
-Z (data) DATA16_N、DATA20_N=4400-FF7F
//--------------------
//代码
//
-Z (code) CSTRT、ISR_code、CODE16=4400-FF7F
//--------------------------------------------------------
//所有内存0-FFFFF
//
--------------------------------------------------------------------
此致、
Chander
我查看了 mspdebug 和 TI 调试库之间接口的源代码、并找到了几种不同的擦除函数。 除了一个擦除主存储器、还有一个擦除段。 因此、似乎可以执行所需的操作。
但我不能想到任何使用擦除段函数的工具。 对器件进行编程将始终擦除所有主存储器。 希望用户数据能够承受这种情况是一个错误、因此如果您希望保留该数据、则必须读取该数据并将其存储在主机上。
我想、如果您有足够的动力、您可以将 mspdebug 源代码用作基础代码、并对其进行修改以仅擦除编程的空间。 或完全跳过 FRAM 器件的擦除步骤。