mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MTD / JFFS2 - Hilfe bei ersten Schritten


Autor: Themistoklis Mirkos (zardoz7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich betreibe eine Platine mit einem ARM (AT91RM9200) und externem RAM 
(256 MBit) und seriell angebunden Flash (AT45DB642D).

Es befinden sich auf dem System ein Flash-Loader, ein Linux-Loader, der 
Kernel und ein gepacktes rootfs.

Momentan startet das System, indem der Flash-Loader, den Linux-Loader, 
Kernel und gepacktes rootfs in den RAM lädt und dann den Kernel 
ausführt.

Dieser entpackt im weiteren Verlauf die erkannte RAM-Disk und mountet 
sie.

Danach wird eine Konsole gestartet und ggf. eine Anwendung.

Nun habe ich keinerlei Möglichkeit Daten permanent auf dem System zu 
speichern.

Als Möglichkeit dachte ich mir JFFS2 auf dem Flash einzurichten.

Ich gehe so vor:
Über cmdline lasse ich eine mtd erstellen:
...
mtdparts=AT45DB642.spi0:0x100000@0x684400(jffs2_disk)
...
Worauf muss ich hier achten?
Da laut Manual auf dem Flash "Page Erase" erfolgen kann, gehe mal davon 
aus, dass das MTD nur auf Page-Grenzen liegen muss. Muss ich evtl. doch 
Block-Grenzen waren?
Woher "weiß" der MTD-Treiber von den Seiten-, Block- und Sektor-Größen?
Woher weiß dieser was die kleinste löschbare Einheit ist?
Wird das evtl. erst durch den jffs2-Treiber gehandhabt?

Danach erstelle ich mit den mtdtools ein leeres jffs.image aus einem 
leeren Ordner.
Ich gebe dazu auf dem Host ein:
mkfs.jffs2 -r src/ -o image --eraseblock=0x400 --pad=0x100000 -l
Worauf muss ich nun achten? Was hat es sich mit den "cleanmarker" auf 
sich?

Folgende Ausgaben kommen von meinem System:
Bei Einrichten des MTD:
...
at91_dataflash: AT45DB642 detected [spi0] (8650752 bytes)
1 cmdlinepart partitions found on MTD device AT45DB642.spi0
Creating 1 MTD partitions on "AT45DB642.spi0":
0x00684400-0x00784400 : "jffs2_disk"
mtd: partition "jffs2_disk" doesn't start on an erase block boundary -- 
force read-only
...
Was will es mir hier sagen? Was ist ein "erase block boundary"?
Mein image fängt jedenfalls mit 19 85 20 03 (bzw. 85 19 03 20 auf dem 
Host) an, also ein cleanmarker node; danach folgen dirent und inode

Wenn ich später das mtdblock mounte kommt folgende Meldung:
...
~ # mount -t jffs2 /dev/mtdblock/0 mnt/nfs/
jffs2: Flash size not aligned to erasesize, reducing to 1023KiB
JFFS2 flash size adjusted to 1047552KiB
JFFS2 write-buffering enabled buffer (1056) erasesize (8448)
CLEANMARKER node found at 0x00000000 has totlen 0xc != normal 0x0
...
Was macht es hier? Was bedeutet das mit dem "reducing to 1023KiB"? Und 
wieso stimmt die Lände der cleanmarker nicht?

Ihr seht ich bin wirklich relativ am Anfang was jffs2 angeht aber habe 
versucht das Thema zu verstehen.
Trotzdem brauche ich dringend eure Hilfe!

Danke!!

Gruß, Themis

Autor: Themistoklis Mirkos (zardoz7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ich hier zu off-topic?

Keine Vorschläge?

Besonders was das "read-only" anbelangt?

Gruß,
Themis

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.