在发生故障时记录 IoT 设备的内部工作是否错误?
Is it wrong to log inner working of an IoT device in case of failure?
我目前正在从事一个物联网项目,我想记录我的软件和硬件的执行情况。
我想记录它们,然后将它们发送到某个数据库,以防我需要远程查看我的设备。
wip IoT 设备必须尽可能小,因此必须经常在闪存模块中写入的行为对我来说似乎很奇怪。
我知道它将 运行 RTOS OS Cortex-M4 上的 Nucleus 与一些通过 SPI 连接的模块。
哪位高手能赐教吗?
谢谢。
您必须估计需要进入日志的 hourly/daily/whatever 数据量,并推断出产品的预期寿命。微控制器闪存通常不用于记录,因此它既不具有持久的闪存单元(大约 10K-100K 写入周期通常与 1M 或更多的专用数据芯片相比 - 在 uC 规范 sheet 中查找)也不磨损练级。磨损均衡是防止软件过于频繁地写入同一物理单元(例如,简单文件系统的目录)的任何方法。
对于您的日志,您将不得不创建一个非常聪明或复杂的方法来规避任何闪存寿命问题。
但问题并不止于此:通常 MCU 无法在写入闪存时从闪存中读取,其中 "writing" 意味着延长(几微秒到几毫秒,具体取决于芯片)指令序列控制内部闪存状态机(编程电压、饱和时间等),直到新值可靠地稳定在内存中。而且,也许你猜到了,"reading"在这个上下文中也意味着读取指令,即你必须确保在Flash写入期间可能发生的任何代码和中断都只是在RAM,缓存或其他内存中执行代码而不是在正常的指令存储器中。这是可行的,但是您在硬件层之上 运行 的软件系统越复杂,它就越不可能可靠地工作。
我目前正在从事一个物联网项目,我想记录我的软件和硬件的执行情况。 我想记录它们,然后将它们发送到某个数据库,以防我需要远程查看我的设备。
wip IoT 设备必须尽可能小,因此必须经常在闪存模块中写入的行为对我来说似乎很奇怪。 我知道它将 运行 RTOS OS Cortex-M4 上的 Nucleus 与一些通过 SPI 连接的模块。
哪位高手能赐教吗?
谢谢。
您必须估计需要进入日志的 hourly/daily/whatever 数据量,并推断出产品的预期寿命。微控制器闪存通常不用于记录,因此它既不具有持久的闪存单元(大约 10K-100K 写入周期通常与 1M 或更多的专用数据芯片相比 - 在 uC 规范 sheet 中查找)也不磨损练级。磨损均衡是防止软件过于频繁地写入同一物理单元(例如,简单文件系统的目录)的任何方法。 对于您的日志,您将不得不创建一个非常聪明或复杂的方法来规避任何闪存寿命问题。 但问题并不止于此:通常 MCU 无法在写入闪存时从闪存中读取,其中 "writing" 意味着延长(几微秒到几毫秒,具体取决于芯片)指令序列控制内部闪存状态机(编程电压、饱和时间等),直到新值可靠地稳定在内存中。而且,也许你猜到了,"reading"在这个上下文中也意味着读取指令,即你必须确保在Flash写入期间可能发生的任何代码和中断都只是在RAM,缓存或其他内存中执行代码而不是在正常的指令存储器中。这是可行的,但是您在硬件层之上 运行 的软件系统越复杂,它就越不可能可靠地工作。