So. Es ist wieder einmal passiert. Ich habe mir Hardware zum Spielen gekauft.
Diesmal: Ein FreeAgent DockStar Network Adapter von Seagate.
Das Schätzchen hat 128MB Ram und 256MB Flash on Board, eine nette ARM CPU, Gigabit-Netzwerk und 4 USB-Ports. Details finden sich zu Hauf im Netz.
Was mich besonders interessiert hat, war die in der CPU vorhandene Crypto-Unit, die sha1, md5 und aes in Hardware berechnen kann.
Linuxkernel
Leider ist es mit der Unterstützung dieser Einheit im offiziellen Kernel noch nicht so wahnsinnig weit – bisher wird das ganze nur rudimentär angesprochen (z.B. kein DMA), so dass es nicht wirklich Spaß macht, das ganze zu nutzen. (1-2MB/s Gewinn)
Etwas mehr verspricht hier ein Kernel des Herstellers – und voilá, GPL-sei-dank gibt es da auch was passendes. Oder naja, etwas das man für passend halten kann.
Vorweg: Ja, ich habe den Kernel letztlich übersetzt bekommen, man darf nur nicht so wahnsinnig sein, und an der config großartig Dinge ändern wollen – weil dann knallt es. Und zwar richtig mit Compiler-Fehlern und Syntax-Errors in den Kernelquellen.
Letztlich habe ich jedenfalls 15MB/sec von einer verschlüsselten USB-Platte lesen können statt 6-7 ohne Hardwareunterstützung.
Details zum Kernel folgen, sobald ich einen stabilen build habe und das dokumentieren kann. Ausserdem will ich die LEDs aus dem Kernel heraus ansprechen können, die GPIO-Konfiguration habe ich im Prinzip bereits.
uBoot – der Bootloader
Damit ich dieses System bequemer booten kann, wollte ich dann einen neuen uBoot bauen.
Die Cross-compiler-chain war ja schon von kernel vorhanden – sollte also alles kein Problem sein. Dachte ich.
Die Konfiguration des DockStar unterscheidet sich leider etwas von der des Sheeva-Plugs. So ist nur die Hälfte des Rams vorhanden, ausserdem sind die beiden LEDs an andere GPIO-Pins angeschlossen.
Kaputtgeflasht
Was mir letztlich das Genick brach war aber ein dummer Fehler: Ich habe das uBoot-Binary direkt in den Flash des DockStar gebrannt – statt des kwb-Images, das die Hardwarekonfiguration enthält.
Letztlich habe ich nun 4 verschiedene Jtag-Adapter hier gehabt, davon zwei selbstgebaute. Der letzte, ein wiggler, funktionierte schließlich – wenn auch nur mit 50kHz statt 500. (Kabellänge)
Folgende Fallen begeneten mir dabei:
- 74HC244 falschrum im Sockel. Gute Heizwirkung, der Chip hats überlebt, mein Zeigefinger auch…
- Kabel zu lang und zu wenig abgeschirmt
- Ein funktionierender DockStar hat das JTAG deaktiviert und ist zum Testen ungeeignet!
Vor allem der letzte Punkt mit dem funktionierenden DockStar hat mich etliche Stunden gekostet. Aber wer rechnet schon damit -.-
Ausblick
Die folgenden Posts werden ausführlich das Wiederbeleben des DockStars, die korrekte Konfiguration des Bootloaders für diese Plattform und die Konfiguration des Kernels enthalten.
Der Bootloader kann hier jedenfalls schon die LED’s ansprechen, dem Kernel werde ich das wohl auch noch beibringen. TODO’s sind aber noch die Konfiguration des Speichers im uBoot.