Orange Pi Zero support

aggaz aggaz at paranoici.org
Sat Jun 24 12:47:26 UTC 2017


Hello,

try something like this:

http://freebsd.1045724.x6.nabble.com/Re-FreeBSD-12-CURRENT-on-OrangePi-One-td6185280.html

Regards


> Hi all!
> 
> I am trying to run FreeBSD on Orange Pi Zero board (Allwinner H2+ SoC).
> 
> I have few questions:
> 1) How to build vanilla u-boot which will be capable booting FreeBSD
> kernel? I have managed to load ubldr, but not the kernel.
> 2) How to use newer Linux dts/dtb files?
> 
> 1) u-boot
> This is how I built u-boot:
> git clone git://git.denx.de/u-boot.git
> cd u-boot
> git checkout v2017.05
> # apply patch so it can be built on FreeBSD (tested on FreeBSD 11.1-BETA1)
> (in the attachment)
> gmake ARCH=arm CROSS_COMPILE=arm-none-eabi- orangepi_zero_defconfig
> gmake -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi-
> dd if=u-boot-sunxi-with-spl.bin conv=notrunc,sync of=/dev/mmcsd0 bs=1024
> seek=8
> 
> In the u-boot prompt:
>   fatload mmc 0 0x42000000 ubldr.bin
>   setenv fdtfile sun8i-h3-orangepi-one.dtb
>   go 0x4200000
> ubldr will work as expected, but kernel will hang at the start.
> If I use
> /usr/local/share/u-boot/u-boot-orangepi-one/u-boot-sunxi-with-spl.bin then
> the kernel and userland will boot normally.
> This is tested booting -CURRENT from Jul 22 (git: 57e30b47aab)
> 
> 2) newer DTS/DTB
> If I use sun8i-h3-orangepi-one.dtb from FreeBSD source tree then the board
> will boot fine, but I don't have network.
> I can also boot normally if the dtb file is rebuilt manually:
>   cd /usr/src/sys/gnu/dts/arm
>   cpp -P -x assembler-with-cpp -I /usr/src/sys/gnu/dts/include -include
> sun8i-h3-orangepi-plus.dts /dev/null | dtc -O dtb -o ./sun8i-h3-rebuilt.dtb
>   ls -lh sun8i-h3-rebuilt.dtb
>   -rw-r--r--  1 root  wheel    15K Jun 24 13:02 sun8i-h3-rebuilt.dtb
> But, if dtb files from Armbian (Linux 4.11) are used, kernel will hang:
>   Using DTB from loaded file
> 'boot/dtb-4.11.3-sun8i/sun8i-h2-plus-orangepi-zero.dtb'.
>   Kernel entry at 0x42200100...
>   Kernel args: -v
> The same file boots Linux without problems.
> 
> I don't know why newer dtb files won't work because there is no output on
> serial console.
> Any ideas how to make it work?
> -------------- next part --------------
> diff --git a/lib/bch.c b/lib/bch.c
> index ec53483774..b45c507c51 100644
> --- a/lib/bch.c
> +++ b/lib/bch.c
> @@ -61,7 +61,11 @@
>  #include <linux/bitops.h>
>  #else
>  #include <errno.h>
> +#ifdef __FreeBSD__
> +#include <machine/endian.h>
> +#else
>  #include <endian.h>
> +#endif
>  #include <stdint.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -112,7 +116,7 @@ struct gf_poly_deg1 {
>  	unsigned int   c[2];
>  };
>  
> -#ifdef USE_HOSTCC
> +#if defined USE_HOSTCC && !defined __FreeBSD__
>  static int fls(int x)
>  {
>  	int r = 32;


More information about the freebsd-arm mailing list