Industrial and Home Automation WS2011/Aufgabenorientierte Navigation für den Roboter "Spykee"/Firmware

Aus Verteilte Systeme - Wiki
Wechseln zu: Navigation, Suche

Firmware

Die Firmware von Spykee besteht aus einem Linux-Kernel, der per UBoot geladen wird und dem Rootfilesystem. Beim Flashen werden diese auf einem MTD (Memory Technology Device) geladen. Das Rootfilesystem ist Read-Only, weshalb eine Konfigurationspartition benötigt wird, um Einstellungen wie z.B. WLAN-Zugangsdaten abspeichern zu können.

Blocks des MTDs

MTD-Block-Nr. Adressbereich Größe in Pages Zugriff Funktion Bemerkung
0 0x00000000-0x000e0000 14 Read-Only Linuxkernel Wird von UBoot geladen und ausgeführt. Die Partition wird nicht gemounted.
1 0x000e0000-0x00390000 25 Read-Only Rootfilesystem Das im SquashFS-Format vorliegende Rootfilesystem wird Read-Only gemounted. Um Einstellungen verändern zu können, wird mit dem Programm cfg auf MTD-Block 2 zugegriffen.
2 0x00390000-0x003a0000 1 Read-Write Einstellungen Dieser Block wird nicht gemounted. Das Programm cfg greift direkt auf den Block zu, um Einstellungen zu speichern.
3 0x003a0000-0x003b0000 1 Read-Write Linux-Mankonf
4 0x003b0000-0x003c0000 1 Read-Write UBoot-Einstellungen Boot-Einstellungen
5 0x003c0000-0x00400000 4 Read-Only UBoot-Image

Aufbau eines Firmwareimages

Da das Rootfilesystem Read-Only im SquashFS-Format vorliegt, müssen für Programmerweiterungen des Spykees entsprechende Firmwareimages gebaut werden. Ein Firmwareimage ist eine Tar-Datei (mit der Dateiendung .bin), die wie folgt aufgebaut ist:

firmware/
├── pre-update.sh
├── post-update.sh
├── rootfs
└── uImage

Dabei ist das Vorhandensein jeder Datei optional. Der Flashvorgang sieht dann wie folgt aus:

  1. Ausführen von pre-update.sh (In der Regel nicht vorhanden)
  2. Flashen des UBoot-kompatiblen Kernels (uImage)
  3. Flashen des Rootfilesystems
  4. Ausführen von post-update.sh (In der Regel werden mit cfg set die Grundeinstellungen gesetzt)

Das Firmwareimage wird über die Steuerungssoftware des Spykees übertragen.

Fertige Firmware-Images

Auf spykee.duskofsolace.com stehen bereits fertige Firmware-Images bereit. Für dieses Projekt wurde Spykee mit folgender Version geflasht: Telnet, NFS, UnionFs and USB Mount Firmware v1.6.66
Per Telnet kann direkt auf die Shell von Spykee zugegriffen werden (Username:root, Passwort:marvell). Auf den Entwicklerrechnern kann zudem ein Ordner, den Spykee per NFS mountet, genutzt werden, um eigene Programme zu testen.

Vor der Nutzung dieses Firmware-Images wurde eine eigene Firmware erstellt, die aber nicht bootet. Dies führte dazu, dass die original Firmware über die serielle Schnittstelle wiederhergestellt werden musste.