Flash-RAM
Aus open7x0.org
Inhaltsverzeichnis |
Hardware
Bei dem Flash-Ram der M740AV handelt es sich um einen 16 MiB Baustein mit der Bezeichnung:
- PL127J70BAI00 // 0439ABC // THAILAND // FASL LLC.
Der Chip wird von Spansion hergestellt und von AMD vertrieben. Dort gibt es auch die Produktbeschreibung als PDF.
Nach der PDF-Beschreibung behält der Flash seine Infos für 20 Jahre ("Data Retention: 20 years typical") und schafft 1 Million Lösch-Schreib-Zyklen ("Cycling Endurance: 1 million cycles per sector").
Organisation
Innerhalb der Firmware kann das Flash-RAM über die Zeichen-Geräte /dev/mtd* und über die Block-Geräte /dev/mtdblock* angesprochen werden. Die Boxen M740AV und M750S besitzen eine unterschiedliche Aufteilung der Flash-RAMs; nur mtd1 und mtd2 sind unterschiedlich.
M740AV
Der Flash-RAM ist wie folgt auf die mtd-Blocke aufgeteilt:
------------------------------------------------------------------------------- Device Adresse/Hex Größe/Hex+MiB mount Anmerkung ------------------------------------------------------------------------------- /dev/mtd0 00:0000-ff:ffff 100:0000 16 M gesamter Bereich (mtd1 bis mtd5) /dev/mtd1 00:0000-5f:ffff 60:0000 6 M / cramfs, root file system /dev/mtd2 60:0000-bb:ffff 5c:0000 5.75M /data jffs2, playlists, timer, EPG, ... /dev/mtd3 bc:0000-bf:ffff 04:0000 0.25M speicher mit settings, /var/etc /dev/mtd4 c0:0000-d7:ffff 18:0000 1.5 M boot sector (64K) + 2x vmlinux /dev/mtd5 d8:0000-ff:ffff 28:0000 2.5 M cramfs, rescue system /dev/mtd6 ungültig
cat /proc/mtd liefert passend die folgende Ausgabe:
dev: size erasesize name mtd0: 01000000 00010000 "Physically mapped flash" mtd1: 00600000 00010000 "root" mtd2: 005c0000 00010000 "app" mtd3: 00040000 00010000 "prod" mtd4: 00180000 00010000 "boot" mtd5: 00280000 00010000 "rescue"
Die Aufteilung des Flash-RAMs in die einzelnen Blöcke wird durch den folgenden Text im boot sector bestimmt:
mtdparts=phys:6m(root),5888k(app),256k(prod),1536k(boot),-(rescue)
M750S
Der Flash-RAM ist wie folgt auf die mtd-Blocke aufgeteilt:
------------------------------------------------------------------------------- Device Adresse/Hex Größe/Hex+MiB mount Anmerkung ------------------------------------------------------------------------------- /dev/mtd0 00:0000-ff:ffff 100:0000 16 M gesamter Bereich (mtd1 bis mtd5) /dev/mtd1 00:0000-7f:ffff 80:0000 8 M / cramfs, root file system /dev/mtd2 80:0000-bb:ffff 3c:0000 3.75M /data jffs2, playlists, timer, ... /dev/mtd3 bc:0000-bf:ffff 04:0000 0.25M speicher mit settings, /var/etc /dev/mtd4 c0:0000-d7:ffff 18:0000 1.5 M boot sector (64K) + 2x vmlinux /dev/mtd5 d8:0000-ff:ffff 28:0000 2.5 M cramfs, rescue system /dev/mtd6 ungültig
cat /proc/mtd liefert passend die folgende Ausgabe:
dev: size erasesize name mtd0: 01000000 00010000 "Physically mapped flash" mtd1: 00800000 00010000 "root" mtd2: 003c0000 00010000 "app" mtd3: 00040000 00010000 "prod" mtd4: 00180000 00010000 "boot" mtd5: 00280000 00010000 "rescue"
Die Aufteilung des Flash-RAMs in die einzelnen Blöcke wird durch den folgenden Text im boot sector bestimmt:
mtdparts=phys:8m(root),3840k(app),256k(prod),1536k(boot),-(rescue)
Anmerkungen
- /dev/mtd[0-5] sind 'character devices'. /dev/mtdblock[0-5] sind die dazugehörigen 'block devices'.
- /dev/mtd6 und /dev/mtdblock6 existieren zwar, sind jedoch ungültig.
- Der Flash-RAM hat eine Größe von 128 MBit, also 16 MiB. /dev/mtd0 stellt den gesamten Speicherbereich da und /dev/mtd1 bis /dev/mtd5 disjunkte Teilbereiche hiervon.
- Die Adressen ergeben sich logisch aus der Anordnung der mtd-devices und können durch den Vergleich mit /dev/mtd0 bestätigt werden.
- In den bereits bekannten Siemens GPL Sourcen befindet sich auch ein Verzeichnis mit dem Namen mtd/, welches neben den Quellen weitere Infos enthält. U.a. befindet sich dort die Datei 'mtd-jffs-HOWTO.txt', die nach dem ersten Überfliegen sehr interessant für uns sein kann.
mtd4 alias boot
/dev/mtd4 besteht aus vier Unterbereichen:
------------------------------------------------------------------------------- Adresse/Hex Größe/Hex+KiB Anmerkung ------------------------------------------------------------------------------- 00:0000 - 00:ffff 01:0000 64K boot sector 01:0000 - 0B:ffff 0B:0000 704K vmlinux für standard system 0C:0000 - 0C:ffff 01:0000 64K M740=Datenmüll?? M750=Fortsetzung vmlinux 0D:0000 - 17:ffff 0B:0000 704K vmlinux für rescue system ? -------------------------------------------------------------------------------
Anmerkungen:
- Der erste Bereich enhält den boot sector.
-
Der zweite Bereich enhält das vmlinux für das standard system.
Dieser Rückschluss ergibt sich u.a. daraus, dass bei den Standard Firmware Updates die WSW Datei nur diesen Teil von /dev/mtd4 überschreibt.
Beide mit vmlinux benannten Bereiche bestehen jeweils aus einem 524 (=512+12) Byte langem Header, in dem zweimal das Wort 'DISCVISION' vorkommt. Danach folgt das eigentliche vmlinux in gezippter Version. - Der dritte Bereich scheint auf der M740AV Datenmüll zu sein. Er beginnt wie die beiden anderen vmlinux-Bereiche, ist aber hierfür zu klein. Die anderen beiden vmlinux-Bereiche sind am Ende aber mit Füllbytes (0xFF) aufgefüllt. Auch dieses Merkmal fehlt hier. Außerdem sieht dieser Bereich so aus, als ob er durch den vierten Bereich einfach überschrieben wurde. Auf der M750S befindet sich hier die Fortsetzung des vorhergehenden vmlinux-Bereiches.
-
Der vierte Bereich enhält das vmlinux für das rescue system.
Dieses ist eine Mutmaßung, die sich wie folgt ergibt:
- Der Bereich wurde nur mit FW 1.12.1 überschrieben, die einzig auch das rescue system überschrieben hat.
- Im FW 1.12.1-Update haben Bereich #2 und #4 den identischen Inhalt.
- Es wäre logisch sinnvoll.
M740AV und M750S im Vergleich
Die DVB-T Empfänger M740AV und M750S sind zwar sehr ähnlich aufgebaut, aber das Flash-RAM ist anders eingeteilt.
Bei beiden Systemen ist das Flash in mehrere Bereiche aufgeteilt. Die beiden wesentlichen Teile sind der Systembereich (root file system, Dateisystem cramfs), welches nur lesbar ist, und der beschreibbare Datenbereich (/data, Dateisystem jffs2).
Bei der M740AV sind beide Bereiche ca. 6MB groß. Da der Systembereich zu klein für die komplette Software ist, ist das Hauptprogramm, die wavebox, im Datenbereich abgelegt. Daher umfasst ein Update auch immer beide Bereiche. Ausnahme hiervon sind meine Minis, die nur den Systembereich enthalten.
Bei der M750S haben die Entwickler dazugelernt und den Systembereich zu lasten des Datenbereiches vergrößert. Sämtliche Software befindet sich hier im Systembereich. Daher umfasst ein M750S-Update auch immer nur den Systembereich.
- Weitere Infos: M750S zerflashed
Links zum Thema »Firmware«
- Allgemeine Infos:
- Hintergrundwissen:

