gpt4 book ai didi

嵌入式系统 : last gasp before reboot

转载 作者:行者123 更新时间:2023-12-03 18:24:31 25 4
gpt4 key购买 nike

当嵌入式系统出现严重问题时,我倾向于将错误写入闪存中的特殊日志文件,然后重新启动(如果内存不足,则没有太多选择)。

我意识到这可能会出错,所以我尝试将其最小化(通过在最终写入期间不分配任何内存,并提高写入进程的优先级)。

但这依赖于检索日志文件的人。现在我正在考虑在重新启动之前通过 intertubes 发送一条消息来报告错误。

再想一想,当然,最好在重新启动后发送该消息,但这确实让我想到......

如果我发现一个不可恢复的错误,我应该做什么样的事情,我怎样才能在一个处于不稳定状态的系统中尽可能安全地做这些事情?

最佳答案

一种策略是使用一块 RAM,即 不是 在开机/重启期间初始化。这可用于存储在重启后仍然存在的数据,然后当您的应用程序重新启动时,它可以在代码的早期检查该内存并查看它是否包含任何有用的数据。如果是,则将其写入日志,或通过通信 channel 发送。

如何保留未初始化的 RAM 部分取决于平台,并且取决于您是否正在运行管理 RAM 初始化的成熟操作系统 (Linux)。如果您在一个由 C 启动代码完成 RAM 初始化的小型系统上,那么您的编译器可能有办法将数据(文件范围变量)放在不同的部分(除了通常的,例如 .bss)。 ) 没有被 C 启动代码初始化。

如果数据未初始化,则它可能在上电时包含随机数据。要确定它是否包含随机数据或有效数据,请使用哈希,例如CRC-32,以确定其有效性。如果您的处理器有办法告诉您您是处于重启还是上电重置,那么您还应该使用它来确定上电后数据无效。

关于嵌入式系统 : last gasp before reboot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com