Orange Pi Zero support

Emmanuel Vadot manu at bidouilliste.com
Sat Jun 24 15:15:46 UTC 2017


On Sat, 24 Jun 2017 13:13:40 +0200
Johnny Sorocil <jsorocil at gmail.com> wrote:

> 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.

 The easiest way is to use my github fork
(https://github.com/evadot/u-boot/tree/freebsd) This have all the
patches for FreeBSD that haven't made upstream yet.
 As soon as U-Boot 2017.07 is out (it should be out on July 10th) I'll
create a new branch on the FreeBSD fork
(https://github.com/freebsd/u-boot).

 Step to compile U-Boot:

 export CROSS_COMPILE=arm-none-eabi-
 gmake board_defconfig
 gmake menuconfig (and select "Enable FreeBSD boot")
 gmake

> 2) How to use newer Linux dts/dtb files?

 For Allwinner it's straight forward, with a few exception we use the
Linux DTS untouched.

> 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?

 There is nothing on the serial console because we miss the h2
definition in aw_machdep.c
 I've started to add proper support for it today but there is some
problems with some old clocks drivers. I'm currently patching them and
hope to commit H2Plus support today or tomorow.

 Cheers,

-- 
Emmanuel Vadot <manu at bidouilliste.com> <manu at freebsd.org>


More information about the freebsd-arm mailing list