Want to run L4Re on Raspberry PI.

Adam Lackorzynski adam at os.inf.tu-dresden.de
Tue Jun 11 00:08:59 CEST 2019


On Mon Jun 10, 2019 at 20:16:55 +0200, Paul Boddie wrote:
> 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.

If it just reboots in the middle of a rather normal C function, then
it's likely some instruction that has been generated there and not
understood by the CPU. Could you maybe use u-boot as it shows a register
dump when something like this happens, allowing to know where it
branched away. 


Adam




More information about the l4-hackers mailing list