• Home
  • Impressum
ComSubVies Creative Content

ComSubVies Creative Content

  • Informatik
  • Kultur
    • Film / Kino
  • Modellbau
  • Sonstiges
  • Urlaub
    • Tauchen
    • Wandern

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:

$ screen -T vt100 /dev/tty.usbserial 115200

Und schon sieht man den Boot-Prozess des Gerätes.

CPU:   S3C2412@200MHz
       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?

# cat /proc/version
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):

# df -h
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:

# lsmod
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_KERNEL_HEADERS_2_6_22=y
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):

diff --git a/scripts/unifdef.c b/scripts/unifdef.c
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):

Linux-Server: Das Administrationshandbuch (Galileo Computing)Linux-Server: Das Administrationshandbuch (Galileo Computing)
Heimnetzwerke - Fritz!box/WLAN/DSL: Der Ratgeber für sichere und schnelle Heimnetzwerke: Fritz!Box - WLAN - DSLHeimnetzwerke - 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 >
Ubuntu GNU/Linux 12.04 LTS: Das umfassende Handbuch, aktuell zu Ubuntu »Precise Pangolin« (Galileo Computing)Ubuntu GNU/Linux 12.04 LTS: Das umfassende Handbuch, aktuell zu Ubuntu »Precise Pangolin« (Galileo Computing)
Be Sociable, Share!
  • Tweet

1 Comment to “Silex SX-560 Embedded WLAN”

  1. 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

    Reply to this comment

Leave a Reply

Hier klicken, um die Antwort abzubrechen.

21. Dez, 2009

Markus Schabel

Informatik, Modellbau

Tags: Embedded Systems, Linux, SX-560, WLAN

Leave a comment

  • <
  • >
  • Letzte Artikel

    • Command & Conquer – Freeware
    • Schneeschuhwanderung auf der Rax
    • Installation eines Git-Hosts
    • Husarentempel
    • Parrot AR.Drone
    • GandALF T-Shirt
    • Solomon Kane
    • Silex SX-560 Embedded WLAN
    • Migration von LVM Volumes
    • Parkinson’s Law
  • Letzte Kommentare

    • Bilal bei Silex SX-560 Embedded WLAN
    • Theo Baysinger bei AVR microtouch Projekt
    • Erik Schwarzfeld bei Urlaub Curaçao – Tag 0
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 2
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 4
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 6
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 5
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 3
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 1
    • Curaçao 2009 | ComSubVies Creative Content bei Urlaub Curaçao – Tag 7
  • Schlagwörter

    AirPower Apple Autopilot AVR Cocoa Cocoa Touch Computerspiele Curaçao Dokumentation Drone Embedded Systems featured Filme Flugshow Git Hubschrauber iPhone iPhone SDK Java Karibik Kino Lanzarote Linux LVM Museen Navigation Neunkirchnerhütte Norwegen NTP Programmieren Rätsel Serien SX-560 T-Shirt Tauchen Touchscreen Trailer UAV Versionskontrolle VHDL Wandern Windows 7 Wissenschaft WLAN Xen
  • Archive

    • Februar 2010 (2)
    • Januar 2010 (5)
    • Dezember 2009 (2)
    • November 2009 (8)
    • Oktober 2009 (7)
    • August 2009 (1)
    • Juli 2009 (26)
    • Juni 2009 (1)
    • Mai 2009 (3)
    • April 2009 (1)
    • März 2009 (2)
    • Februar 2009 (8)
    • Januar 2009 (1)
  • Blogroll

    • Development Blog
    • Documentation
    • Plugins
    • Suggest Ideas
    • Support Forum
    • Themes
    • WordPress Planet

© 2009 ComSubVies Creative Content. All Rights Reserved.

Delicious font by exljbris. Powered by Wordpress. Designed by Woo Themes