NAND-Programmierung mit generierter UBI-Binärdatei

NAND-Programmierung mit generierter UBI-Binärdatei

Unser System generiert eine UBI-Partition, die beim ersten Booten im NAND erstellt wird. Das System kann dort Dateien lesen und schreiben. Ich versuche, eine Binärdatei zu erstellen, die wir für einen NAND-„Gang“-Programmierer verwenden können, damit wir diese Partition mit einigen Dateien vorprogrammieren können.

Ich erstelle eine Ordner-/Fire-Struktur und verwende die folgenden beiden Befehle:

mkfs.ubifs -r ./files -m 2048 -e 126976 -c 2047 -o ubifs.img 
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg

ubinize.cfg: 
[files] 
mode=ubi 
vol_id=0 
vol_type=dynamic 
vol_name=fs 
vol_flags=autoresize 
image=ubifs.img

Um meine Datei zu testen, programmiere ich ubi.img mit uboot am richtigen Offset und boote das System. Das System findet die neue UBIFS-Partition, die gültige Dateien enthält! Juhu!

Das Problem: Wenn ich irgendetwas an der Partition ändere, sogar eine neue Datei bearbeite und neu starte, kann die Partition nicht gemountet werden und es treten zahlreiche ECC-Fehler auf:

$ log | grep UBI
05:00:59 PM  [    INFO] [        kernel] UBIFS: background thread "ubifs_bgt1_0" started, PID 306
05:00:59 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:00:59 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [   ERROR] [        kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [   ERROR] [        kernel] UBIFS error (pid 304): ubifs_scan: bad node
05:01:00 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM  [   ERROR] [        kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:02 PM  [   ERROR] [        kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:00:00 PM  [   ERROR] [        kernel] UBIFS error (pid 304): ubifs_recover_master_node: failed to recover master node
05:00:00 PM  [   ERROR] [        kernel] UBIFS error (pid 304): ubifs_recover_master_node: dumping first master node
05:00:00 PM  [    INFO] [        kernel] UBIFS: background thread "ubifs_bgt1_0" stops

  [Bildschirmfoto]

Irgendwelche Ideen, wo ich beim Erstellen meines UBI-Bildes einen Fehler gemacht habe?

Antwort1

RTFM! Der Parameter -F hat die oben aufgeführten Fehler behoben.

http://www.linux-mtd.infradead.org/faq/ubifs.html#L_free_space_fixup

Darüber hinaus waren die ubi_reader-Tools eine große Hilfe beim Verständnis verschiedener Parameter, die in mkfs und ubinize einfließen.

https://github.com/jrspruitt/ubi_reader

verwandte Informationen