Liebe ESP-Fans,
ich hatte in einem anderen Thread schon einmal über das kuriose
Zeitverhalten von ESP8266 berichtet
(Beitrag "Micropython Startup Zeit auf ESP8266 / ESP32").
Wie ich jetzt herausfinden konnte, liegt das Verhalten im benutzen
Filesystem littlefs/v2 auf dem Flash-Speicher. Die gemessene Dauer für
einen `import` kann sehr stark variieren. Das heißt, wenn ich alle
Quellen auf dem ESP lösche und wieder drauf kopiere erhöht sich die Zeit
für einen Import. Nach einer
gewissen Anzahl von Kopiervorgängen sinkt die Zeit wieder schlagartig
auf
einen kleinen Wert.
Ein Durchlauf besteht immer aus:
1 | rm /pyboard/*
|
2 | cp *.py /pyboard/
|
3 | repl
|
4 | Strg-D (soft reboot)
|
Der Programmcode ist:
1 | from time import ticks_diff, ticks_ms, sleep
|
2 | pstart = ticks_ms()
|
3 | from machine import Pin
|
4 | # read Configuration
|
5 | POWER_PIN = 14
|
6 | power = Pin(POWER_PIN, Pin.OUT)
|
7 | print(f"Startup duration = {ticks_diff(ticks_ms(), pstart)} ms")
|
8 | power.on()
|
Hier die Ergebnisse für die gemessenen Zeiten (MicroPython v1.20.0 on
2023-04-26; ESP module with ESP8266):
13 ms, 20 ms, 24 ms, 30 ms, 34 ms, 40 ms, 45 ms, 50 ms, 55 ms, 60 ms, 67
ms, 72 ms, 76 ms, 81 ms, 88 ms, 92 ms, 97 ms, 102 ms, 13 ms
Das littlefs soll ja robuster gegen Stromausfall sein, aber mit dem
Verhalten ist es für Echtzeitanwendungen nur eingeschränkt verwendbar.
Hat jemand von Euch ähnliche Beobachtungen bezüglich littlefs gemacht?
Habe ich einen Denkfehler gemacht? Lohnt sich ein Bugreport bei
MicroPython?
Danke für Feedback!
Viele Grüße
Haiko