Porting Fiasco + L4Re to Raspberry Pi 2
Alexander Weidinger
alexander.weidinger at tum.de
Fri Nov 24 10:30:31 CET 2017
Hi Adam,
I'm using U-Boot in the version v2017.09 by denx to boot the device.
The binary blobs `bootcode.bin` and `start.elf` are from [0].
Additionally the `config.txt` in use is as follows:
> kernel=u-boot.bin
> enable_uart=1
> init_uart_baud=115200
> init_uart_clock=3000000
I'm directly using the *.elf file(s) and copy them to `loadaddr`,
which should be 0x00200000.
Regards,
Alexander
[0] https://github.com/raspberrypi/firmware/tree/1.20170811/boot
On 24.11.2017 01:10, Adam Lackorzynski wrote:
> Hi,
>
> On Tue Nov 21, 2017 at 16:19:52 +0100, Alexander Weidinger wrote:
>> Hello Antoine, hello l4-hackers,
>>
>> I'm currently trying to replicate the port to RPi2 for Fiasco/Genode,
>> which works great, until I get stuck in the boot process:
>>
>>> L4 Bootstrapper
>>> Build: #7 Di 21. Nov 15:19:58 CET 2017, 5.4.0
>>> Scanning up to 960 MB RAM, starting at offset 32MB
>>> Memory size is 960MB (00000000 - 3bffffff)
>>> RAM: 0000000000000000 - 000000003bffffff: 983040kB
>>> Total RAM: 960MB
>>> Scanning fiasco
>>> Scanning sigma0
>>> Scanning moe
>>> Moving up to 5 modules behind 1100000
>>> moving module 02 { 10ed000-111e4a3 } -> { 11de000-120f4a3 } [201892]
>>> moving module 01 { 10db000-10ec337 } -> { 11cc000-11dd337 } [70456]
>>> moving module 00 { 1053000-10da0e7 } -> { 1144000-11cb0e7 } [553192]
>>> moving module 04 { 1031000-105257b } -> { 1122000-114357b } [136572]
>>> moving module 03 { 100f000-1030467 } -> { 1100000-1121467 } [136296]
>>> Loading fiasco
>>> Loading sigma0
>>> Loading moe
>>> find kernel info page...
>>> found kernel info page (via ELF) at 2000
>>> Regions of list 'regions'
>>> [ 1000, 1a3f] { a40} Kern fiasco
>>> [ 2000, 96fff] { 95000} Kern fiasco
>>> [ 97000, 970eb] { ec} Root mbi_rt
>>> [ e0000, ea9e7] { a9e8} Sigma0 sigma0
>>> [ f0000, f517b] { 517c} Sigma0 sigma0
>>> [ 140000, 17c4eb] { 3c4ec} Root moe
>>> [ 1000000, 100e523] { e524} Boot bootstrap
>>> [ 1100000, 1143fff] { 44000} Root Module
>>> found kernel options (via ELF) at 3000
>>> Sigma0 config ip:000e0100 sp:00000000
>>> Roottask config ip:00140254 sp:00000000
>>> Starting kernel fiasco at 00001200
>>> Non-HYP kernel detected but running in HYP mode, switching back
>>
>> Sometimes (non-reproducible) additionally I get:
>>> [...]
>>> Hello from Startup::stage2
>>
>> Which means stage2 comes up but hangs afterwards.
>> And even sometimes I am able to completely boot the device:
>
> Seems some initialization thing to me in your case.
> "Unfortunately" works fine for me so far. Are you using u-boot or
> are you booting differently?
>
> Adam
>
>>> [...]
>>> FPU: Initialize
>>> FPU0: Subarch: 2, Part: 30, Rev: 5, Var: 7, Impl: 41
>>> ARM generic timer: freq=19200000 interval=19200 cnt=36679846728534094
>>> SERIAL ESC: allocated IRQ 57 for serial uart
>>> Not using serial hack in slow timer handler.
>>> Welcome to L4/Fiasco.OC!
>>> L4/Fiasco.OC microkernel on arm
>>> Rev: r75 compiled with gcc 5.4.0 for Broadcom 2836 []
>>> Build: #2 Tue Nov 21 15:17:05 CET 2017
>>>
>>> Calibrating timer loop... done.
>>> MDB: use page size: 20
>>> MDB: use page size: 12
>>> SIGMA0: Hello!
>>> KIP @ 2000
>>> allocated 4KB for maintenance structures
>>> SIGMA0: Dump of all resource maps
>>> RAM:------------------------
>>> [0:0;fff]
>>> [4:97000;97fff]
>>> [0:98000;dffff]
>>> [0:eb000;effff]
>>> [0:f6000;13ffff]
>>> [4:140000;17cfff]
>>> [0:17d000;10fffff]
>>> [4:1100000;1143fff]
>>> [0:1144000;3affffff]
>>> IOMEM:----------------------
>>> [0:3c000000;ffffffff]
>>> MOE: Hello world
>>> MOE: found 965472 KByte free memory
>>> MOE: found RAM from 97000 to 3b000000
>>> MOE: allocated 943 KByte for the page array @0x17d000
>>> MOE: virtual user address space [0-bfffffff]
>>> MOE: rom name space cap -> [C:103000]
>>> MOE: rwfs name space cap -> [C:105000]
>>> BOOTFS: [1100000-1121468] [C:107000] l4re
>>> BOOTFS: [1122000-114357c] [C:109000] hello
>>> MOE: cmdline: moe --init=rom/hello
>>> MOE: Starting: rom/hello
>>> MOE: loading 'rom/hello'
>>> Hello World!
>>
>> As one can see I tried to replicate this for vanilla Fiasco/L4Re (r75),
>> just to make sure. The same happens of course with Fiasco/Genode where
>> I'm also only sometimes (non-reproducible) able to completely boot the
>> device.
>>
>> I also saw the `globalconfig.out` from the thread 'Booting L4Linux on
>> Raspberry Pi 2'. When using the same configuration, where you (Antoine)
>> were able to successfully boot the RPi2 I'm stuck with the same problem.
>>
>> On the bright side, booting Fiasco/L4Re in Qemu (vers. 2.10.1) seems to
>> always work when using the following command to start it up:
>>> qemu-system-arm -M raspi2 -kernel /home/alex/Projects/foc_upstream/l4/build_rpi2/images/bootstrap.elf -nographic
>>
>> If one could give me some insight on why this happens and/or how to
>> resolve this, I'd really appreciate it.
>>
>> Regards,
>> Alexander
>
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
More information about the l4-hackers
mailing list