A20 Olimex Olinuxino Micro

Das Board wurde am 6.10.2014 bei Mouser bestellt.

Inhalt dieser Seite:

Allgemeines

Links zum Board:

Laut sunxi kann auch der Mainline kernel benutzt werden, siehe http://linux-sunxi.org/Olimex_A20-OLinuXino-Micro. Hab ich noch nicht ausprobiert.

Was schon funktioniert:
  • Bauen des Sunxi-Kernel mit der ARM-Toolchain aus der Ubuntu-Distri (Kernel-Config CONFIG_FHANDLE musste noch aktiviert werden).
  • Installieren und booten zusammen mit dem Arch-Linux rootfs
  • Bauen eines Kernels und rootfs mit buildroot (hab ich noch nicht aufm Board installiert)

Noch zu testen:
  • Notebook-HD an SATA Anschluss
  • "I2C-Schnittstelle ansprechen
  • Wie sieht es mit RT-Erweiterungen des Kernels aus?

Hardware

  • RS232-Kabel dran (grün = RX -> an TX-Pin, rot = TX -> an RX-Pin, blau = GND)
  • 9-12V Supply (Plus ist innen, GND aussen)
  • uSD-Karte rein und los....

Fertiges Debian installieren

Die einfachste und schellste Methode, ein bootfähiges System zu bekommen:
  • Download (Link auf olimex suchen)
  • auspacken und mit dd auf die uSD-Karte
  • Netzwerk aktivieren mit "ifup eth0" und in /etc/network/interfaces aktivieren
  • nach dem booten "apt-get update" + "apt-get upgrade" -> dauert eine Weile
  • Installieren von lighttpd und php

Linux selber bauen

Tool chain

Fertige Binaries

$ sudo apt-get install  ncurses-dev u-boot-tools binutils-arm-linux-gnueabihf gcc-4.7-arm-linux-gnueabihf-base gcc-arm-linux-gnueabihf

Tool chain selber bauen mit crosstool-ng

Siehe http://crosstool-ng.org/

U-Boot

git clone http://git.denx.de/u-boot-sunxi.git/
cd u-boot-sunxi/
make A20-OLinuXino-Micro_config CROSS_COMPILE=arm-linux-gnueabihf-
make CROSS_COMPILE=arm-linux-gnueabihf-
cd ..

.. und dann:

git clone https://github.com/linux-sunxi/sunxi-tools
cd sunxi-tools/
sudo apt-get install libusb-1.0
make
wget https://github.com/linux-sunxi/sunxi-boards/raw/master/sys_config/a20/a20-olinuxino_micro.fex
./fex2bin a20-olinuxino_micro.fex > script.bin

U-Boot Tuning

http://lists.denx.de/pipermail/u-boot/2011-April/091481.html

Linux-Kernel

Der Mainline-Kernel von http://kernel.org ist inzwischen soweit, dass man ihn für dieses A20-Board bauen kann.

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x40008000 uImage dtbs

Sunxi-Kernel

Hier gehts um die portierte Kernel-Variante der sunxi-community.

Siehe auch http://linux-sunxi.org/Linux_Kernel#Compilation

Die Einstellung CONFIG_FHANDLE=y muss noch ergänzt werden!!

Der Kernel wird von der sunxi-Community gepflegt:

$ git clone https://github.com/linux-sunxi/linux-sunxi -b sunxi-3.4

$ cd linux-sunxi/

File A20olinuxino_defconfig besorgen und (standad von sunxi is sun7i_defconfig):

wget https://raw.github.com/hehopmajieh/OLinuXino-A20/master/olinuxinoA20-3.4_defconfig -O arch/arm/configs/A20olinuxino_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- A20olinuxino_defconfig
make ARCH=arm menuconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 uImage
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 INSTALL_MOD_PATH=out modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 INSTALL_MOD_PATH=out modules_install

Dann sollte der Kernel in arch/arm/boot und der Device tree blob (.dtb) in arch/arm/boot/dts liegen.

Root-Filesystem

Arch-Linux

Homepage: ArchLinux für Arm-Systeme
wget http://archlinuxarm.org/os/ArchLinuxARM-sun7i-latest.tar.gz

SD-Karte vorbereiten mit:
sudo fdisk /dev/sdb
sudo mkfs.ext4 -m 1 /dev/sdb1

SD-Karte mounten
$ sudo mount /dev/sdb1 mnt/
sudo tar -C mnt/ -zxf ArchLinuxARM-sun7i-latest.tar.gz
cd mnt/boot

Overwrite the files in boot with the files produced in the previous steps:
$ sudo rm uEnv.txt
$ sudo cp ../../sunxi-tools/script.bin .
$ sudo rm u-boot.bin
$ sudo rm sunxi-spl.bin
$ sudo cp ../../u-boot-sunxi/u-boot-sunxi-with-spl.bin .
$ sudo cp ../../linux-sunxi/arch/arm/boot/uImage .

Install the boot loader:
$ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

Switch to ~/mnt/usr/lib/modules and remove the 2 directories:

$ cd ../usr/lib/modules
$ sudo rm -rf 3.3.0-2-ARCH/ extramodules-3.3?sun7i/

Copy the modules
$ sudo cp -aRv ../../../../linux-sunxi/out/lib/modules/* .

Remove the following 2 directories from pacman (Arch package manager) config:
$ sudo rm -rf ~/mnt/var/lib/pacman/local/linux-sun7*
$ sudo rm -rf ~/mnt/var/lib/pacman/local/uboot-cub*

Debian

Siehe http://olimex.wordpress.com/2014/03/07/building-a20-olinuxino-micro-debian-image-with-hardware-accelerated-video/

Buildroot - alles auf einmal

Die Konfiguration a20olinuxino_br_defconfig sieht so aus:
# Architecture
BR2_arm=y
BR2_cortex_a7=y

# System configuration
BR2_TARGET_GENERIC_HOSTNAME="A20-Olinuxino"
BR2_TARGET_GENERIC_ISSUE="Welcome to Olimex A20-Olinuxino Micro!"
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
#BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubietech/cubieboard/post-build.sh"

# Additional tools
BR2_PACKAGE_HOST_SUNXI_TOOLS=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
BR2_PACKAGE_SUNXI_TOOLS=y
BR2_PACKAGE_SUNXI_BOARDS=y
BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a20/a20-olinuxino_micro.fex"

# Kernel headers
BR2_KERNEL_HEADERS_3_4=y

# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux-sunxi/linux-sunxi.git"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="0c7986b137afd15670df1f66c83031a2c5d7b10c"
BR2_LINUX_KERNEL_VERSION="sunxi-3.4"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olimex/a20_olinuxino/linux_a20_olinuxino_micro.config"

# Bootloaders
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="a20olinuxino"
BR2_TARGET_UBOOT_CUSTOM_GIT=y
BR2_TARGET_UBOOT_VERSION="sunxi"
BR2_TARGET_UBOOT_CUSTOM_REPO_URL="http://git.denx.de/u-boot-sunxi.git"
BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="b86d54b2c38a4beb97d580d7d9c8c6a5e57fc510"
BR2_TARGET_UBOOT_FORMAT_BIN=y
BR2_TARGET_UBOOT_SPL=y
BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin"

Software installieren

Owncloud

Siehe auch OwnCloud

Ich möchte Owncloud mit lighttpd und sqlite installieren. Siehe dazu auch

apt-get install lighttpd php5-cgi php5-sqlite php5-gd sqlite

nano /etc/lighttpd/lighttpd.conf
nano /etc/php5/cgi/php.ini
-> upload_max_filesize und post_max_size auf 2G setzen

cd 
rm /var/www/index.lighttpd.html
wget https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2
tar xvf owncloud-7.0.2.tar.bz2
mv owncloud/* /var/www
chown -R www-data:www-data /var/www

und lighttpd neu starten mit
/etc/init.d/lighttpd restart

umount /dev/mmcblk1
mkfs.ext4 /dev/mmcblk1p1
mkdir -p /media/sdcard
mount /dev/mmcblk1p1 /media/sdcard
nano /etc/fstab
chown -R www-data:www-data /media/sdcard/owncloud/data

-- JoergWeinhardt - 08 Oct 2014
Topic revision: r12 - 30 Oct 2014, JoergWeinhardt
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