DOs and DO NOTs for developing Embedded Systems software

Zum Thema “Was sollte man tun und was nicht, wenn man Software für Embedded Systems entwirft und usitzt?”habe ich mal einen Artikel zusammegestellt. Dieser Artikel ist natürlich subjektiv, ich bin gerne bereit zu diskutieren. Die meisten Aspekte habe ich aber derweil schon aus verschiedenen Onlinequellen bestätigt bekommen.

http://www.final-memory.org/?page_id=2113

Im Prinzip habe ich dort mal zusammengefasst, was ich alles seit der Universität gelernt habe. Teile davon praktisch im Job, viele andere aber auch fortbildungsmäßig aus dem Netz. Im Vordergrund steht vorallem, fiese Fallen von faul programmierten C zu umgehen. Viele der Regeln und Vorschläge sind auch sprachunabhängig und können natürlich auch auf andere Programmiersprachen angewendet werden.

Ich selber habe viele dieser Regeln früher zum Beispiel nicht beherzigt. Wenn ich die Sourcen zu meiner Diplomarbeit ansehe, dann habe ich viele davon eklatant verletzt. Aber irgendwo will man ja auch einen Lerneffekt erkennen.

Als weitergehende Lektüre kann ich auch das “Embedded C Coding Standard” von Michael Barr empfehlen.

Irgendwann schreibe ich vielleicht auch noch einengrößeren zusammenhängenden Artikel oder auch ein kleines Buch. Die Liste kann sicherlich noch erweitert werden.

Welche Libs und Programme sind eigentlich auf dem Wiz installiert?

Obige Frage hat mich mal interessiert und ich habe mir dann ein kurzes Shellskript geschrieben, welches einige Informationen sammelt und diese in eine Textdatei schreibt. Mir geht es dabei vorallem um Elemente der installierten Linuxumgebung und nicht um die sichtbaren GP2X GUI Programme, wie den Flashplayer oder die Spiele.

Gesammelt werden folgende Informationen:

  • Kernelversion
  • Binaries in /usr/bin
  • Erkannte Shared Libraries
  • Erkannte C-headerfiles (von letzteren gibt es keine offiziellen auf dem NAND)

Die Ergebnisse findet ihr im angehängten File: wiz-information.tar.bz2

Abenteuer Firmwareupgrade beim GP2X Wiz

Für den Wiz gibt es nun die ersten quasi-komemrziellen Spiele auf sogenannten ND-Karten. Das sind SD-Karten mit einer DRM-Technologie. Um diese ND-Karten auch verwenden zu können, braucht der Wiz ein Firmwareupgrade auf die Firmwareversion 1.2.1 (Stand 14.2.2010)

Da ich mir natürlich für 17€ besagte Spielekarte bestellt habe (7 Spiele für 17€ ist günstig), wollte ich natürlich auch die neue Firmware aufspielen. Leider erwies sich das als nicht so einfach, wie man es gern hätte.

Problem: ich habe noch die originale Firmware drauf gehabt, bei der sich doch einiges  getan hat. Von der alten Firmware kann man nicht direkt auf die 1.2.1 updaten, sondern muss erst die 1.1.0 Firmware einspielen.

Aber wie wird das Firmwareupgrade beim GP2X Wiz gemacht?

Vorgehensweise um die Firmware einzuspielen:

  1. Inhalt vom NAND-Speicher des GP2X Wiz erstmal sichern
  2. Eine neue SD-Karte sauber formatieren (am besten mit diesem Tool: http://www.sdcard.org/consumers/formatter/)
  3. Die Firmware auf die SD-Karte entpacken. Sonst sollte nichts auf der SD-Karte sein.
  4. R-Taste am Wiz gedrückt halten  und mit der eingelegten SD-Karte den Wiz booten
  5. Der Wiz sollte nun einen Screen “Firmware Upgrade…” zeigen und dann arbeiten
  6. Den Wiz für ca. 15 Minuten laufen lassen, eine rote Fortschrittsanzeige zeigt alles an.
  7. Wenn alles glatt lief, gibt es einen “Please reboot” Screen
  8. Ausprobieren, ob alles geht und ob die Version stimmt (Settings -> Information im Wiz Menu)

Ich musste diesen Ablauf wie gesagt erst für die 1.1.0 Firmware durchführen und anschließend noch einmal für die 1.2.1 Firmware, aber danach lief es. Leider ist in der 1.2.1 immer noch nicht die aktualisierte Version der libSDL dabei, aber immerhin läuft ansonsten alles, was ich bisher ausprobiert habe. Hoffentlich dann auch besagte ND-Karte, auf die ich recht gespannt bin.

Happy Wizzing!

Workaround für Tearing beim GP2X Wiz

Für alle Programme auf dem GP2X Wiz, die SDL benutzen, gibt es jetzt einen softwaremäßigen Workaround um das Problem mit dem Tearing zu fixen.

Dazu lädt man eine gepatchte liBSDL herunter und kopiert das .so File in den Ordner des jeweiligen Programms. Das Tearing verschwindet damit tatsächlich, aber sobald man zum Wiz Menü zurückkehrt, ist der Bildschirm gedreht und nicht mehr wirklich benutzbar. Zumindest tut es das auf meinem Wiz mit Original Firmware. Aber es hat das Tearing bei meinem ersten Testprogramm beseitigt, und vermutlich wird es das auch bei Quadromania tun.

Wenn man mit diesem kleinen Schönheitsfehler leben kann, ist das ein gangbarer Weg. Ich hoffe, daß in ein Firmwareupdate eine entsprechende Version seinen Weg finden wird, so daß man nach einem Update den Fix nicht mehr benötigen wird. Ich werde entsprechend berichten.

Das Update für die libSDL gibt es hier: http://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,23,271