Silex SX-560 Embedded WLAN
Posted on 21. Dez, 2009 by Markus Schabel in Informatik, Modellbau
Nachdem inzwischen mein SX-560 inklusive Development-Board angekommen ist, habe ich mich heute gleich mal damit spielen müssen.
Der Lieferumfang des Development-Boards ist jedenfalls sehr ausführlich: 3 serielle Kabel, 2 externe Stabantennen, eine externe Stehantenne, eine Netzgerät mit echtem und mit amerikanischem Anschlusskabel sowie einer Software-CD.
Nach erfolgreichem Zusammenbau und erstem Schock, weil die orange Power-On-LED nur kurz nach dem Anstecken aufblinkt und dann ausgeht habe ich mein serielles Kabel am Mac angesteckt und eine Screen-Session darüber gestartet:
Und schon sieht man den Boot-Prozess des Gerätes.
Fclk = 200MHz, Hclk = 100MHz, Pclk = 50MHz
Board: SMDK2412 SDRAM 16bits
DRAM: 16 MB
Flash: 8 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
## Booting image at 00040000 ...
Image Name: Linux Kernel
Created: 2008-05-24 15:47:46 UTC
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 988488 Bytes = 965.3 kB
Load Address: 30008000
Entry Point: 30008000
Verifying Checksum ... OK
Nach kurzen nachschauen im Manual habe ich dann auch gleich das Passwort (admin / access) gefunden – und den hinweis überlesen, das bei älteren Firmware-Versionen root als Benutzer zu verwenden ist. Naja, 3 Versuche später hab ich es dann erfolgreich erraten.
Erster Schritt am eingeloggten System: welche Version hamma denn?
Linux version 2.6.16.11 (bill@localhost.localdomain) (gcc version 3.4.6) #160 Sat May 24 08:47:34 PDT 2008
Dann mal die Überprüfung, wie viel Speicherplatz wir denn eigentlich verwenden (dabei habe ich auch gleich festgestellt, das jffs2 als root-Filesystem verwendet wird):
Filesystem Size Used Available Use% Mounted on
rootfs 6.8M 3.5M 3.2M 52% /
/dev/root 6.8M 3.5M 3.2M 52% /
tmpfs 8.0M 0 8.0M 0% /tmp
tmpfs 248.0k 20.0k 228.0k 8% /var
Hm, nicht viel, sollte aber für’s erste Mal ausreichen. Sodann überprüfe ich einmal, welche Module denn verwendet werden – in der Vermutung, das das sicher teilweise recht spezifische sein werden:
Module Size Used by Tainted: P
sx560_gpio 3432 2
ar6000 173628 0
sdio_s3c2412 16132 0
sdio_busdriver 78984 2 ar6000,sdio_s3c2412
sdio_lib 6656 2 ar6000,sdio_busdriver
Eigentlich sollte ich ja eine aktuelle Version der Firmware installieren, aber das funktioniert irgendwie nicht so wie geplant – es ist zwar möglich, diese via TFTP oder auch über das eigene UpdateIP Programm auf das SX-560 zu transferieren, dort passiert aber genau nichts damit. Ich vermute das ist ein Problem der frühen Version (1.00A scheint das bei mir zu sein, offenbar sind da irgendwelche alten Lagerhallten bei der Bestellung geräumt worden).
Der nächste Schritt ist es, die Tool Chain für das Ding zu laden und zu installieren. Dabei gibt es im wesentlichen 2 verschiedene Dinge und Ergebnisse:
Erzeugen eines neuen Root-Filesystems
Damit habe ich mich noch nicht wirklich sonderlich auseinander gesetzt, weil ich annehme, dass die ohnehin vorhandenen Firmware-Images ganz brauchbar sind. Und auf 8MB Flash lässt sich ja auch nicht sonderlich viel unterbringen. Die dazu benötigten Files findet man jedenfalls hier auf der Silex Homepage, wobei zu beachten ist, das man bei einer aktuellen Version von Buildroot ein paar Anpassungen durchführen muss, die im folgenden Abschnitt erklärt werden. Wenn man sich jedenfalls an die Anleitung in der dortigen Readme hält, bekommt man als Endresultat ein ext2-Image (eventuell sollte man hier also noch etwas umkonfigurieren, um ein JFFS2 Image zu erhalten).
Erzeugen einer Tool-Chain um eigene Programme zu erstellen
Für diese Aufgabe ist auf der Silex Homepage ebenfalls eine Anleitung zu finden, an die man sich weitgehend halten kann. Es waren lediglich zwei Dinge umzukonfigurieren: die Version des empfohlenen Kernels ist nicht mehr in der Auswahlliste vorhanden, da der schon zu verstaubt ist. Ich habe es noch nicht probiert, ob das ganze auch mit einem aktuellen Kernel noch funktioniert (bzw. sich mit dem installierten 2.6.16er verträgt) – insbesondere da ja auch in der Anleitung nicht die aktuelle sondern die vorige Version verwendet wird. Dazu muss man nach dem make menuconfig in der .config die Optione BR2_KERNEL_HEADERS_2_6_22=y einfügen, und den Default-Kernel ändern:
BR2_DEFAULT_KERNEL_HEADERS="2.6.22"
Im Anschluss kann man das ganze Ding kompilieren, wobei er sich da zumindest zweimal dastoßen wird: beim Kernel und bei der Libc. In beiden Fällen betrifft es eine Inkompatibilität der unifdef.c mit der stdio.h, sodass die Datei unifdef.c bei der er da jeweils meckert entsprechend adaptiert werden muss (siehe auch dieser Kernel-Patch):
index 552025e..977e682 100644
--- a/scripts/unifdef.c
+++ b/scripts/unifdef.c
@@ -206,7 +206,7 @@ static void done(void);
static void error(const char *);
static int findsym(const char *);
static void flushline(bool);
-static Linetype getline(void);
+static Linetype parseline(void);
static Linetype ifeval(const char **);
static void ignoreoff(void);
static void ignoreon(void);
@@ -512,7 +512,7 @@ process(void)
for (;;) {
linenum++;
- lineval = getline();
+ lineval = parseline();
trans_table[ifstate[depth]][lineval]();
debug("process %s -> %s depth %d",
linetype_name[lineval],
@@ -526,7 +526,7 @@ process(void)
* help from skipcomment().
*/
static Linetype
-getline(void)
+parseline(void)
{
const char *cp;
int cursym;
Wenn das alles erfolgreich funktioniert hat, findet man im Verzeichnis build_arm/staging_dir/usr/bin/ den Cross-Compiler arm-linux-gcc sowie weitere Tools. Damit kann dann das erste Programm erstellt, kompiliert und mittels TFTP auf den SX-560 kopiert werden.
Verwandte Literatur (amazon):
Heimnetzwerke - Fritz!box/WLAN/DSL: Der Ratgeber für sichere und schnelle Heimnetzwerke: Fritz!Box - WLAN - DSLDrahtlose Heim-Netzwerke sind keine Hexerei! Egal ob Sie einfach den Kabelsalat satt haben oder mehrere Familienmitglieder gemeinsam das Internet entd... Read More >






















Bilal
Jan 20th, 2012
Hallo,
Ich versuche mich auch gerade bei dem Silex 560, und hänge mit dem Buildroot einwenig fest, könnte ich mit ihnen in Kontakt treten, für fragen? Sie würden mir sehr weiter helfen.
Lg