NGW100
Die genannten IP-Adressen beziehen sich mit 192.168.57.1 auf den ngw100 (Atmel AVR32) und mit 192.168.57.11 auf den Development-Host.
Pfade sind entsprechend der eigenen Umgebung anzupassen.
u-boot
An der u-boot-console sind die Befehle 'help' und 'printenv' sehr hilfreich.
Mit folgenden Befehlen kann man die Umgebungsvariablen an seine Bedürfnisse anpassen und speichern. z.B.:
UBoot> set ipaddr 192.168.57.1
UBoot> set serverip 192.168.57.11
UBoot> set tftpip 192.168.57.11
UBoot> saveenv
UBoot> boot
Mit folgendem Befehl kann man eigenen selbstgebauten Kernel ohne Gefahr testen. (Dieser muss dafür im tftproot des Dev-Hosts liegen.)
UBoot> set bootcmd 'set ipaddr 192.168.57.1;tftp 0x10200000 uImage;bootm'
UBoot> boot
rootfs per tftp flashen
Das rootfs-Image (ngw_jffs2_root.img) auf den tftp-Server legen. (z.B. von atmel beta-ware)
(Statt die Dateigrösse direkt anzugeben kann man auch $(filesize) versuchen, das funktioniert jedenfalls
auf einem Gumstix, auf dem ngw100 habe ich das noch nicht getestet.)
Uboot> protect off 0x20000 0x7EFFFF
Uboot> erase 0x20000 0x7EFFFF
Uboot> set ipaddr 192.168.57.1; tftp 0x90000000 ngw_jffs2_root.img
Bytes transferred = 6553600 (640000 hex)
Uboot> cp.b 0x90000000 0x20000 0x640000
Copy to Flash... done
Uboot> protect on all
Uboot> boot
/usr flashen
[ngw]$ scp dev-host:/home/tftproot/ngw_jffs2_usr.img /tmp
[ngw]$ /etc/init.d/S90reboot # alle Prozesse aus /usr beenden und /usr umounten, vorher ggf. noch flash_eraseall nach /tmp kopieren
[ngw]$ flash_eraseall /dev/mtd3
[ngw]$ dd if=/tmp/ngw_jffs2_usr.img of=/dev/mtd3 bs=1056
scp nachrüsten
Das
scp Binary für den ngw100 herunterladen und
nach /usr/bin auf den ngw100 kopieren. Anschliessend noch die Rechte anpassen:
[ngw]$ chmod 0755 /usr/bin/scp
nfs mount
[ngw]$ mount -t nfs -o nfsvers=2,nolock 192.168.57.11:/home/share/upload /mnt
SD-Karte als Mass-Storage
[ngw]$ umount /dev/mmcblkp01
[ngw]$ modprobe atmel-mci
[ngw]$ modprobe mmc_block
[ngw]$ modprobe g_file_storage file=/dev/mmcblk0p1 removable=1
jffs2 images erstellen
Das "manuelle" Erstellen der Cross-Toolchain, des Dateisystembaumes und Übersetzen der Pakete ist inzwischen
nicht mehr nötig, da einem das
AVR32-buildroot diese Arbeit abnimmt.
Die folgenden Informationen sind hier nur noch aus "historischen" Gründen:
rootfs
$ mkfs.jffs2 --output=/home/tftproot/atngw100_root.img --root=/home/$USER/avr32/target_root --big-endian --pagesize=4096 --eraseblock=65536
/usr
$ mkfs.jffs2 --output=/home/tftproot/atngw100_usr.img --root=/home/$USER/avr32/target_usr --big-endian --no-cleanmarkers --pagesize=1056 --eraseblock=8448
/etc/profile
Eine einfache profile-Datei, um ein paar Kleinigkeiten beim Login zu setzen.
# /etc/profile
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
if [ "$PS1" ]; then
if [ "`id -u`" -eq 0 ]; then
export PS1='[root]# '
else
export PS1='$ '
fi
alias ls='ls --color=auto'
alias ll='ls -lAh'
fi
buildroot-avr32-v2.1.0
Wenn man noch den "alten" (1.1.4-at0) Orginal-Bootloader installiert hat, muss man das Bootkommando anpassen:
UBoot> setenv bootcmd 'fsload 0x90300000 /boot/uImage; bootm'
UBoot> saveenv
Um Busybox zu konfigurieren:
$ make busybox-menuconfig
Eine von mir leicht angepasste Version des
buildroot-avr32-v2.1.0 von Atmel.
Änderungen:
- iproute2 zusätzlich ausgewählt und mit patches von openwrt versehen
- iptables mit patches versehen (l7, ipp2p, imq)
- kernel mit patches versehen (div. netfilter, 2.6.23.17)
- alle busybox patches zu Version 1.7.2 hinzugefügt und busybox 1.7.5 als vorausgewälte Alternative
- ebtables hinzugefügt
- verschiedene zusätzliche Kernel-Module z.B.: für ebtables und tc