====== Buildroot auf dem Zoom-Board: Bootloader, Kernel, Root-FS ======
=== Abhängigkeiten ====================================
$ sudo apt-get install binutils build-essential g++ make cmake git libncurses5-dev unzip screen python
=== Arbeitsverzeichnis einrichten ====================================
$ screen -S zoom
$ mkdir zoom/working/directory
$ cd zoom/working/directory
$ export ZOOMDIR=$(pwd)
$ echo $ZOOMDIR
=== DaVinci PSP herunterladen und entpacken =======================
$ cd $ZOOMDIR
$ wget -c http://software-dl.ti.com/dsps/dsps_public_sw/psp/LinuxPSP/DaVinci_03_22/03_22_00_02//exports/DaVinci-PSP-SDK-03.22.00.02.tgz
$ tar xf DaVinci-PSP-SDK-03.22.00.02.tgz
$ tar xf DaVinci-PSP-SDK-03.22.00.02/src/u-boot/u-boot-03.22.00.02.tar.gz
$ tar xf DaVinci-PSP-SDK-03.22.00.02/src/kernel/linux-03.22.00.02.tar.gz
$ wget -c http://processors.wiki.ti.com/images/a/ab/Create-sdcard-omapl13x.zip
$ unzip Create-sdcard-omapl13x.zip
=== Root-Filesystem ====================================
$ cd $ZOOMDIR
$ git clone git://git.buildroot.net/buildroot
$ cd buildroot
$ git checkout -b zoom 2014.05
Folgendes Konfigurationsfile in den Ordner //configs// kopieren: [[.:buildroot_zoom_defconfig | zoom_defconfig]].
$ make zoom_defconfig
$ time make source
$ time make
$ export PATH=$ZOOMDIR/buildroot/output/host/usr/bin:$PATH
$ arm-buildroot-linux-gnueabi-gcc -v
gcc version 4.8.2 (Buildroot 2014.05)
Das Herunterladen der Source-Files mit //make source// dauert ca. 7 min (je nach Internetverbindung) und der Build selbst mit //make// dauert ungefär eine Stunde für diese Konfiguration.
=== U-Boot ====================================
$ cd $ZOOMDIR/uboot-03.22.00.02
$ export CROSS_COMPILE=arm-buildroot-linux-gnueabi-
$ make distclean
$ make da850evm_config
$ make all
$ export PATH=$ZOOMDIR/uboot-03.22.00.02/tools:$PATH
$ mkimage -V
mkimage version 2012.04.01
$ mkimage -s -n /dev/null -T aisimage -e 0x80000000 -d spl/u-boot-spl.bin spl/u-boot-spl.ais
$ nano boot.cmd
Folgenden Inhalt einfügen:
setenv bootargs 'mem=32M console=ttyS2,115200n8 root=/dev/mmcblk0p2 ro rootwait ip=off'
setenv bootcmd 'mmc rescan 0;fatload mmc 0 0xc0700000 uImage; bootm c0700000;'
run bootcmd
Speichern mit Ctrl+X, Y.
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Execute Boot Script' -d boot.cmd boot.scr
=== Kernel ====================================
$ cd $ZOOMDIR/linux-03.22.00.02
$ export ARCH=arm
$ make distclean
$ make da850_omapl138_defconfig
$ make menuconfig
Folgende Einstellungen müssen gemacht werden:
* Device Drivers
* GPIO Support
* [*] /sys/class/gpio/... (sysfs interface)
* Device Drivers
* Generic Driver Options
* [*] Maintain a devtmpfs filesystem to mount at /dev
* [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
$ make uImage
$ make modules
=== SD Karte ====================================
Neues Terminal starten und folgenden Befehl ausführen:
$ tail -f /var/log/syslog
SD Karte anschliessen und im Log den Name des Device-Files herauslesen (z.B. sdb).
ACHTUNG: Falls das falsche Device angegeben wird, können Daten verloren gehen.
$ cd $ZOOMDIR
$ sudo ./create-sdcard-omapl13x.sh /dev/sdb
$ sudo uboot-03.22.00.02/tools/uflash/uflash -d /dev/sdb -b uboot-03.22.00.02/u-boot.bin -p OMAPL138 -vv
$ sync
$ mkdir -p sd/{boot,rootfs}
$ sudo mount /dev/sdb1 sd/boot
$ sudo mount /dev/sdb2 sd/rootfs
$ sudo cp linux-03.22.00.02/arch/arm/boot/uImage sd/boot/
$ sudo cp uboot-03.22.00.02/boot.scr sd/boot/
$ cd sd/rootfs
$ sudo tar xjf $ZOOMDIR/buildroot/output/images/rootfs.tar.bz2
$ sudo nano etc/network/interfaces
eth0 Konfiguration einfügen:
auto eth0
iface eth0 inet dhcp
Speichern mit Ctrl+X, Y.
$ sudo nano etc/profile
Folgende Zeile irgendwo am Anfang einfügen:
export TSLIB_TSDEVICE=/dev/input/event1
Speichern mit Ctrl+X, Y.
$ sudo nano etc/fstab
Die Datei solte, wie folgt, aussehen:
# /etc/fstab: static file system information.
#
#
/dev/root / ext2 ro,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /media/ram tmpfs mode=1777 0 0
tmpfs /root tmpfs mode=1777 0 0
tmpfs /var tmpfs mode=1777 0 0
Speichern mit Ctrl+X, Y.
$ sudo nano etc/inittab
Die Datei solte, wie folgt, aussehen:
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: :::
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system
null::sysinit:/bin/mount -t proc proc /proc
#null::sysinit:/bin/mount -o remount,rw / # REMOUNT_ROOTFS_RW
null::sysinit:/bin/mkdir -p /dev/pts
null::sysinit:/bin/mkdir -p /dev/shm
null::sysinit:/bin/mkdir -p /media/ram
null::sysinit:/bin/mount -a
null::sysinit:/bin/mkdir -p /tmp/etc
null::sysinit:/bin/mkdir -p /var/run
null::sysinit:/bin/mkdir -p /var/lock
null::sysinit:/bin/mkdir -p /var/empty
null::sysinit:/bin/mkdir -p /var/log
null::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# Put a getty on the serial port
ttyS2::respawn:/sbin/getty -L ttyS2 115200 vt100 # GENERIC_SERIAL
# Stuff to do for the 3-finger salute
::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
null::shutdown:/etc/init.d/rcK
null::shutdown:/bin/umount -a -r
null::shutdown:/sbin/swapoff -a
Speichern mit Ctrl+X, Y.
$ cd $ZOOMDIR/linux-03.22.00.02
$ sudo -E make modules_install INSTALL_MOD_PATH=$ZOOMDIR/sd/rootfs/
$ sudo rm $ZOOMDIR/sd/rootfs/lib/modules/3.3.0/{build,source}
$ sync
$ sudo umount $ZOOMDIR/sd/{boot,rootfs}