Data written to EEPROM gets randomly wiped out (rewritten as 0xff) after reset, wake from sleep, or power off/on
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- cpp
- 領域
- embedded-iot
調査の方向性
payload にはソースファイルやテストが記載されていません。まず、説明用の EEPROM.begin/read/write/commit sketch を core 3.1.2 の SparkFun ESP8266 Thing Dev 上でテスト済みの再現に変換し、その後、reset、sleep、power cycle における動作を以前の core と比較します。再現可能な原因を特定し、commit 済みの EEPROM データが 0xff に置き換えられないことを検証できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git).
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Platform
- Hardware: ESP8266
- Core Version: 3.1.2
- Development Env: [Arduino IDE|]
- Operating System: [Manjaro Linux]
Settings in IDE
- Module: Sparkfun ESP8266 Thing Dev
- Flash Mode: [qio|dio|other] I don't know
- Flash Size: 512 kB
- lwip Variant: v2 Lower Memory
- Reset Method: I don't know
- Flash Frequency: [40Mhz] I don't know
- CPU Frequency: [80Mhz|160MHz] I don't know
- Upload Using: [SERIAL]
- Upload Speed: [115200] (serial upload only)
Problem Description
My code writes to the (fake?) EEPROM with EEPROM.write() and EEPROM.commit() and reads with EEPROM.read() the data that has been written in previous "sessions".
Sometimes, utterly randomly, after waking up from sleep, when my sketch reads a byte from a given position, instead of the value that it had previously written, it finds a 0xff.
My code had been running for literally years without issues on a dozen identical boards.
Recently I re-compiled and re-uploaded with the last version of the Arduino core on a new unit of the same identical board. I made no changes to the relevant part of the code, but the version compiled with the latest core has this issue.
Note that I'm observing the issue on a brand new chip, so this is not the Flash memory getting damaged by too many write cycles. Also, the old boards that are still running the code that was compiled with the old core, are still having no issue (they haven't got anywhere near 10k write cycles).
MCVE Sketch
NOTE: I cannot share the original sketch. I haven't written and tested a minimal sketch. The issue is hard to reproduce at will because it occurs randomly, but it happens often. I'm writing a minimal code example just to explain the issue, but I have not run and tested the code below; consider it as explanatory pseudo-code, it may very well contain mistakes.
#include <Arduino.h>
void setup() {
EEPROM.begin(512);
char x = EEPROM.read(0);
if (x != 'X') Serial.printf("!!! Unexpected value found in EEPROM: %d\n", x);
else Serial.println("Found expected value in EEPROM");
EEPROM.write(0, 'X');
EEPROM.commit();
}
void loop() {
}
Debug Messages
Debug messages go here
- 主要言語
- C++
- スター
- 16.7k
- フォーク
- 13.1k
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
esp8266/Arduino のほかの issue
-
Typo in Scan Class Documentation対応中かも @MukundaKatta が 185 日前に担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
-
lwip2 time-wait.patch: TCP_TW_LIMIT can abort the pcb that tcp_process() is still handling -> double free, heap corruption対応中かも @scardus が 19 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
esp8266/Arduino の issue をすべて見る
似ている issue
-
agent:WSL bug code-review linux LOW
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
category:port-update
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 2 日以内に返信
-
improvement ui
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
ihhub/fheroes2#11062 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
enhancement question
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
DarkStarSystems/pcons#224 ·
メンテナーはふだん 1 日以内に返信