MIPS Development


Die Software für den GL.Inet selber kompilieren

Download Debian

Dies ist das Betriebssystem, auf dem die cross kompilierung stattfinden wird. Der folgende Link kann sich ändern, sobald eine neue Version erscheint.

Download QEmu

Mit dieser Software wird ein x86 Emuliert. Von Vorteil ist, dass diese Software keine Adminrechte benötigt.

Genauso kann man auch VirtualBox verwenden. VirtualBox kompiliert den Code um einiges schneller.

Ein paar Infos

OpenWrt source repository

Patch für ältere Versionen

Basis Pakete

Ich gehe davon aus, dass nun ein bereits funktionierendes Debian vorhanden ist. Ansonsten können die weiteren Schritte nicht erfolgen.

Pakete zum installieren:
apt-get -y install ssh mc joe
apt-get -y install subversion build-essential git-core libncurses5-dev zlib1g-dev gawk git
apt-get -y install flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip

Benutzerwechsel

Nun nicht mehr als root weiterarbeiten.

Daten vom repository holen:
git clone git://git.openwrt.org/openwrt.git
cd openwrt
scripts/feeds update -a
scripts/feeds install -a

Konfigurieren des Kernels

Das konfigurieren der eigenen Distribution ist viel Arbeit. Vor allem dauert es extrem lange, bis man alle Bugs (Käfer) draussen hat. Es ist einfacher das fertige "config" File hier herunterzuladen und dann das bereits vorhandene .config unkonfigurierte zu ersetzen sowie das .config.old.

cp /mein/quellpfad/config /mein/zielpfad/.config
cp /mein/quellpfad/config /mein/zielpfad/.config.old

Nun kann man das config File kontrollieren und evtl. noch weitere Korrekturen anbringen.
make menuconfig

Beispielfoto:
menuconfig_01.png

Achtung!!! Das kompilieren dauert einige Stunden bei einer umfassenden konfigurierten Distribution!

Normal kompilieren:
make

Multi Thread (empfohlen):
make -j 5

Debugging (falls etwas nicht funktioniert):
make V=s

Nach der kompilierung

Nun hat man das Basissystem erhalten, das man in den FLASH Speicher vom GL.Inet speichern kann.
cd /tmp/
wget http://URL_zum_herunterladen/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-factory.bin
mtd -r write /tmp/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-factory.bin firmware

Das Gerät macht danach einen Reboot.

Ist der Linux Embedded Computer neu gestartet, kann man sich wie folgt einloggen: Login mit telnet: 192.168.1.1 Port 23

Nun das Passwort setzen: Damit alle Geräte das gleiche Passwort haben wird folgendes verwendet: winterthur

Nun ein Update des Systems machen:
cd /tmp/
wget http://URL_zum_herunterladen/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-sysupgrade.bin
sysupgrade -v /tmp/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-sysupgrade.bin

Sehr Wichtig!!!
Die neu kompilierte Distribution sollte nicht mit anderen Distributionen gemischt werden. Deshalb muss man nun auch seine eigene Distribution im Gerät eintragen, von wo es die Softwarepakete holen soll.

# Version vom: 18. Januar 2015
# ----------------------------
# base
echo "src/gz base http://URL_zum_herunterladen/ar71xx/packages/base/" >>/etc/opkg.conf
# luci
echo "src/gz luci http://URL_zum_herunterladen/ar71xx/packages/luci/" >>/etc/opkg.conf
# packages
echo "src/gz packages http://URL_zum_herunterladen/ar71xx/packages/packages/" >>/etc/opkg.conf
# routing
echo "src/gz routing http://URL_zum_herunterladen/ar71xx/packages/routing/" >>/etc/opkg.conf
# System
echo "dest root /" >>/etc/opkg.conf
echo "dest ram /tmp" >>/etc/opkg.conf
echo "lists_dir ext /var/opkg-lists" >>/etc/opkg.conf
echo "option overlay_root /overlay" >>/etc/opkg.conf

Crosscompile - C Programmieren

Erstellen von einem C File:
// ****************
// HalloWelt.c
//*****************

#include <stdio.h>

int main(void)
  {
  printf("Hallo Welt\r\n");
  return 0;
  }

Erstellen von einem Makefile:

# Kompilieren von: "Hallo Welt"
hallowelt: hallowelt.o
    $(CC) $(LDFLAGS) hallowelt.o -o hallowelt

hallowelt.o: hallowelt.c
    $(CC) $(CFLAGS) -c hallowelt.c

# Aufraeumen
clean:
    rm *.o hallowelt

Erstellen von einem Bash Skript (compile.sh) das alle benötigten Umgebungsvariabeln zusammenstellt:
#!/bin/bash
PFAD=/home/user/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2
PATH=/$PFAD/bin/:$PATH

make clean
make CC=mips-openwrt-linux-gcc STAGING_DIR=$PFAD

Sollte PFAD nicht korrekt sein, dann anpassen (wird bei neueren Version vorkommen).

Dann den kompiliervorgang ausführen mit:
bash /home/user/compile.sh

Nun das Programm auf das Gerät kopieren und ausführen.

-- DanielSchwab - 24 May 2015
Topic attachments
I Attachment Action Size Date Who Comment
configEXT config manage 177 K 24 May 2015 - 11:52 DanielSchwab  
menuconfig_01.pngpng menuconfig_01.png manage 64 K 24 May 2015 - 11:55 DanielSchwab  
qemu_2.2.0_win32.7z7z qemu_2.2.0_win32.7z manage 17 MB 24 May 2015 - 11:44 DanielSchwab  
Topic revision: r4 - 26 Dec 2016, DanielSchwab
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback