Abo
  • Services:
Anzeige
Code des Bootloaders
Code des Bootloaders (Bild: Christer Weinigel)

Der Inhalt der Param-Datei

Als ich den Second-Stage-Bootloader disassembliert habe, finde ich einen Abschnitt zur Überprüfung mit einer Prüfsumme des Dateiinhaltes. Aber womit wurde die Prüfsumme verglichen?

Nach ein wenig Nachdenken wird mir klar, dass sie in der Param-Datei stehen muss. Für die Datei "os" gibt es dort fünf Einträge von jeweils 32 Bit Länge am Index 0x124. Der erste Eintrag ist ein Flag. Wenn es den Wert 0xabcdabcd enthält, heißt das, die Datei wurde in den Flash-Speicher geschrieben. Die folgenden Einträge enthalten die Speicheradresse, eine weitere Adresse mit unklarem Zweck, schließlich die Dateigröße und die Prüfsumme.

Anzeige

Dann folgen weitere Abschnitte mit den entsprechenden Einträgen für die Dateien "hz", "tx", "me", "hlp", "fp" und "bmp".

Für jede Datei und ihre Kopie, die in den Flash-Speicher geschrieben wird, wird auch eine neue Param- und Paramcp-Datei erzeugt. Das erklärt, warum die Datei mehrfach auftaucht.

Mir gelingt es sogar, die Funktion für die Prüfsummen-Ermittlung zu disassemblieren. Es handelt sich um eine CRC32-Variante. Ich ergänzte mein Python-Programm.

Ich teste die Prüfsummen-Funktion mit den Werten aus der Param-Datei und sie stimmen tatsächlich überein. Mein Extraktionsprogramm funktioniert also tatsächlich, wie es sollte.

Die hässliche Erkenntnis

Entsprechend einiger Zeichenketten aus dem Speicherabbild sieht es so aus, als ob Owon als Dateisystem Yaff verwenden wollte, sich dann aber entschied, ein eigenes zu implementieren. Ich würde es nicht einmal direkt als Dateisystem bezeichnen. Es ist sehr simpel, kümmert sich nicht um eine gleichmäßige Verteilung der Schreibvorgänge und es gibt auch keinen Mechanismus, Dateien zu überschreiben, wenn das Speichermedium voll ist.

Das ist für mich soweit in Ordnung, wenn nur eine Sammlung statischer Dateien erforderlich ist. Problematischer finde ich, dass es keine Absicherung gegen Speicherfehler gibt. Wie ich schon schrieb: NAND-Speicherbausteine sind unzuverlässig. Es wird zu spontanen Bitfehlern kommen, selbst wenn der Baustein nie beschrieben wird. Deshalb ist eine Fehlerkorrektur unbedingt erforderlich.

Das Dateisystem aber hat keinerlei Fehlerkorrektur. Da in jeder Speichersektion 20 Byte nur mit Nullen aufgefüllt waren, vermute ich, dass ursprünglich der Einsatz von Fehlerkorrekturcodes (ECC) vorgesehen war, aber niemals implementiert wurde. Selbst das wäre aber unsinnig gewesen. Flash-Speicherbausteine haben 64 Byte für OOB-Daten pro Sektion, die für Fehlerkorrekturcodes vorgesehen sind. Später lasse ich mir die OOB-Daten unter Linux ausgeben - sie sind komplett leer und unbenutzt.

Außerdem sehe ich keine Methode, wie vernünftig mit schlechten Sektoren umgegangen wird. Eventuell wird einfach nach dem nächsten korrekten Kopfsektor gesucht, wie ich es auch in meinem Programm getan habe, als ich auf die Mülldaten stieß. Ich bin mir auch nicht sicher, wie die Dateisystem-Implementierung damit umgeht, wenn Kopfdaten in einer Datensektion auftauchen.

Zumindest führt der Bootloader eine Fehlererkennung durch. Er führt für wichtige Dateien, wie die Betriebssystem-Datei, eine Prüfsummenberechnung durch. Ist sie falsch, wird die Kopie der Datei benutzt. Das ist eine Art Dateikorrektur, da die Daten vom Original oder der Kopie repariert werden können, allerdings nicht, wenn beide Dateien kaputt sind.

Und das Risiko ist hoch, dass sowohl die Originaldatei als auch ihre Kopie Fehler enthalten. Hohes Risiko heißt, dass es nicht jedes Oszilloskop betreffen wird. Aber bei einem von hundert ist es realistisch. Als Hersteller wäre mir das zu viel, wenn ich Tausende davon herstellen würde. Insbesondere da die Umsetzung der Fehlerkorrektur einfach gewesen wäre. Es ist nicht schwer, nach "ECC algorithm source" zu suchen und es umzusetzen. Der Samsung-SoC hat sogar eine Fehlerkorrektur mit Hilfe der OOB-Daten implementiert, die Entwickler mussten lediglich den entsprechenden Schalter setzen, wenn Sektionen im Flash-Speicher geschrieben und gelesen werden.

Auch für den Second-Stage-Bootloader fehlt die Fehlerkorrektur. Das Risiko von Speicherfehlern in 75 KByte ist zwar nur gering, aber es wäre einfach umzusetzen gewesen.

Ich habe inzwischen das Gefühl, dass Owon zwar vernünftige Hardware baut, aber die Software nicht auf dem Stand der Technik ist, und das enttäuscht mich.

 Dateien extrahierenWie es weitergeht 

eye home zur Startseite
mifish 24. Nov 2016

+1 interessanter artikel

Themenstart

muhviehstah 23. Nov 2016

wäre binwalk hierbei nicht hilfreich gewesen?

Themenstart

muhviehstah 23. Nov 2016

kt

Themenstart

Elchinator 22. Nov 2016

Das wesentlichste Teil - die Hardware - scheint ja ab Werk durchaus brauchbar zu sein...

Themenstart

derdiedas 22. Nov 2016

Danke Golem - und nun bin ich doch wieder motiviert - zwar kein Linux zu installieren...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V., Karlsruhe
  2. Daimler AG, Fellbach
  3. SICK AG, Reute bei Freiburg im Breisgau
  4. MED-EL Medical Electronics, Innsbruck (Österreich)


Anzeige
Top-Angebote
  1. Boomster 279,99€, Consono 35 MK3 5.1-Set 333,00€, Move BT 119,99€)
  2. 69,99€ (Liefertermin unbekannt)
  3. (heute u. a. mit 40% auf Polar A360, Sony DSC-RX10M2 für 999,00€)

Folgen Sie uns
       


  1. Rockstar Games

    Spieleklassiker Bully für Mobile-Geräte erhältlich

  2. Crimson Relive Grafiktreiber

    AMD lässt seine Radeon-Karten chillen und streamen

  3. Layout Engine

    Facebook portiert CSS-Flexbox für native Apps

  4. Creators Update für Windows 10

    Microsoft wird neue Sicherheitsfunktionen bieten

  5. Landgericht Traunstein

    Postfach im Impressum einer Webseite nicht ausreichend

  6. Big-Jim-Sammelfiguren

    Ebay-Verkäufer sind ehrlich geworden

  7. Musikstreaming

    Soundcloud startet Abo-Service in Deutschland

  8. Frankreich

    Filmförderung über "Youtube-Steuer"

  9. Galaxy S8

    Samsung will auf Klinkenbuchse verzichten

  10. Asteroid OS

    Erste Alpha-Version von offenem Smartwatch-OS veröffentlicht



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Star Wars Rogue One VR Angespielt: "S-Flügel in Angriffsposition!"
Star Wars Rogue One VR Angespielt
"S-Flügel in Angriffsposition!"
  1. Electronic Arts Battlefield 1 läuft offenbar viel besser als Battlefield 4
  2. Battlefield 1 im Test Kaiserschlacht und Kriegstauben der Spitzenklasse
  3. Electronic Arts Battlefield 1 erscheint mit 16er-USK

Kosmobits im Test: Tausch den Spielecontroller gegen einen Mikrocontroller!
Kosmobits im Test
Tausch den Spielecontroller gegen einen Mikrocontroller!
  1. HiFive 1 Entwicklerboard mit freiem RISC-Prozessor verfügbar
  2. Simatic IoT2020 Siemens stellt linuxfähigen Arduino-Klon vor
  3. Calliope Mini Mikrocontroller-Board für deutsche Schüler angekündigt

Gigaset Mobile Dock im Test: Das Smartphone wird DECT-fähig
Gigaset Mobile Dock im Test
Das Smartphone wird DECT-fähig

  1. Re: Mittlerweile habe ich fast schon eine...

    wasabi | 15:00

  2. Re: Erneut das Thema über die Klinkenbuchse

    M.P. | 14:59

  3. Re: Die Logik erschließt sich mir nicht

    david_rieger | 14:58

  4. Re: Bei den heutigen Kinopreisen

    ghostinthemachine | 14:58

  5. Re: Kein Kopfhöreranschluß? Unglaublich..

    7hyrael | 14:57


  1. 15:04

  2. 15:00

  3. 14:04

  4. 13:41

  5. 12:42

  6. 12:02

  7. 11:48

  8. 11:40


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel