- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当嵌入式系统出现严重问题时,我倾向于将错误写入闪存中的特殊日志文件,然后重新启动(如果内存不足,则没有太多选择)。
我意识到这可能会出错,所以我尝试将其最小化(通过在最终写入期间不分配任何内存,并提高写入进程的优先级)。
但这依赖于检索日志文件的人。现在我正在考虑在重新启动之前通过 intertubes 发送一条消息来报告错误。
再想一想,当然,最好在重新启动后发送该消息,但这确实让我想到......
如果我发现一个不可恢复的错误,我应该做什么样的事情,我怎样才能在一个处于不稳定状态的系统中尽可能安全地做这些事情?
最佳答案
一种策略是使用一块 RAM,即 不是 在开机/重启期间初始化。这可用于存储在重启后仍然存在的数据,然后当您的应用程序重新启动时,它可以在代码的早期检查该内存并查看它是否包含任何有用的数据。如果是,则将其写入日志,或通过通信 channel 发送。
如何保留未初始化的 RAM 部分取决于平台,并且取决于您是否正在运行管理 RAM 初始化的成熟操作系统 (Linux)。如果您在一个由 C 启动代码完成 RAM 初始化的小型系统上,那么您的编译器可能有办法将数据(文件范围变量)放在不同的部分(除了通常的,例如 .bss
)。 ) 没有被 C 启动代码初始化。
如果数据未初始化,则它可能在上电时包含随机数据。要确定它是否包含随机数据或有效数据,请使用哈希,例如CRC-32,以确定其有效性。如果您的处理器有办法告诉您您是处于重启还是上电重置,那么您还应该使用它来确定上电后数据无效。
关于嵌入式系统 : last gasp before reboot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226270/
使用解释器模式,from gasp import * 运行,但是当我将它放在脚本中时它不会运行。我是从 How to Think Like a Computer Scientist: Learning
我有以下 GASP 动画: $(function () { var tmax_options = { repeat: -1 }; var tmax_tl = new
当嵌入式系统出现严重问题时,我倾向于将错误写入闪存中的特殊日志文件,然后重新启动(如果内存不足,则没有太多选择)。 我意识到这可能会出错,所以我尝试将其最小化(通过在最终写入期间不分配任何内存,并提高
我在终端中输入了以下命令: br@wind:~$ python Python 2.7.3 (default, Aug 1 2012, 05:16:07) [GCC 4.6.3] on linux2
我在尝试让 VS Code 中的 Java 调试器扩展正常工作时遇到了问题。当我运行它时,会抛出一个错误: Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFo
我使用的是Ubuntu 16.04系统,我想安装python的gasp。我被告知以下命令可以帮助我安装python-gasp: $ sudo apt-get install python-gasp
我目前正在尝试学习 Python,并且正在学习如何像计算机科学家一样思考:使用 Python 学习。我已经在 Mac OSX 10.4.11 上安装了 Python 2.6.2 并使用 IDLE。 在
我是一名优秀的程序员,十分优秀!