Want to run L4Re on Raspberry PI.
Paul Boddie
paul at boddie.org.uk
Mon Jun 10 20:16:55 CEST 2019
On Wednesday 29. May 2019 18.27.03 Paul Boddie wrote:
>
> P.S. I have a selfish interest in following this as I could imagine also
> trying out L4Re on the Raspberry Pi at some point. I guess that the
> framebuffer isn't currently supported though.
Well, I got round to trying this, but it hasn't been entirely successful.
First of all, I made a toolchain using Buildroot 2019.02.2 and what are
effectively the raspberrypi0_defconfig settings. The generated gcc is version
7.4.0, ld is version 2.29.1.
Note that I am using the Zero, not the Zero-W, model. This doesn't appear to
have any real toolchain implications, as far as I can tell from looking at the
configurations.
Some pertinent settings:
BR2_GCC_TARGET_ABI="aapcs-linux"
BR2_GCC_TARGET_CPU="arm1176jzf-s"
BR2_GCC_TARGET_FPU="vfp"
BR2_GCC_TARGET_FLOAT_ABI="hard"
BR2_GCC_TARGET_MODE="arm"
BR2_ARM_CPU_HAS_FPU=y
BR2_ARM_CPU_HAS_VFPV2=y
BR2_ARM_CPU_HAS_ARM=y
BR2_ARM_CPU_HAS_THUMB=y
BR2_ARM_CPU_ARMV6=y
BR2_arm1176jzf_s=y
BR2_ARM_EABIHF=y
BR2_ARM_FPU_VFPV2=y
Then, I built Fiasco with the Raspberry Pi Zero W selected:
CONFIG_PF_BCM283X=y
CONFIG_BSP_NAME="bcm283x"
CONFIG_CAN_ARM_CPU_1176=y
CONFIG_ARM_V6=y
CONFIG_ARM_V6PLUS=y
CONFIG_PF_BCM283X_RPIZW=y
CONFIG_ABI_VF=y
CONFIG_ARM_1176=y
CONFIG_FPU=y
CONFIG_LAZY_FPU=y
CONFIG_ARM_1176_CACHE_ALIAS_FIX=y
CONFIG_ARM_CPU_ERRATA=y
In this configuration, I also selected things that appeared useful, such as
FPU support and the fixes/errata, which might not have been appropriate.
Finally, I built L4Re with the Raspberry Pi Model B selected as platform:
CONFIG_CPU_ARM_ARMV6ZK=y
CONFIG_CPU="armv6zk"
CONFIG_PLATFORM_TYPE="rpi_b"
CONFIG_CPU_ARMV6KPLUS=y
CONFIG_CPU_ARMV6PLUS=y
CONFIG_PLATFORM_TYPE_rpi_b=y
Having built the "hello" example, deploying the bootstrap_hello.raw file to
the microSD card as hello.raw, alongside the extra files that the Raspberry
Pi's proprietary bootloader uses, with a config.txt file that indicates the
kernel...
kernel=hello.raw
...I see the payload starting over the UART connection, but it appears that
the board keeps restarting, meaning that I just see the following over and
over again:
L4 Bootstrapper
Build: #8 Mon Jun 10 19:44:17 CEST 2019, 7.4.0
Scanning up to 512 MB RAM, starting at offset 32MB
Memory size is 512MB (00000000 - 1fffffff)
RAM: 0000000000000000 - 000000001fffffff: 524288kB
Total RAM: 512MB
Scanning fiasco
Scanning sigma0
Scanning moe
Moving up to 5 modules behind 1100000
Instrumenting the boot_modules.cc file in the bootstrap package, I see that
the Boot_modules::move_modules is not completed. Generally, modules appear to
be identified, but some other operation is causing a problem that appears to
cause the board to reset.
I have also tried building Fiasco for first generation Raspberry Pi devices
along with the FPU support and other special options. And I have tried
building for the Pi Zero-W without these extra options. The result seems to be
the same, so I suspect that the kernel plays no role here, particularly since
the problem appears to lie in the bootstrap code.
I wonder if others who have looked at Raspberry Pi hardware might be able to
share their experiences. It is rather frustrating to have to piece together
the details of building and deploying for hardware ostensibly supported by
L4Re.
Paul
More information about the l4-hackers
mailing list