工具/软件:
大家好:
我正在设计基于 EVM430-FR6043的 OEM 气流表。 固件工作正常、测量正常、但我发现启动通常需要大约400ms、这对于"简单"的传感器来说是相当长的时间。 使用一些调试引脚输出和示波器、我能够将其与`USS_initAlgorithms()`函数联系起来、该函数在我的代码启动前执行、占用大部分初始化时间。
因为它只采用配置结构并命名为 init 来解决 (),我假设它实际上只是预先计算一些值,这些值肯定可以缓存到 FRAM 中,以便仅在 MCU 编程后第一次上电时才获得此延迟。 `_USS_SW_Library_configuration_`结构实际上已经包含一个`validationKey`字段、并且位于持久存储器(FRAM)中、因此该库在设计时就考虑到了这一点。
我尝试的是仅在没有有效密钥时运行一次初始化功能、并在所有后续引导中跳过初始化:
if (gUssSWConfig.validationKey != CONFIG_VALIDATION_KEY) { code = USS_initAlgorithms(&gUssSWConfig); checkCode(code, USS_message_code_no_error); gUssSWConfig.validationKey = CONFIG_VALIDATION_KEY; }
这将成功跳过首次启动以外的每次启动中的初始化(以及延迟)、但也会中断应用程序。 在这种情况下、只要调用`uss_runAlgorithms()`、MCU 就会崩溃并重新启动。
我已经在运行`USS_initAlgorithms()`前后使用调试器检查了__no_init 内存缓冲区、以检查它是否在那里初始化一些数据、但没有发现变化。
我的问题:
- `USS_initAlgorithms()`需要这么长时间?
- 它修改了哪些未在 FRAM 中保留的数据?
- 是否有方法可以使用所述的缓存方法或其他任何方法来消除此延迟?
谢谢!
此致、
Philipp