====== 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}