User Tools

Site Tools


projects:xnet:crosscompile

This is an old revision of the document!


Hintergrund

Im Jahr 2005 haben Ralf, DL5RB, Tobi, DG3THX, Thomas, DL9SAU und ich (Jann, DG8NGN) den Code von Xnet (http://swiss-artg.ch/xnet/beta) fuer die Plattform Mipsel (Linksys WRT54) angepasst und crosscompiliert. Ein kleiner Teil von Xnet ist in Assembler geschrieben und muss jeweils haendisch angepasst werden.

Die Aenderungen sind in den Code zurueckgeflossen, so dass Jimy (Autor von Xnet) die Aenderungen in seiner Uebersetzungsumgebung einbauen konnte und wir nicht jede neue Version selbst wieder uebersetzen mussten.

In den letzten Jahren wurde ich immer wieder nach Xnet fuer den Raspberry PI (http://www.raspberrypi.org) oder Mikrotik Metarouter mit OpenWRT (http://wiki.mikrotik.com/wiki/Manual:Metarouter) gefragt. Ich hatte immer abgewunken, da ich lange Zeit nicht den aktuellen Code von Xnet hatte. Vor einiger Zeit hat mir dann Jimy den aktuellen Code wieder zukommen lassen, so dass es nun Zeit wird Xnet fuer die genannten Plattformen zu uebersetzen.

Aktueller Stand

Zum Jahreswechsel hatte ich am Chaos Communication Congress (http://events.ccc.de/congress/2014/wiki/Main_Page) zusammen mit Thomas, DL9SAU, mal wieder die Gelegenheit unser altes Werk durchzuforsten und aufzuarbeiten.

Mittlerweile habe ich an DB0FHN eine neue virtuelle Maschine installiert und alles Notwendige bereitgestellt. Nun ist dieser Text entstanden, damit ich Mitstreiter fuer die Crosscompilesession finde und sie auf diese Seite leiten kann :D Nun, hier seid ihr ;)

Xnet VM

Verzeichnisse / Dateien

  • jann@xnet:~/openwrt$ (OpenWRT Code Anfang 2015 + Toolchain)
    • jann@xnet:~/openwrt/staging_dir/toolchain-mipsel_mips32_gcc-4.8-linaro_uClibc-0.9.33.2/bin$ (Crosscompiler fuer Mipsel z.B. Linksys WRT54)
    • jann@xnet:~/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin$ (Crosscompiler fuer Mips z.B. OpenWRT in Metarouter von Mikrotik RB433AH)
    • jann@xnet:~/openwrt/staging_dir/toolchain-arm_arm1176jzf-s+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin$ (Crosscompiler fuer ARM z.B. Raspberry PI)
  • jann@xnet:~/xnet$ (Alles zu Xnet)
    • jann@xnet:~/xnet/xnet-source$ (ZIP oder TAR.GZ Archive vom “Xnetcode 2005”, “Xnetcode 2005 modifiziert fuer WRT54/Mipsel” und “Xnetcode aktuell”)
    • jann@xnet:~/xnet/oldcode$ (“Xnetcode 2005” entpackt)
    • jann@xnet:~/xnet/oldcode-mipsel$ (“Xnetcode 2005 modifiziert fuer WRT54/Mipsel” entpackt)
    • jann@xnet:~/xnet/newcode$ (“Xnetcode aktuell” entpackt)
    • jann@xnet:~/xnet/compile$ (Hier gibt es Unterverzeichnisse zum “Basteln” mit dem Vornamen der “Bastler”, z.B. jann@xnet:~/xnet/compile/jann$)

Codevergleich

Die Aenderungen damals waren minimal. Ein Diff im Homeverzeichnis (jann@xnet:~$) zeigt dies auf:

diff -Naur xnet/oldcode/c/ xnet/oldcode-mipsel/xnet138-mipsel/c/ |grep^+|grep -v Last|less

Da es nicht zu 100% die gleiche Version ist, gibt es ein paar Differenzen, die nicht weiter betrachtet werden muessen. Die wichtigen Aenderungen finden wir hier:

  • appl/lib/prolib.c
  • appl/pc/system.c
  • appl/unix/ummips.S (zusaetzliche Datei von Ralf, DL5RB)
  • mylib/strlib.c ← bin mir nicht sicher, ob die Aenderung hier relevant ist (vermutlich nicht)

Uebersetzen des neuen Codes

jann@xnet:~/xnet/compile/jann$

unzip ../../xnet-source/newcode.zip
cd deliver
make -f ../makefile

Uebersetzen des alten Codes

Der alte Xnetsource compiliert nicht mehr sauber durch, da der GCC4 etwas penibler ist. Das ist fuer uns aber auch nicht notwendig, da wir nur am neuen Code interessiert sind. Einen Test hab ich trotzdem mal gemacht:

jann@xnet:~/xnet/compile/jann$

tar xvfz ../../xnet-source/oldcode-mipsel.tar.gz
cd xnet138-mipsel
vi  makefile.linuxmips <- CC =
/home/jann/openwrt/staging_dir/toolchain-mipsel_mips32_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-gcc
make -f makefile.linuxmips

Er ist dann irgendwann ueber appl/mac/echodrv gestolpert.

Anpassung fuer Raspberry PI

Den Crosscompiler fuer Raspberry PI habe ich ueber OpenWRT Buildroot erstellen koennen. Dazu habe ich als Target System “Broadcom BCM2708/BCM2835” gewaehlt.

Jimy hat im neuen Code bereits Unterstuetzung fuer eine andere ARM-Plattform, den DLC7 (http://nt-g.de), integriert. Man merkt das sehr deutlich so:

jann@xnet:~/xnet/newcode$ grep -r ARM  *

Zwischen dem alten und dem neuen Code liegen nun knapp 10 Jahre. Ich kenne Jimys Konzept zum Uebersetzen der einzelnen Plattformen nicht… Ich weiss daher nicht, wie man am besten die Unterstuezung fuer den Raspberry PI einbaut.

Der GCC fuer die Plattform liegt hier

  • jann@xnet:~/openwrt/staging_dir/toolchain-arm_arm1176jzf-s+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin$

Anpassung fuer OpenWRT in Mikrotik Metarouter (z.B. RB433AH)

- statisch compilieren

Ich werde mir zunaechst mit OpenWRT-Metarouter experimentieren. Einen Raspberry PI habe ich nicht (koennte einen Test aber irgendwo auf einem PI im HAMNET machen).

Falls Rootrechte notwendig sind, bitte Bescheidgeben.

Es freu mich, dass wir hier das Thema vielleicht auch noch voranbringen koennen!

Danke!

73,

Jann

projects/xnet/crosscompile.1421012425.txt.gz · Last modified: 2015/01/11 22:40 by jann