User Tools

Site Tools


projects:xnet:crosscompile

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

projects:xnet:crosscompile [2015/01/11 21:52]
jann [Xnet VM]
projects:xnet:crosscompile [2015/05/14 12:24] (current)
jann [Codevergleich]
Line 12: Line 12:
  
 ===== Xnet VM ===== ===== Xnet VM =====
-Unter "jann@xnet:​~/​xnet$" liegt alles zu Xnet und unter "jann@xnet:​~/​openwrt$" habe ich die Cross-Compile Umgebung von OpenWRT ​uebersetzt.+==== 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.BRaspberry PI)
  
-Der alte Code liegt hier+  * jann@xnet:~/xnet$ (Alles zu Xnet) 
-  * jann@xnet:​~/​xnet/​oldcode$+    * 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$)
  
-Der alte Code mit der Modifikation fuer OpenWRT/​Mipsel liegt hier: +==== Codevergleich ==== 
-  ​* ​jann@xnet:~/​xnet/​oldcode-mipsel$+Die Aenderungen damals waren minimal. Ein Diff im Homeverzeichnis (jann@xnet:​~$) zeigt dies auf:
  
- 
-Ein Diff zeigt die Unterschiede:​ 
 <​code>​ <​code>​
-diff -Naur xnet/​oldcode/​c/​ xnet/​oldcode-mipsel/​xnet138-mipsel/​c/​ |grep^+|grep -v Last|less+diff -Naur xnet/​oldcode/​c/​ xnet/​oldcode-mipsel/​xnet138-mipsel/​c/​ |grep +|grep -v Last|less
 </​code>​ </​code>​
  
Line 32: Line 38:
   * mylib/​strlib.c <- bin mir nicht sicher, ob die Aenderung hier relevant ist (vermutlich nicht)   * mylib/​strlib.c <- bin mir nicht sicher, ob die Aenderung hier relevant ist (vermutlich nicht)
  
-Im Verzeichnis jann@xnet:​~/​xnet/​compile$ habe ich Unterverzeichnisse fuer uns eingerichtet. Ich hab mir zum Beispiel den aktuellen Source aus jann@xnet:​~/​xnet/​xnet-source/​oldcode-mipsel.tar.gz entpacket und in +==== Uebersetzen des neuen Codes ==== 
-jann@xnet:​~/​xnet/​compile/​jann/delivermit "make -f ../​makefile"​ erfolgreich uebersetzt.+<​code>​ 
 +jann@xnet:​~/​xnet/​compile/​jann$
  
-Der alte Xnetsource compiliert nicht mehr sauber durch, da der GCC4 etwas penibler istDas ist fuer uns aber auch nicht notwendig, da wir nur am neuen Code interessiert sind.+unzip ../​../​xnet-source/​newcode.zip 
 +cd deliver 
 +make -f ../​makefile 
 +</​code>​
  
-Zum Test hab ich ihn trotzdem mal entpackt und im Makefile "​makefile.linuxmips"​ den Compiler in der ersten Zeile angepasst:+==== 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:
  
 <​code>​ <​code>​
-CC =+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 /​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
 </​code>​ </​code>​
  
-Er ist dann irgendwann ueber appl/​mac/​echodrv gestolpert...+Er ist dann irgendwann ueber appl/​mac/​echodrv gestolpert. 
 + 
 +==== Anpassung fuer Raspberry PI ==== 
 +Den Crosscompiler fuer Raspberry PI habe ich ueber OpenWRT Buildroot erstellen koennenDazu 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: 
 + 
 +<​code>​ 
 +jann@xnet:​~/​xnet/​newcode$ grep -r ARM  * 
 +</​code>​ 
 + 
 +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$ 
 + 
 +Ich selber habe keinen Raspberry PI, kann aber im HAMNET auf einen Raspberry PI zugreifen und ein Binary in /tmp ausprobieren. Xnet sollte am besten "​statisch gelinkt"​ sein. Dann ist zwar das Binary groesser, aber  
 + 
 +Bei Bedarf kann ich einen Raspberry PI fuer diesen Zweck zur Verfuegung stellen. 
 + 
 +==== Anpassung fuer OpenWRT in Mikrotik Metarouter (z.B. RB433AH) ==== 
 +Den Crosscompiler fuer MIPS basierte Mikrotikgeraete habe ich ueber OpenWRT Buildroot erstellen koennen. Dazu habe ich als Target System "​Atheros AR7xxx/​AR9xxx"​ gewaehlt.
  
-Nunja, zwischen alt und neu liegen >8 Jahre und Jimy hat im neuen Code auch schon Support ​fuer den DLC7 eingebaut (ARM-Plattform)Wir hatten im damals den modifizierten Code ueberlassen und er hatte es dann in seine Compileumgebung einfliessen lassenSo hatten wir das Thema los, dass wir bei jedem Update selber compilieren muessenIch weiss nicht, in wie weit das jetzt im neuen Code zu sehen ist.+Der GCC fuer die Plattform ​liegt hier: 
 +  * jann@xnet:​~/​openwrt/​staging_dir/​toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin$
  
-Unser Ziel ist es jetzt den Code fuer MIPS und ARM anzupassen. Der Code soll also auf dem Raspberry PI und in einem OpenWRT ​(Metarouter von Mikrotik) auf MIPS-Basis laufen. Ob wir dafuer alle Werkzeuge auf dem Rechner haben, wird sich zeigen. Es ist auf alle Faelle der richtige Anfang.+Ich habe einen OpenWRT-Metarouter ​mit dem Image von Mikrotik ​(http://​wiki.mikrotik.com/​wiki/​Manual:​Metarouter#​Importing_image -> MIPS Image) auf einem Mikrotik CRS125-24G-1S-2HnD gestartetFunktioniert :)
  
-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).+Ich habe auch mal probiert das Image selber zu bauen (http://​wiki.mikrotik.com/​wiki/​Manual:​Metarouter#​Building_your_own_OpenWRT_image), ​aber die Revision 29684 laesst sich mit einem aktuellen Debian/​Stable nicht mehr compilieren. Fuer eine neuere Versionen von OpenWRT gibt es auch einen Userpatch (http://​forum.mikrotik.com/​viewtopic.php?​f=15&​t=75849#​p403419), aber auch diese Revision laesst sich nicht mehr compilieren.
  
-Falls Rootrechte notwendig sindbitte Bescheidgeben.+Ich erhoffte mir davon einen Crosscompiler von genau der OpenWRT-Version zu bauen, die auch als Metarouter dann eingesetzt wird. Ich denke aber, dass ein "​statisch gelinktes"​ Binary (mit dem Crosscompiler von der aktuellen OpenWRT Version gebaut) auch auf einem alten OpenWRT noch laeuffaehig ist. Falls dies nicht der Fall istwuerde ich sogar nochmal ein altes Debian ausgraben und damit einen Uebersetzungsversuch starten...
  
-Es freu mich, dass wir hier das Thema vielleicht auch noch voranbringen koennen!+Einen Metarouter mit OpenWRT kann ich bei Bedarf fuer diesen Zweck zur Verfuegung stellen.
  
-Danke!+==== Root ==== 
 +Falls Rootrechte auf der Xnet-VM notwendig sind, bitte Bescheidgeben.
  
-73,+==== Ausblick ==== 
 +Es wuerde mich freuenwenn wir Xnet auf den beiden genannten Plattformen zum laufen bringen wuerden! Die Nachfrage scheint da zu sein. Das sagen mir die haeufigen Anfragen...
  
-Jann+Vielen Dank fuers Mitwirken! 73, Jann
projects/xnet/crosscompile.1421009546.txt.gz · Last modified: 2015/01/11 21:52 by jann