30.06.2017, 15:16
(Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2017, 00:41 von Bernhard45.)
Hallo Mitbastler und Mitleser,
oftmals steht man vor dem Problem Daten in einem Microcontroller persistent zu speichern. Das können bestimmte Einstellungsdaten, Reglervariablen oder andere Sachen sein. Ist die Datenmenge gering, reicht der knappe Platz im EEPROM eines AVR/Arduino-Controllers meist aus. Anders sieht es bei größeren Datenmengen aus. Kalibrierkurven, Look-up-Tabellen, Webseiten für einen Webserver, ... usw. brauchen Platz im oberen Kilobyte bis Megabyte-Bereich.
Microcontroller wie der ESP8266 und der ESP32 haben einen mehrere MByte-großen Flashspeicher, der auch ein Dateisystem enthalten kann. Hier ein Auszug aus der Memorymap der eben genannten Systeme.
Speicher_Map.jpg (Größe: 29,41 KB / Downloads: 218)
Die Einrichtung eines Dateisystems ist mit der Arduino IDE sehr komfortabel möglich.
Zunächst muss man ein Zusatztool für die Arduino IDE installieren. Das Tool findet man unter https://github.com/esp8266/arduino-esp82...-0.1.3.zip
Im nächsten Schritt legt man im lokalen Arduino-Projektverzeichnis ein Ordner mit dem Namen "tools" an. In dieses Verzeichnis entpackt man die oben aufgeführte ZIP-Datei. Das Ganze sollte dann so aussehen.
<lokales Benutzerverzeichnis>/Arduino/tools/ESP8266FS/tool/esp8266fs.jar
Danach startet man die Arduino IDE neu. Als nächstes legt man ein neues Projekt (Sketch) an, oder wählt ein bestehendes Sketch aus. Nachfolgend mein Beispiel-Sketch:
Dann wählt man in der Menüleiste der Arduino-IDE "Sketch" - "Sketch-Ordner anzeigen" aus.
Danach öffnet sich das aktuelle Projektverzeichnis im Standarddateibrowser. Darin legt man den Ordner "data" an.
Dieser "data"-Ordner stellt nun das Wurzelverzeichnis unseres Dateisystems auf dem Microcontroller dar. Darin können wir beliebige Dateien und Dateitypen erstellen (siehe nachfolgendes Bild). Natürlich darf die Gesamtgröße aller Dateien nicht die maximale Größe unseres Dateisystems überschreiten.
Anschließen wählen wir das neue Tool "ESP8266 Sketch Data Upload" im Menüpunkt "Werkzeuge" unserer Arduino-IDE aus.
Die Übertragung des Dateisystems auf den Microcontroller kann einige Zeit in Anspruch nehmen. Ist der Upload erfolgreich gewesen, flashen wir als nächstes wie gehabt unser Programm (bzw. den Beispielcode von oben) in den Microcontroller. Das Beispielprogramm ist ein "kleiner" primitiver Dateibrowser der alle Dateien im Wurzelverzeichnis des Dateisystems auf dem Controller anzeigt.
Ist ein Filesystem im Microcontroller erfolgreich angelegt, kann man die Dateien mit Programmcode beliebig modifizieren. Einen Überblick der Dateisystembefehle findet man unter http://esp8266.github.io/Arduino/version...ystem.html
Viele Bastlergrüße
Bernhard
oftmals steht man vor dem Problem Daten in einem Microcontroller persistent zu speichern. Das können bestimmte Einstellungsdaten, Reglervariablen oder andere Sachen sein. Ist die Datenmenge gering, reicht der knappe Platz im EEPROM eines AVR/Arduino-Controllers meist aus. Anders sieht es bei größeren Datenmengen aus. Kalibrierkurven, Look-up-Tabellen, Webseiten für einen Webserver, ... usw. brauchen Platz im oberen Kilobyte bis Megabyte-Bereich.
Microcontroller wie der ESP8266 und der ESP32 haben einen mehrere MByte-großen Flashspeicher, der auch ein Dateisystem enthalten kann. Hier ein Auszug aus der Memorymap der eben genannten Systeme.
Speicher_Map.jpg (Größe: 29,41 KB / Downloads: 218)
Die Einrichtung eines Dateisystems ist mit der Arduino IDE sehr komfortabel möglich.
Zunächst muss man ein Zusatztool für die Arduino IDE installieren. Das Tool findet man unter https://github.com/esp8266/arduino-esp82...-0.1.3.zip
Im nächsten Schritt legt man im lokalen Arduino-Projektverzeichnis ein Ordner mit dem Namen "tools" an. In dieses Verzeichnis entpackt man die oben aufgeführte ZIP-Datei. Das Ganze sollte dann so aussehen.
<lokales Benutzerverzeichnis>/Arduino/tools/ESP8266FS/tool/esp8266fs.jar
Danach startet man die Arduino IDE neu. Als nächstes legt man ein neues Projekt (Sketch) an, oder wählt ein bestehendes Sketch aus. Nachfolgend mein Beispiel-Sketch:
Code:
#include "FS.h"
boolean bFFSaktiv = false;
void setup()
{
Serial.begin(115200);
delay(1000);
// Start filing subsystem
if (SPIFFS.begin()) {
Serial.println("Flashdateisystem aktiv\n\n");
Serial.println();
bFFSaktiv = true;
} else {
Serial.println("Flashdateisystem kann nicht eingeschaltet werden\n\n");
}
}
void loop()
{
Serial.println("Dateien in Root-Verzeichnis");
if (bFFSaktiv) {
Dir dir = SPIFFS.openDir("/");
while (dir.next()) {
Serial.print(dir.fileName());
File f = dir.openFile("r");
Serial.print(" Größe: "); Serial.println(f.size());
f.close();
}
}
while (true){
yield();
}
}
Dann wählt man in der Menüleiste der Arduino-IDE "Sketch" - "Sketch-Ordner anzeigen" aus.
Danach öffnet sich das aktuelle Projektverzeichnis im Standarddateibrowser. Darin legt man den Ordner "data" an.
Dieser "data"-Ordner stellt nun das Wurzelverzeichnis unseres Dateisystems auf dem Microcontroller dar. Darin können wir beliebige Dateien und Dateitypen erstellen (siehe nachfolgendes Bild). Natürlich darf die Gesamtgröße aller Dateien nicht die maximale Größe unseres Dateisystems überschreiten.
Anschließen wählen wir das neue Tool "ESP8266 Sketch Data Upload" im Menüpunkt "Werkzeuge" unserer Arduino-IDE aus.
Die Übertragung des Dateisystems auf den Microcontroller kann einige Zeit in Anspruch nehmen. Ist der Upload erfolgreich gewesen, flashen wir als nächstes wie gehabt unser Programm (bzw. den Beispielcode von oben) in den Microcontroller. Das Beispielprogramm ist ein "kleiner" primitiver Dateibrowser der alle Dateien im Wurzelverzeichnis des Dateisystems auf dem Controller anzeigt.
Ist ein Filesystem im Microcontroller erfolgreich angelegt, kann man die Dateien mit Programmcode beliebig modifizieren. Einen Überblick der Dateisystembefehle findet man unter http://esp8266.github.io/Arduino/version...ystem.html
Viele Bastlergrüße
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung.
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")