Flash-RAM

Aus open7x0.org

Wechseln zu: Navigation, Suche

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:

  1. Der erste Bereich enhält den boot sector.
  2. 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.
  3. 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.
  4. 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.

Links zum Thema »Firmware« 

Persönliche Werkzeuge