* [Buildroot] [PATCH 1/2] cubieboard: defconfig @ 2013-03-09 11:36 Carlo Caione 2013-03-09 11:36 ` [Buildroot] [PATCH 2/2] cubieboard: scripts Carlo Caione 2013-03-10 14:10 ` [Buildroot] [PATCH 1/2] cubieboard: defconfig Thomas Petazzoni 0 siblings, 2 replies; 4+ messages in thread From: Carlo Caione @ 2013-03-09 11:36 UTC (permalink / raw) To: buildroot This adds support for Cubieboard (http://cubieboard.org/). This depends on host package HOST_SUNXI_TOOLS submitted by Floris Bos. Signed-off-by: Carlo Caione <carlo.caione@gmail.com> --- configs/cubieboard_defconfig | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 configs/cubieboard_defconfig diff --git a/configs/cubieboard_defconfig b/configs/cubieboard_defconfig new file mode 100644 index 0000000..ea1e265 --- /dev/null +++ b/configs/cubieboard_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="sun4i" +BR2_TARGET_GENERIC_ISSUE="Welcome to use sun4i" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubieboard/post-build.sh" + +# Additional tools +BR2_PACKAGE_HOST_SUNXI_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="https://github.com/linux-sunxi/linux-sunxi.git" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="66025966cbe563e356b5e1dda0a572e738e13c42" +BR2_LINUX_KERNEL_VERSION="sunxi-3.4" +BR2_LINUX_KERNEL_DEFCONFIG="sun4i" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="cubieboard" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_VERSION="sunxi" +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="https://github.com/linux-sunxi/u-boot-sunxi.git" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="7aa9f04f571247a6bb999c168b49e09f05b86465" +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" -- 1.8.1.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2/2] cubieboard: scripts 2013-03-09 11:36 [Buildroot] [PATCH 1/2] cubieboard: defconfig Carlo Caione @ 2013-03-09 11:36 ` Carlo Caione 2013-03-10 14:24 ` Thomas Petazzoni 2013-03-10 14:10 ` [Buildroot] [PATCH 1/2] cubieboard: defconfig Thomas Petazzoni 1 sibling, 1 reply; 4+ messages in thread From: Carlo Caione @ 2013-03-09 11:36 UTC (permalink / raw) To: buildroot This patch add: - boot.cmd: U-Boot script - post-build.sh: post-build script to generate some needed files - mkCubieCard.sh: script to correctly format the SD card and make it bootable by cubieboard Signed-off-by: Carlo Caione <carlo.caione@gmail.com> --- board/cubieboard/boot.cmd | 4 ++ board/cubieboard/mkCubieCard.sh | 110 ++++++++++++++++++++++++++++++++++++++++ board/cubieboard/post-build.sh | 37 ++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 board/cubieboard/boot.cmd create mode 100755 board/cubieboard/mkCubieCard.sh create mode 100755 board/cubieboard/post-build.sh diff --git a/board/cubieboard/boot.cmd b/board/cubieboard/boot.cmd new file mode 100644 index 0000000..849ed00 --- /dev/null +++ b/board/cubieboard/boot.cmd @@ -0,0 +1,4 @@ +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra} +fatload mmc 0 0x43000000 script.bin +fatload mmc 0 0x48000000 uImage +bootm 0x48000000 diff --git a/board/cubieboard/mkCubieCard.sh b/board/cubieboard/mkCubieCard.sh new file mode 100755 index 0000000..7a5a16f --- /dev/null +++ b/board/cubieboard/mkCubieCard.sh @@ -0,0 +1,110 @@ +#! /bin/sh +# mkCubieCard.sh v0.1: +# 2013, Carlo Caione <carlo.caione@gmail.com> +# heavely based on : +# mkA10card.sh v0.1 +# 2012, Jason Plum <jplum@archlinuxarm.org> +# loosely based on : +# mkcard.sh v0.5 +# (c) Copyright 2009 Graeme Gregory <dp@xora.org.uk> +# Licensed under terms of GPLv2 +# +# Parts of the procudure base on the work of Denys Dmytriyenko +# http://wiki.omap.com/index.php/MMC_Boot_Format + +IMAGES_DIR=../../output/images +SPL_IMG=$IMAGES_DIR/sunxi-spl.bin +UBOOT_IMG=$IMAGES_DIR/u-boot.bin +UIMAGE=$IMAGES_DIR/uImage +BIN_BOARD_FILE=$IMAGES_DIR/script.bin +ROOTFS=$IMAGES_DIR/rootfs.tar + +export LC_ALL=C + +if [ $# -ne 1 ]; then + echo "Usage: $0 <drive>" + exit 1; +fi + +if [ ! -f $SPL_IMG ] || + [ ! -f $UBOOT_IMG ] || + [ ! -f $UIMAGE ] || + [ ! -f $BIN_BOARD_FILE ] || + [ ! -f $ROOTFS ]; then + echo "File(s) missing." + exit 1 +fi + +DRIVE=$1 +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 +{ +echo 32,512,0x0C,* +echo 544,,,- +} | sfdisk -D $DRIVE + +sleep 1 + +if [ -b ${DRIVE}1 ]; then + D1=${DRIVE}1 + umount ${DRIVE}1 + mkfs.vfat -n "boot" ${DRIVE}1 +else + if [ -b ${DRIVE}p1 ]; then + D1=${DRIVE}p1 + umount ${DRIVE}p1 + mkfs.vfat -n "boot" ${DRIVE}p1 + else + echo "Cant find boot partition in /dev" + exit 1 + fi +fi + + +if [ -b ${DRIVE}2 ]; then + D2=${DRIVE}2 + umount ${DRIVE}2 + mkfs.ext4 -L "Cubie" ${DRIVE}2 +else + if [ -b ${DRIVE}p2 ]; then + D2=${DRIVE}p2 + umount ${DRIVE}p2 + mkfs.ext4 -L "Cubie" ${DRIVE}p2 + else + echo "Cant find rootfs partition in /dev" + exit 1 + fi +fi + +mount $D1 $P1 +mount $D2 $P2 + +# write uImage +cp $UIMAGE $P1 +# write board file +cp $BIN_BOARD_FILE $P1 +# write rootfs +tar -C $P2 -xvf $ROOTFS + +sync + +umount $D1 +umount $D2 + +rm -fr $P1 +rm -fr $P2 + +# write SPL +dd if=$SPL_IMG of=$DRIVE bs=1024 seek=8 +# write mele u-boot +dd if=$UBOOT_IMG of=$DRIVE bs=1024 seek=32 diff --git a/board/cubieboard/post-build.sh b/board/cubieboard/post-build.sh new file mode 100755 index 0000000..36cf6dc --- /dev/null +++ b/board/cubieboard/post-build.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# post-build.sh for CubieBoard +# 2013, Carlo Caione <carlo.caione@gmail.com> + +TARGET_DIR=$1 +IMAGES_DIR=$1/../images +BOARD_DIR="$(dirname $0)" +HOST_DIR=$1/../host/usr/bin +TMP_DIR=`mktemp -d` + +FEX2BIN=$HOST_DIR/fex2bin +FEX_BOARD_FILE=$TMP_DIR/sys_config/a10/cubieboard.fex +BIN_BOARD_FILE=$IMAGES_DIR/script.bin + +MKIMAGE=$HOST_DIR/mkimage +BOOT_CMD=$BOARD_DIR/boot.cmd +BOOT_CMD_H=$IMAGES_DIR/boot.scr + +SD_IMAGE=$IMAGES_DIR/sd.img + +GIT_SUNXI_BOARD=git://github.com/linux-sunxi/sunxi-boards.git + +# Building script.bin +if [ -e $FEX2BIN ]; +then + git clone $GIT_SUNXI_BOARD $TMP_DIR + $FEX2BIN $FEX_BOARD_FILE $BIN_BOARD_FILE +fi + +# U-Boot script +if [ -e $MKIMAGE -a -e $BOOT_CMD ]; +then + $MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H +fi + +# Clean-up +rm -fr $TMP_DIR -- 1.8.1.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2/2] cubieboard: scripts 2013-03-09 11:36 ` [Buildroot] [PATCH 2/2] cubieboard: scripts Carlo Caione @ 2013-03-10 14:24 ` Thomas Petazzoni 0 siblings, 0 replies; 4+ messages in thread From: Thomas Petazzoni @ 2013-03-10 14:24 UTC (permalink / raw) To: buildroot Dear Carlo Caione, When you repost a new version of a patch, please be sure to include some sort of changelog. Either in an introduction e-mail, or... On Sat, 9 Mar 2013 12:36:44 +0100, Carlo Caione wrote: > This patch add: > - boot.cmd: U-Boot script > - post-build.sh: post-build script to generate some needed files > - mkCubieCard.sh: script to correctly format the SD card and make it > bootable by cubieboard > > Signed-off-by: Carlo Caione <carlo.caione@gmail.com> > --- ... here. > board/cubieboard/boot.cmd | 4 ++ > board/cubieboard/mkCubieCard.sh | 110 ++++++++++++++++++++++++++++++++++++++++ > board/cubieboard/post-build.sh | 37 ++++++++++++++ Generally, we do board/<vendor>/<boardname>/. > 3 files changed, 151 insertions(+) > create mode 100644 board/cubieboard/boot.cmd > create mode 100755 board/cubieboard/mkCubieCard.sh > create mode 100755 board/cubieboard/post-build.sh > > diff --git a/board/cubieboard/boot.cmd b/board/cubieboard/boot.cmd > new file mode 100644 > index 0000000..849ed00 > --- /dev/null > +++ b/board/cubieboard/boot.cmd > @@ -0,0 +1,4 @@ > +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra} > +fatload mmc 0 0x43000000 script.bin > +fatload mmc 0 0x48000000 uImage > +bootm 0x48000000 > diff --git a/board/cubieboard/mkCubieCard.sh b/board/cubieboard/mkCubieCard.sh > new file mode 100755 > index 0000000..7a5a16f > --- /dev/null > +++ b/board/cubieboard/mkCubieCard.sh In general in Buildroot, we don't have camel-case files, so mkcubiecard.sh would be more appropriate here. > @@ -0,0 +1,110 @@ > +#! /bin/sh > +# mkCubieCard.sh v0.1: > +# 2013, Carlo Caione <carlo.caione@gmail.com> > +# heavely based on : > +# mkA10card.sh v0.1 > +# 2012, Jason Plum <jplum@archlinuxarm.org> > +# loosely based on : > +# mkcard.sh v0.5 > +# (c) Copyright 2009 Graeme Gregory <dp@xora.org.uk> > +# Licensed under terms of GPLv2 > +# > +# Parts of the procudure base on the work of Denys Dmytriyenko > +# http://wiki.omap.com/index.php/MMC_Boot_Format > + > +IMAGES_DIR=../../output/images > +SPL_IMG=$IMAGES_DIR/sunxi-spl.bin > +UBOOT_IMG=$IMAGES_DIR/u-boot.bin > +UIMAGE=$IMAGES_DIR/uImage > +BIN_BOARD_FILE=$IMAGES_DIR/script.bin > +ROOTFS=$IMAGES_DIR/rootfs.tar > + > +export LC_ALL=C > + > +if [ $# -ne 1 ]; then > + echo "Usage: $0 <drive>" > + exit 1; > +fi > + > +if [ ! -f $SPL_IMG ] || > + [ ! -f $UBOOT_IMG ] || > + [ ! -f $UIMAGE ] || > + [ ! -f $BIN_BOARD_FILE ] || > + [ ! -f $ROOTFS ]; then > + echo "File(s) missing." > + exit 1 > +fi > + > +DRIVE=$1 > +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 > +{ > +echo 32,512,0x0C,* > +echo 544,,,- > +} | sfdisk -D $DRIVE > + > +sleep 1 > + > +if [ -b ${DRIVE}1 ]; then > + D1=${DRIVE}1 > + umount ${DRIVE}1 > + mkfs.vfat -n "boot" ${DRIVE}1 > +else > + if [ -b ${DRIVE}p1 ]; then > + D1=${DRIVE}p1 > + umount ${DRIVE}p1 > + mkfs.vfat -n "boot" ${DRIVE}p1 > + else > + echo "Cant find boot partition in /dev" > + exit 1 > + fi > +fi > + > + > +if [ -b ${DRIVE}2 ]; then > + D2=${DRIVE}2 > + umount ${DRIVE}2 > + mkfs.ext4 -L "Cubie" ${DRIVE}2 > +else > + if [ -b ${DRIVE}p2 ]; then > + D2=${DRIVE}p2 > + umount ${DRIVE}p2 > + mkfs.ext4 -L "Cubie" ${DRIVE}p2 > + else > + echo "Cant find rootfs partition in /dev" > + exit 1 > + fi > +fi > + > +mount $D1 $P1 > +mount $D2 $P2 > + > +# write uImage > +cp $UIMAGE $P1 > +# write board file > +cp $BIN_BOARD_FILE $P1 > +# write rootfs > +tar -C $P2 -xvf $ROOTFS > + > +sync > + > +umount $D1 > +umount $D2 > + > +rm -fr $P1 > +rm -fr $P2 > + > +# write SPL > +dd if=$SPL_IMG of=$DRIVE bs=1024 seek=8 > +# write mele u-boot > +dd if=$UBOOT_IMG of=$DRIVE bs=1024 seek=32 So this script is intended to be executed as root? I think it would be good if you could add a board/cubieboard/README that explains how to use your specific scripts. It doesn't have to be a complete Buildroot manual, but just something that takes care of documenting the cubieboard specific stuff. > diff --git a/board/cubieboard/post-build.sh b/board/cubieboard/post-build.sh > new file mode 100755 > index 0000000..36cf6dc > --- /dev/null > +++ b/board/cubieboard/post-build.sh > @@ -0,0 +1,37 @@ > +#!/bin/sh > +# post-build.sh for CubieBoard > +# 2013, Carlo Caione <carlo.caione@gmail.com> > + > +TARGET_DIR=$1 > +IMAGES_DIR=$1/../images > +BOARD_DIR="$(dirname $0)" > +HOST_DIR=$1/../host/usr/bin > +TMP_DIR=`mktemp -d` > + > +FEX2BIN=$HOST_DIR/fex2bin > +FEX_BOARD_FILE=$TMP_DIR/sys_config/a10/cubieboard.fex > +BIN_BOARD_FILE=$IMAGES_DIR/script.bin > + > +MKIMAGE=$HOST_DIR/mkimage > +BOOT_CMD=$BOARD_DIR/boot.cmd > +BOOT_CMD_H=$IMAGES_DIR/boot.scr > + > +SD_IMAGE=$IMAGES_DIR/sd.img > + > +GIT_SUNXI_BOARD=git://github.com/linux-sunxi/sunxi-boards.git > + > +# Building script.bin > +if [ -e $FEX2BIN ]; > +then > + git clone $GIT_SUNXI_BOARD $TMP_DIR Argh, cloning a Git repo from a post build script doesn't sound really nice. What about creating a sunxi-boards Buildroot package, that generates this "BIN_BOARD_FILE" ? > + $FEX2BIN $FEX_BOARD_FILE $BIN_BOARD_FILE > +fi > + > +# U-Boot script > +if [ -e $MKIMAGE -a -e $BOOT_CMD ]; > +then > + $MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H > +fi > + > +# Clean-up > +rm -fr $TMP_DIR Thanks, Thomas -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/2] cubieboard: defconfig 2013-03-09 11:36 [Buildroot] [PATCH 1/2] cubieboard: defconfig Carlo Caione 2013-03-09 11:36 ` [Buildroot] [PATCH 2/2] cubieboard: scripts Carlo Caione @ 2013-03-10 14:10 ` Thomas Petazzoni 1 sibling, 0 replies; 4+ messages in thread From: Thomas Petazzoni @ 2013-03-10 14:10 UTC (permalink / raw) To: buildroot Dear Carlo Caione, On Sat, 9 Mar 2013 12:36:43 +0100, Carlo Caione wrote: > This adds support for Cubieboard (http://cubieboard.org/). > This depends on host package HOST_SUNXI_TOOLS submitted by > Floris Bos. This message "This depends on host package ..." should not be part of the commit log. As I suggested earlier, just include Floris Bos patch in your patch set, it will be easier. Some more comments below. > +# System configuration > +BR2_TARGET_GENERIC_HOSTNAME="sun4i" > +BR2_TARGET_GENERIC_ISSUE="Welcome to use sun4i" Since it's a cubieboard defconfig, what about using cubieboard here? > +BR2_TARGET_GENERIC_GETTY=y > +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" > +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubieboard/post-build.sh" This script is added in your second patch, so taken alone, your first patch doesn't work. I think you should merge both of your patches, since they really do one thing: add support for the Cubieboard. > +# Additional tools > +BR2_PACKAGE_HOST_SUNXI_TOOLS=y > +BR2_PACKAGE_HOST_UBOOT_TOOLS=y > + > +# Kernel > +BR2_LINUX_KERNEL=y > +BR2_LINUX_KERNEL_CUSTOM_GIT=y > +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="https://github.com/linux-sunxi/linux-sunxi.git" > +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="66025966cbe563e356b5e1dda0a572e738e13c42" > +BR2_LINUX_KERNEL_VERSION="sunxi-3.4" > +BR2_LINUX_KERNEL_DEFCONFIG="sun4i" > + > +# Bootloaders > +BR2_TARGET_UBOOT=y > +BR2_TARGET_UBOOT_BOARDNAME="cubieboard" > +BR2_TARGET_UBOOT_CUSTOM_GIT=y > +BR2_TARGET_UBOOT_VERSION="sunxi" > +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="https://github.com/linux-sunxi/u-boot-sunxi.git" > +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="7aa9f04f571247a6bb999c168b49e09f05b86465" > +BR2_TARGET_UBOOT_FORMAT_BIN=y > +BR2_TARGET_UBOOT_SPL=y > +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" Ok. We also generally want to lock down a certain kernel headers version. So you should add: # Lock down headers to avoid breaking with new defaults BR2_KERNEL_HEADERS_VERSION=y BR2_DEFAULT_KERNEL_VERSION="3.8.1" below your architecture definition. See armadeus_apf28_defconfig for example. Thanks, Thomas -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-03-10 14:24 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-03-09 11:36 [Buildroot] [PATCH 1/2] cubieboard: defconfig Carlo Caione 2013-03-09 11:36 ` [Buildroot] [PATCH 2/2] cubieboard: scripts Carlo Caione 2013-03-10 14:24 ` Thomas Petazzoni 2013-03-10 14:10 ` [Buildroot] [PATCH 1/2] cubieboard: defconfig Thomas Petazzoni
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox