Microchip
直播中

冯超

7年用户 229经验值
私信 关注
[问答]

如何恢复使用NVM的参数的默认校准值

我正在尝试实现一种方法,用于恢复使用NVM的参数的默认校准值。例如,一个名为“myData”的参数被配置为使用存储在NVM中的数据。在软件中,默认值以值“3500”初始化……平台软件通过调用以下函数在启动时更新该参数的值……在这种情况下,在模拟EEPROM中将“myData”分配地址“32”。仿真EEPROM中的ress可能与软件中声明的默认初始化值“3500”不同。如果我想将默认初始化值“3500”恢复到参数“myData”,那么最好的方法是什么?值“3500”必须存储在闪存中的某个地方,并且处理器必须从闪存(ROM)检索值“3500”,并将其分配给位于数据存储器(RAM)中的参数“myData”。来自flash的'3500',或者甚至如何找到该值存储在flash中的地址。我可以用指针指向存储在flash中的默认初始化值'3500'的地址吗?如果是,该怎么办?在调用函数DataEERecallCalibration之前,我可以复制参数的默认初始化值并将其存储在数据存储器中。这样,在数据存储器中就有默认的初始化值的副本,尽管这看起来很愚蠢,因为它需要数据存储器来存储默认的初始化值(无论如何很少被检索),并且默认的初始化值必须已经存储在f中的某个地方。lash,这只是如何访问数据的问题。在闪存中,问题就在于如何访问数据。如果可能,我如何从闪存中检索默认的初始化值“3500”,以便将默认的初始化值“3500”恢复到参数“myData”?

回帖(18)

吕聪

2020-5-13 11:26:37
在启动程序时,可能需要执行诸如restoreDefaultVal.()之类的过程,可以调用restoreDefaultVal.()或DataEERecallCalibration()来初始化值。
举报

邓莎

2020-5-13 11:42:18
感谢Timijkthe这个过程的问题是,它意味着将默认值保持在两个地方。即变量被声明和初始化,并且在函数RealeDebug值()中。如果有很多参数,这就更难了!此外,声明变量的代码是从Simulink自动生成的。可变的解释和初始化是自动编码的(即应用软件),但是所有模拟的EEPROM功能都是手工编码的(即平台软件)。因此,这意味着在自动生成的代码中搜索初始化值(其他用户可能会改变),并手动将初始化值复制到手动代码中。Flash,必须有一种方法重新初始化这些变量,而不必做重置?
举报

石双厚

2020-5-13 11:57:28
为什么?在函数restoreDefaultVal.()中将其引用为ONCE,并在启动时或在任何时候使用它初始化变量。
举报

邓莎

2020-5-13 12:05:57
为什么?在函数restoreDefaultVal.()中将其引用为ONCE,并在启动时或任何时候使用它初始化变量。另一种方法是将初始值与可更改的副本一起存储在EEPROM中。在Simulink。代码是从Simulink中自动生成的,它声明和初始化变量,即无符号int myData=3500;初始化值必须在Simulink中定义,不仅用于生成代码,而且用于运行模拟。e,应用软件的声明和初始化必须在Simulink中定义。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分