diff mbox

buildroot support for OrangePI PC

Message ID 1450948540529.50320.154990@webmail2
State Changes Requested
Headers show

Commit Message

Eelco Chaudron Dec. 24, 2015, 9:15 a.m. UTC
I decided to do some work on the OrangePI PC and I have a basic Linux 4.4 setup running.
It boots, and I have serial access to the board.

Cam if you could share your 3.4 repo (and or 4.4 if it has better OrangePI support) I
can get started with this too.

Cheers,

Eelco

This is the diff;


On 18 December 2015 23:23:20 +01:00, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 18-12-15 14:22, Eelco Chaudron wrote:
> 
> > Hi All,
> > 
> > Was wondering if anyone has started working on OrangePi PC board support?
> > 
> Not that I know of. But it should be quite similar to the cubieboard I think.
> 
> If you make a defconfig for it, consider using genimage rather than a custom
> script like mkcubiecard.
> 
> Regards,
> Arnout
> 
> 
> -- 
> Arnout Vandecappelle arnout at mind be
> Senior Embedded Software Architect +32-16-286500
> Essensium/Mind <http://www.mind.be>
> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
> LinkedIn profile: <http://www.linkedin.com/in/arnoutvandecappelle>
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>

Comments

Thomas Petazzoni Dec. 24, 2015, 10:28 a.m. UTC | #1
Eelco,

On Thu, 24 Dec 2015 10:15:40 +0100, Eelco Chaudron wrote:

> This is the diff;

Thanks for the patch. Can you send it as a proper Git formatted patch?
See the Buildroot manual for instructions on how to do this. I have a
couple more comments below.

> diff --git a/board/orangepi/orangepipc/genimage.cfg b/board/orangepi/orangepipc/genimage.cfg
> new file mode 100644
> index 0000000..43c2249
> --- /dev/null
> +++ b/board/orangepi/orangepipc/genimage.cfg
> @@ -0,0 +1,36 @@
> +# Minimal SD card image for the OrangePi PC
> +#
> +
> +image boot.vfat {
> + vfat {
> + files = {
> + "uImage",
> + "sun8i-h3-orangepi-pc.dtb",
> + "boot.scr"
> + }
> + }
> + size = 10M
> +}

Please fix the indentation here. I think we should use at least two
spaces for indentation, or maybe better one tab.

> diff --git a/board/orangepi/orangepipc/post-build.sh b/board/orangepi/orangepipc/post-build.sh
> new file mode 100755
> index 0000000..9f115cb
> --- /dev/null
> +++ b/board/orangepi/orangepipc/post-build.sh
> @@ -0,0 +1,14 @@
> +#!/bin/sh
> +# post-build.sh for OrangePi PC taken from CubieBoard's post-build.sh
> +# 2013, Carlo Caione <<carlo.caione@gmail.com>>
> +
> +BOARD_DIR="$(dirname $0)"
> +MKIMAGE=$HOST_DIR/usr/bin/mkimage
> +BOOT_CMD=$BOARD_DIR/boot.cmd
> +BOOT_CMD_H=$BINARIES_DIR/boot.scr
> +
> +# U-Boot script
> +if [ -e $MKIMAGE -a -e $BOOT_CMD ];

This test is not needed IMO, just run the $MKIMAGE command
unconditionally.

> +then
> +	$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H
> +fi
> diff --git a/board/orangepi/orangepipc/post-image.sh b/board/orangepi/orangepipc/post-image.sh
> new file mode 100755
> index 0000000..05f6b70
> --- /dev/null
> +++ b/board/orangepi/orangepipc/post-image.sh
> @@ -0,0 +1,16 @@
> +#!/bin/bash

Do we really need this to be a bash script ? #!/bin/sh is probably
sufficient.

> +
> +GENIMAGE_CFG="board/orangepi/orangepipc/genimage.cfg"

Maybe you could use the same BOARD_DIR trick than the one you've used
in the post-build script?

> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
> +
> +rm -rf "${GENIMAGE_TMP}"
> +
> +genimage \
> + --rootpath "${TARGET_DIR}" \
> + --tmppath "${GENIMAGE_TMP}" \
> + --inputpath "${BINARIES_DIR}" \
> + --outputpath "${BINARIES_DIR}" \
> + --config "${GENIMAGE_CFG}"

Use tab for indentation.

> +
> +RET=${?}
> +exit ${RET}

Just do exit $?

> diff --git a/configs/orangepipc_defconfig b/configs/orangepipc_defconfig
> new file mode 100644
> index 0000000..cd349c5
> --- /dev/null
> +++ b/configs/orangepipc_defconfig
> @@ -0,0 +1,26 @@
> +BR2_arm=y
> +BR2_cortex_a7=y
> +BR2_ARM_FPU_NEON_VFPV4=y

Please use just VFPV4. Using NEON for floating point operations by
default is not a good idea. From the gcc manual:

   If the selected floating-point hardware includes the NEON extension
   (e.g. -mfpu=‘neon’), note that floating-point operations are not
   generated by GCC's auto-vectorization pass unless
   -funsafe-math-optimizations is also specified. This is because NEON
   hardware does not fully implement the IEEE 754 standard for
   floating-point arithmetic (in particular denormal values are treated
   as zero), so the use of NEON instructions may lead to a loss of
   precision.


> +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC"
> +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC"
> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepipc/post-build.sh"
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepipc/post-image.sh"

Please force the kernel headers version to a fixed version, like is
done in all other defconfig files. For example:

# Lock to 4.3 headers to avoid breaking with newer kernels
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="4.3"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_3=y

(Of course adapt 4.3 to whatever kernel version you're using)

> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_GIT=y
> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="<https://github.com/jwrdegoede/linux-sunxi.git>"

Please remove the < and > before and after the URL. I'm not even sure
how it can work with such markers.

> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="a516ac6dda21e6f5edceecd08b475b16e360656b"
> +BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
> +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000"

The modern way is to boot using a zImage. Can you try using a zImage
instead?

> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc"
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_4=y
> +# BR2_TARGET_ROOTFS_TAR is not set
> +BR2_TARGET_UBOOT=y
> +BR2_TARGET_UBOOT_BOARDNAME="orangepi_pc"
> +BR2_TARGET_UBOOT_CUSTOM_GIT=y
> +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="<http://git.denx.de/u-boot.git>"

Ditto < and > markers.

> +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="4832e17787acb29734d895751bc7a594908aecc6"
> +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
> +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
> +BR2_PACKAGE_HOST_GENIMAGE=y

Thanks!

Thomas
Eelco Chaudron Dec. 24, 2015, 10:52 a.m. UTC | #2
Thanks Thomas,

Will take a look at your comments and make the fixes and send you a patch.

One quick question on the linux header part; This is a 4.4 based kernel, and no headers are
available when specifying the version (as they live in a different directory on kernel.org).

Guess I should force them to 4.3 for now.

Thanks,

Eelco

> On 24 Dec 2015, at 11:28, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:
> 
> Eelco,
> 
> On Thu, 24 Dec 2015 10:15:40 +0100, Eelco Chaudron wrote:
> 
>> This is the diff;
> 
> Thanks for the patch. Can you send it as a proper Git formatted patch?
> See the Buildroot manual for instructions on how to do this. I have a
> couple more comments below.
> 
>> diff --git a/board/orangepi/orangepipc/genimage.cfg b/board/orangepi/orangepipc/genimage.cfg
>> new file mode 100644
>> index 0000000..43c2249
>> --- /dev/null
>> +++ b/board/orangepi/orangepipc/genimage.cfg
>> @@ -0,0 +1,36 @@
>> +# Minimal SD card image for the OrangePi PC
>> +#
>> +
>> +image boot.vfat {
>> + vfat {
>> + files = {
>> + "uImage",
>> + "sun8i-h3-orangepi-pc.dtb",
>> + "boot.scr"
>> + }
>> + }
>> + size = 10M
>> +}
> 
> Please fix the indentation here. I think we should use at least two
> spaces for indentation, or maybe better one tab.
> 
>> diff --git a/board/orangepi/orangepipc/post-build.sh b/board/orangepi/orangepipc/post-build.sh
>> new file mode 100755
>> index 0000000..9f115cb
>> --- /dev/null
>> +++ b/board/orangepi/orangepipc/post-build.sh
>> @@ -0,0 +1,14 @@
>> +#!/bin/sh
>> +# post-build.sh for OrangePi PC taken from CubieBoard's post-build.sh
>> +# 2013, Carlo Caione <<carlo.caione@gmail.com>>
>> +
>> +BOARD_DIR="$(dirname $0)"
>> +MKIMAGE=$HOST_DIR/usr/bin/mkimage
>> +BOOT_CMD=$BOARD_DIR/boot.cmd
>> +BOOT_CMD_H=$BINARIES_DIR/boot.scr
>> +
>> +# U-Boot script
>> +if [ -e $MKIMAGE -a -e $BOOT_CMD ];
> 
> This test is not needed IMO, just run the $MKIMAGE command
> unconditionally.
> 
>> +then
>> +	$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H
>> +fi
>> diff --git a/board/orangepi/orangepipc/post-image.sh b/board/orangepi/orangepipc/post-image.sh
>> new file mode 100755
>> index 0000000..05f6b70
>> --- /dev/null
>> +++ b/board/orangepi/orangepipc/post-image.sh
>> @@ -0,0 +1,16 @@
>> +#!/bin/bash
> 
> Do we really need this to be a bash script ? #!/bin/sh is probably
> sufficient.
> 
>> +
>> +GENIMAGE_CFG="board/orangepi/orangepipc/genimage.cfg"
> 
> Maybe you could use the same BOARD_DIR trick than the one you've used
> in the post-build script?
> 
>> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
>> +
>> +rm -rf "${GENIMAGE_TMP}"
>> +
>> +genimage \
>> + --rootpath "${TARGET_DIR}" \
>> + --tmppath "${GENIMAGE_TMP}" \
>> + --inputpath "${BINARIES_DIR}" \
>> + --outputpath "${BINARIES_DIR}" \
>> + --config "${GENIMAGE_CFG}"
> 
> Use tab for indentation.
> 
>> +
>> +RET=${?}
>> +exit ${RET}
> 
> Just do exit $?
> 
>> diff --git a/configs/orangepipc_defconfig b/configs/orangepipc_defconfig
>> new file mode 100644
>> index 0000000..cd349c5
>> --- /dev/null
>> +++ b/configs/orangepipc_defconfig
>> @@ -0,0 +1,26 @@
>> +BR2_arm=y
>> +BR2_cortex_a7=y
>> +BR2_ARM_FPU_NEON_VFPV4=y
> 
> Please use just VFPV4. Using NEON for floating point operations by
> default is not a good idea. From the gcc manual:
> 
>   If the selected floating-point hardware includes the NEON extension
>   (e.g. -mfpu=‘neon’), note that floating-point operations are not
>   generated by GCC's auto-vectorization pass unless
>   -funsafe-math-optimizations is also specified. This is because NEON
>   hardware does not fully implement the IEEE 754 standard for
>   floating-point arithmetic (in particular denormal values are treated
>   as zero), so the use of NEON instructions may lead to a loss of
>   precision.
> 
> 
>> +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC"
>> +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC"
>> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepipc/post-build.sh"
>> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepipc/post-image.sh"
> 
> Please force the kernel headers version to a fixed version, like is
> done in all other defconfig files. For example:
> 
> # Lock to 4.3 headers to avoid breaking with newer kernels
> BR2_KERNEL_HEADERS_VERSION=y
> BR2_DEFAULT_KERNEL_VERSION="4.3"
> BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_3=y
> 
> (Of course adapt 4.3 to whatever kernel version you're using)
> 
>> +BR2_LINUX_KERNEL=y
>> +BR2_LINUX_KERNEL_CUSTOM_GIT=y
>> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="<https://github.com/jwrdegoede/linux-sunxi.git>"
> 
> Please remove the < and > before and after the URL. I'm not even sure
> how it can work with such markers.
> 
>> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="a516ac6dda21e6f5edceecd08b475b16e360656b"
>> +BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
>> +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000"
> 
> The modern way is to boot using a zImage. Can you try using a zImage
> instead?
> 
>> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
>> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc"
>> +BR2_TARGET_ROOTFS_EXT2=y
>> +BR2_TARGET_ROOTFS_EXT2_4=y
>> +# BR2_TARGET_ROOTFS_TAR is not set
>> +BR2_TARGET_UBOOT=y
>> +BR2_TARGET_UBOOT_BOARDNAME="orangepi_pc"
>> +BR2_TARGET_UBOOT_CUSTOM_GIT=y
>> +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="<http://git.denx.de/u-boot.git>"
> 
> Ditto < and > markers.
> 
>> +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="4832e17787acb29734d895751bc7a594908aecc6"
>> +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
>> +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
>> +BR2_PACKAGE_HOST_GENIMAGE=y
> 
> Thanks!
> 
> Thomas
> -- 
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni Dec. 24, 2015, 11:18 a.m. UTC | #3
EElco,

On Thu, 24 Dec 2015 11:52:46 +0100, Eelco Chaudron wrote:

> Will take a look at your comments and make the fixes and send you a patch.
> 
> One quick question on the linux header part; This is a 4.4 based kernel, and no headers are
> available when specifying the version (as they live in a different directory on kernel.org).
> 
> Guess I should force them to 4.3 for now.

Yes, the final 4.4 is not yet released, so you can't point to 4.4 for
the kernel headers. Using 4.3 for the kernel headers is perfectly fine
in the mean time.

Thanks,

Thomas
Cam Hutchison Dec. 27, 2015, 12:04 a.m. UTC | #4
"Eelco Chaudron" <echaudron@xiot.nl> writes:

>I decided to do some work on the OrangePI PC and I have a basic Linux 4.4 setup running.
>It boots, and I have serial access to the board.

Cool. I'll look over it.

>Cam if you could share your 3.4 repo (and or 4.4 if it has better OrangePI support) I
>can get started with this too.

I haven't made a start yet, so I have no repo to share.


>diff --git a/board/orangepi/orangepipc/boot.cmd b/board/orangepi/orangepipc/boot.cmd
>new file mode 100644
>index 0000000..7d61e7b
>--- /dev/null
>+++ b/board/orangepi/orangepipc/boot.cmd
>@@ -0,0 +1,8 @@
>+setenv fdt_high ffffffff
>+
>+setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
>+
>+fatload mmc 0 $kernel_addr_r uImage
>+fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc.dtb
>+
>+bootm $kernel_addr_r - $fdt_addr_r
>diff --git a/board/orangepi/orangepipc/genimage.cfg b/board/orangepi/orangepipc/genimage.cfg
>new file mode 100644
>index 0000000..43c2249
>--- /dev/null
>+++ b/board/orangepi/orangepipc/genimage.cfg
>@@ -0,0 +1,36 @@
>+# Minimal SD card image for the OrangePi PC
>+#
>+
>+image boot.vfat {
>+ vfat {
>+ files = {
>+ "uImage",
>+ "sun8i-h3-orangepi-pc.dtb",
>+ "boot.scr"
>+ }
>+ }
>+ size = 10M
>+}
>+
>+image sdcard.img {
>+ hdimage {
>+ }
>+
>+ partition u-boot {
>+ in-partition-table = "no"
>+ image = "u-boot-sunxi-with-spl.bin"
>+ offset = 8192
>+ }
>+
>+ partition boot {
>+ partition-type = 0xC
>+ bootable = "true"
>+ image = "boot.vfat"
>+ }
>+
>+ partition rootfs {
>+ partition-type = 0x83
>+ image = "rootfs.ext4"
>+ size = 512M
>+ }
>+}
>diff --git a/board/orangepi/orangepipc/post-build.sh b/board/orangepi/orangepipc/post-build.sh
>new file mode 100755
>index 0000000..9f115cb
>--- /dev/null
>+++ b/board/orangepi/orangepipc/post-build.sh
>@@ -0,0 +1,14 @@
>+#!/bin/sh
>+# post-build.sh for OrangePi PC taken from CubieBoard's post-build.sh
>+# 2013, Carlo Caione <<carlo.caione@gmail.com>>
>+
>+BOARD_DIR="$(dirname $0)"
>+MKIMAGE=$HOST_DIR/usr/bin/mkimage
>+BOOT_CMD=$BOARD_DIR/boot.cmd
>+BOOT_CMD_H=$BINARIES_DIR/boot.scr
>+
>+# 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
>diff --git a/board/orangepi/orangepipc/post-image.sh b/board/orangepi/orangepipc/post-image.sh
>new file mode 100755
>index 0000000..05f6b70
>--- /dev/null
>+++ b/board/orangepi/orangepipc/post-image.sh
>@@ -0,0 +1,16 @@
>+#!/bin/bash
>+
>+GENIMAGE_CFG="board/orangepi/orangepipc/genimage.cfg"
>+GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
>+
>+rm -rf "${GENIMAGE_TMP}"
>+
>+genimage \
>+ --rootpath "${TARGET_DIR}" \
>+ --tmppath "${GENIMAGE_TMP}" \
>+ --inputpath "${BINARIES_DIR}" \
>+ --outputpath "${BINARIES_DIR}" \
>+ --config "${GENIMAGE_CFG}"
>+
>+RET=${?}
>+exit ${RET}

These two lines are unnecessary. The script will exit with the exit code
of the last command run.

However I find it safer to add a "set -e" to the top of the script so that
it will terminate early if any of the commands fail. This stops the script
proceeding based on previous incomplete operations. With "set -e" the script
will exit with the error code of the command that failed.

>diff --git a/configs/orangepipc_defconfig b/configs/orangepipc_defconfig
>new file mode 100644
>index 0000000..cd349c5
>--- /dev/null
>+++ b/configs/orangepipc_defconfig
>@@ -0,0 +1,26 @@
>+BR2_arm=y
>+BR2_cortex_a7=y
>+BR2_ARM_FPU_NEON_VFPV4=y
>+BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC"
>+BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC"
>+BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepipc/post-build.sh"
>+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepipc/post-image.sh"
>+BR2_LINUX_KERNEL=y
>+BR2_LINUX_KERNEL_CUSTOM_GIT=y
>+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="<https://github.com/jwrdegoede/linux-sunxi.git>"

Those angled brackets in the URL look wrong. Does that really work?

>+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="a516ac6dda21e6f5edceecd08b475b16e360656b"
>+BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
>+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000"
>+BR2_LINUX_KERNEL_DTS_SUPPORT=y
>+BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc"
>+BR2_TARGET_ROOTFS_EXT2=y
>+BR2_TARGET_ROOTFS_EXT2_4=y
>+# BR2_TARGET_ROOTFS_TAR is not set
>+BR2_TARGET_UBOOT=y
>+BR2_TARGET_UBOOT_BOARDNAME="orangepi_pc"
>+BR2_TARGET_UBOOT_CUSTOM_GIT=y
>+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="<http://git.denx.de/u-boot.git>"

Ditto here.

>+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="4832e17787acb29734d895751bc7a594908aecc6"
>+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
>+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
>+BR2_PACKAGE_HOST_GENIMAGE=y

>On 18 December 2015 23:23:20 +01:00, Arnout Vandecappelle <arnout@mind.be> wrote:

>> On 18-12-15 14:22, Eelco Chaudron wrote:
>> 
>> > Hi All,
>> > 
>> > Was wondering if anyone has started working on OrangePi PC board support?
>> > 
>> Not that I know of. But it should be quite similar to the cubieboard I think.
>> 
>> If you make a defconfig for it, consider using genimage rather than a custom
>> script like mkcubiecard.
>> 
>> Regards,
>> Arnout
>> 
>> 
>> -- 
>> Arnout Vandecappelle arnout at mind be
>> Senior Embedded Software Architect +32-16-286500
>> Essensium/Mind <http://www.mind.be>
>> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
>> LinkedIn profile: <http://www.linkedin.com/in/arnoutvandecappelle>
>> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>>
diff mbox

Patch

diff --git a/board/orangepi/orangepipc/boot.cmd b/board/orangepi/orangepipc/boot.cmd
new file mode 100644
index 0000000..7d61e7b
--- /dev/null
+++ b/board/orangepi/orangepipc/boot.cmd
@@ -0,0 +1,8 @@ 
+setenv fdt_high ffffffff
+
+setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
+
+fatload mmc 0 $kernel_addr_r uImage
+fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc.dtb
+
+bootm $kernel_addr_r - $fdt_addr_r
diff --git a/board/orangepi/orangepipc/genimage.cfg b/board/orangepi/orangepipc/genimage.cfg
new file mode 100644
index 0000000..43c2249
--- /dev/null
+++ b/board/orangepi/orangepipc/genimage.cfg
@@ -0,0 +1,36 @@ 
+# Minimal SD card image for the OrangePi PC
+#
+
+image boot.vfat {
+ vfat {
+ files = {
+ "uImage",
+ "sun8i-h3-orangepi-pc.dtb",
+ "boot.scr"
+ }
+ }
+ size = 10M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition u-boot {
+ in-partition-table = "no"
+ image = "u-boot-sunxi-with-spl.bin"
+ offset = 8192
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ size = 512M
+ }
+}
diff --git a/board/orangepi/orangepipc/post-build.sh b/board/orangepi/orangepipc/post-build.sh
new file mode 100755
index 0000000..9f115cb
--- /dev/null
+++ b/board/orangepi/orangepipc/post-build.sh
@@ -0,0 +1,14 @@ 
+#!/bin/sh
+# post-build.sh for OrangePi PC taken from CubieBoard's post-build.sh
+# 2013, Carlo Caione <<carlo.caione@gmail.com>>
+
+BOARD_DIR="$(dirname $0)"
+MKIMAGE=$HOST_DIR/usr/bin/mkimage
+BOOT_CMD=$BOARD_DIR/boot.cmd
+BOOT_CMD_H=$BINARIES_DIR/boot.scr
+
+# 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
diff --git a/board/orangepi/orangepipc/post-image.sh b/board/orangepi/orangepipc/post-image.sh
new file mode 100755
index 0000000..05f6b70
--- /dev/null
+++ b/board/orangepi/orangepipc/post-image.sh
@@ -0,0 +1,16 @@ 
+#!/bin/bash
+
+GENIMAGE_CFG="board/orangepi/orangepipc/genimage.cfg"
+GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+
+rm -rf "${GENIMAGE_TMP}"
+
+genimage \
+ --rootpath "${TARGET_DIR}" \
+ --tmppath "${GENIMAGE_TMP}" \
+ --inputpath "${BINARIES_DIR}" \
+ --outputpath "${BINARIES_DIR}" \
+ --config "${GENIMAGE_CFG}"
+
+RET=${?}
+exit ${RET}
diff --git a/configs/orangepipc_defconfig b/configs/orangepipc_defconfig
new file mode 100644
index 0000000..cd349c5
--- /dev/null
+++ b/configs/orangepipc_defconfig
@@ -0,0 +1,26 @@ 
+BR2_arm=y
+BR2_cortex_a7=y
+BR2_ARM_FPU_NEON_VFPV4=y
+BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC"
+BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepipc/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepipc/post-image.sh"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="<https://github.com/jwrdegoede/linux-sunxi.git>"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="a516ac6dda21e6f5edceecd08b475b16e360656b"
+BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BOARDNAME="orangepi_pc"
+BR2_TARGET_UBOOT_CUSTOM_GIT=y
+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="<http://git.denx.de/u-boot.git>"
+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="4832e17787acb29734d895751bc7a594908aecc6"
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
+BR2_PACKAGE_HOST_GENIMAGE=y