Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Data written to EEPROM gets randomly wiped out (rewritten as 0xff) after reset, wake from sleep, or power off/on

オープン
#9,047 コメント 13 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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 を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

esp8266/Arduino のほかの issue

esp8266/Arduino の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。