From ef4cd423e69c22126ef292790f533ea54a5cbc37 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Tue, 22 Dec 2015 09:10:42 +0100 Subject: [PATCH] board: add support for Olimex a13 OLinuXino MICRO Signed-off-by: Gwenhael Goavec-Merou --- board/olimex/a13_olinuxino/boot.cmd | 5 ++ board/olimex/a13_olinuxino/make-sdimg.sh | 111 +++++++++++++++++++++++++++ board/olimex/a13_olinuxino/post-build.sh | 12 +++ board/olimex/a13_olinuxino/readme.txt | 58 ++++++++++++++ configs/olimex_a13_olinuxino_micro_defconfig | 25 ++++++ 5 files changed, 211 insertions(+) create mode 100644 board/olimex/a13_olinuxino/boot.cmd create mode 100755 board/olimex/a13_olinuxino/make-sdimg.sh create mode 100755 board/olimex/a13_olinuxino/post-build.sh create mode 100644 board/olimex/a13_olinuxino/readme.txt create mode 100644 configs/olimex_a13_olinuxino_micro_defconfig diff --git a/board/olimex/a13_olinuxino/boot.cmd b/board/olimex/a13_olinuxino/boot.cmd new file mode 100644 index 0000000..0aede8e --- /dev/null +++ b/board/olimex/a13_olinuxino/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 +fatload mmc 0 0x49000000 ${fdtfile} +fatload mmc 0 0x46000000 uImage +env set fdt_high ffffffff +bootm 0x46000000 - 0x49000000 diff --git a/board/olimex/a13_olinuxino/make-sdimg.sh b/board/olimex/a13_olinuxino/make-sdimg.sh new file mode 100755 index 0000000..e69701a --- /dev/null +++ b/board/olimex/a13_olinuxino/make-sdimg.sh @@ -0,0 +1,111 @@ +#! /bin/sh + +IMAGES_DIR=$1 +SPL_IMG=$IMAGES_DIR/u-boot-sunxi-with-spl.bin +FDT_IMG=$IMAGES_DIR/sun5i-a13-olinuxino-micro.dtb +UIMAGE=$IMAGES_DIR/uImage +BIN_BOARD_FILE=$IMAGES_DIR/script.bin +ROOTFS=$IMAGES_DIR/rootfs.tar +BOOT_CMD_H=$IMAGES_DIR/boot.scr + +export LC_ALL=C + +if [ $# -ne 2 ]; then + echo "Usage: $0 " + exit 1; +fi + +if [ `id -u` -ne 0 ]; then + echo "This script must be run as root" 1>&2 + exit 1 +fi + +DRIVE=$2 +P1=`mktemp -d` +P2=`mktemp -d` + +dd if=/dev/zero of=$DRIVE bs=1M count=3 + +SIZE=`fdisk -l $DRIVE | grep Disk | grep bytes | awk '{print $5}'` + +echo DISK SIZE - $SIZE bytes + +# ~2048, 16MB, FAT, bootable +# ~rest of drive, Ext4 + +PARTITION_BOOT_OFFSET=2048 +PARTITION_ROOT_OFFSET=34815 + +fdisk $DRIVE >/dev/null 2>&1 < /dev/sdXY +# - /dev/mmcblkX -> /dev/mmcblkXpY +if echo ${DRIVE}|grep -q mmcblk ; then + PART="p" +else + PART="" +fi +BOOT_PART=${DRIVE}${PART}1 +ROOT_PART=${DRIVE}${PART}2 + +if [ -b ${BOOT_PART} ]; then + umount ${BOOT_PART} + mkfs.vfat -n "boot" ${BOOT_PART} +else + echo "Cant find boot partition in /dev" + exit 1 +fi + +if [ -b ${ROOT_PART} ]; then + umount ${ROOT_PART} + mkfs.ext4 -n "rootfs" ${ROOT_PART} +else + echo "Cant find root partition in /dev" + exit 1 +fi + +mount $BOOT_PART $P1 +mount $ROOT_PART $P2 + +# write uImage +cp $UIMAGE $P1 +# write board file +if [ -e $BIN_BOARD_FILE ]; then + cp $BIN_BOARD_FILE $P1 +fi + +# write devicetree blob +if [ -e $FDT_IMG ]; then + cp $FDT_IMG $P1 +fi + +# write u-boot script +cp $BOOT_CMD_H $P1 + +# write rootfs +tar -C $P2 -xf $ROOTFS + +sync + +umount $D1 +umount $D2 + +rm -fr $P1 +rm -fr $P2 + +dd if=$SPL_IMG of=$DRIVE bs=1024 seek=8 diff --git a/board/olimex/a13_olinuxino/post-build.sh b/board/olimex/a13_olinuxino/post-build.sh new file mode 100755 index 0000000..ac8d4df --- /dev/null +++ b/board/olimex/a13_olinuxino/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# args from BR2_ROOTFS_POST_SCRIPT_ARGS +# $2 path of boot.cmd +# $3 output directory for boot.scr + +MKIMAGE=$HOST_DIR/usr/bin/mkimage + +$MKIMAGE -A arm -O linux -T script -C none -d $2 $3/boot.scr + +if [ -e $BINARIES_DIR/script.bin ]; then + cp $BINARIES_DIR/script.bin $3/script.bin +fi diff --git a/board/olimex/a13_olinuxino/readme.txt b/board/olimex/a13_olinuxino/readme.txt new file mode 100644 index 0000000..9d1e74f --- /dev/null +++ b/board/olimex/a13_olinuxino/readme.txt @@ -0,0 +1,58 @@ +A13-OLinuXino-MICRO + +Intro +===== + +These are open hardware boards, based an the AllWinners A13 SoC. + +for more details about the boards see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino-MICRO/ + +The following defconfig is available: + - olimex_a13_olinuxino_micro_defconfig + for the A13-OLinuXino-MICRO board using linux-sunxi kernel + +(see http://linux-sunxi.org/Linux_Kernel for more details) + +How to build it +=============== + +Configure Buildroot: + + $ make olimex_a13_olinuxino_micro_defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- boot.scr + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- rootfs.tar + +-- sun5i-a13-olinuxino-micro.dtb + +-- u-boot-sunxi-with-spl.bin + +-- u-boot.bin + `-- uImage + + +How to write the SD card +======================== + +On buildroot root directory call the script make-sdimg.sh : + + sudo board/olimex/a13_olinuxino/make-sdimg.sh output/images /dev/sdX + +After that the SD card is ready. + +Finish +====== + +Eject the SD card, insert it in the A13-OLinuXino board, and power it up. + diff --git a/configs/olimex_a13_olinuxino_micro_defconfig b/configs/olimex_a13_olinuxino_micro_defconfig new file mode 100644 index 0000000..e22f90d --- /dev/null +++ b/configs/olimex_a13_olinuxino_micro_defconfig @@ -0,0 +1,25 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_TARGET_GENERIC_HOSTNAME="a13-OLinuXino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a13_olinuxino/post-build.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="board/olimex/a13_olinuxino/boot.cmd $(BINARIES_DIR)" +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="fbe157ba74f80634ece3b8e55d28ded467ffe821" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000 " +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun5i-a13-olinuxino-micro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A13-OLinuXinoM" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_UBOOT_TOOLS=y -- 2.4.10