Hi,

With Genode 17.08 released, what is the current level of support for Genode/seL4 on i.MX6 platform? I've applied my previous changes to Genode to enable it on Sabre Lite platform, and currently I have no problems running test scenarios under default hw kernel. But when attempting to run Genode with seL4, the boot process hangs up once it reaches "Jumping to kernel-image entry point..."

ELF-loader started on CPU: ARM Ltd. Cortex-A9 r2p10
     paddr=[20000000..201bc01f]
ELF-loading image 'kernel'
     paddr=[10000000..10039fff]
     vaddr=[e0000000..e0039fff]
     virt_entry=e0000000
ELF-loading image 'genode.elf'
     paddr=[1003a000..10261fff]
     vaddr=[2000000..2227fff]
     virt_entry=2000000
Enabling MMU and paging
Jumping to kernel-image entry point...

I've tried to introduce debug statements like Genode's log( ) for core component and kernel_debugger_outstring( ) for seL4 side, but it never reaches any of them. Is it even possible to run a simple Genode scenario (e.g., run/log or run/init) on seL4 on ARM at the moment?

Thank you

On Mon, Jun 26, 2017 at 12:14 AM, Yevgeny Lavrov <ylavrov13@...9...> wrote:
Hi, Norman

> I wonder, how exactly are you running the image on the board?
I normally just copy created image over to SD card and then run it via bootelf command.

> In contrast, on ARM, everything (seL4 kernel + Genode) must be contained in a single image. The details of how such an image is assembled is kernel-specific
This might explain why the image didn't give me any output. I ended up with two images: image.elf & sel4.elf instead of just image.elf in my <sabre_lite>/var/run/log/

> Consequently, there must exist a seL4-specific tool for creating it. Can you please elaborate, which tool you use and which particular steps you take?
Didn't think of any tool for combining image.elf & sel4.elf together until I got your reply. Only thought of modifying /tool/run/boot_dir/sel4 file.
I'll give Hinnerks elfloader-tool a try today.

> Have you tried to run a non-Genode-based seL4 image on the hardware? I would not try to run
> Genode on the device before running a simple seL4 example first.

Yes, this was my starting point. All seL4 apps ran w/o any problems.

Thanks

On Fri, Jun 23, 2017 at 7:20 PM, Hinnerk van Bruinehsen <h.v.bruinehsen@...169.....491...> wrote:
On Fri, Jun 23, 2017 at 12:00:42PM +0200, Norman Feske wrote:
> Hello Yevgeny,
>
> On 23.06.2017 05:31, Yevgeny Lavrov wrote:
> > Running the image on board gave no result, apart from msg: ## Starting
> > application at 0x10001000 ...
>
> I wonder, how exactly are you running the image on the board? In
> particular, how is the image created?
>
> I am asking because the boot procedure on ARM is different from
> x86/multiboot. On x86, the kernel and the Genode ELF image are loaded by
> the boot loader (e.g., Grub) as separate boot modules. The kernel is
> started by the boot loader. At the startup of the kernel, the kernel
> finds the physical memory location of the Genode ELF image in the
> multiboot information and ELF-loads core by using this information. In
> contrast, on ARM, everything (seL4 kernel + Genode) must be contained in
> a single image. The details of how such an image is assembled is
> kernel-specific. Consequently, there must exist a seL4-specific tool for
> creating it. Can you please elaborate, which tool you use and which
> particular steps you take?
>
> Another potential pitfall would be the use of the wrong UART or the use
> of a kernel configuration without debug support. The latter is needed
> for the kernel-provided UART driver. Have you tried to run a
> non-Genode-based seL4 image on the hardware? I would not try to run
> Genode on the device before running a simple seL4 example first.

Hi,

I'm using a fork of seL4's elfloader-tool that I've hacked together to
create an image that acutally boots (at least it gets into the genode
userland image where it is failing).
To be clear: I need to add calls to kernel_debugger_outstring as I get
a data fault before the logging infrastructure works (I guess due to
exception handling not being initialized before the fail occurs).

I'm using an am335x based board so I can't test if this works for other
hardware, but if anyone is interested you can find my elfloader fork at
https://github.com/N8Fear/elfloader-tool

The bootable image is then created by running the script from the
elfloader dir
TOOLPREFIX=arm-none-eabi- PLAT=am335x ./gen_boot_image.sh
<path to genode>/build/wega_am335x/var/run/log/sel4
<path to genode>/build/wega_am335x/var/run/log/image.elf
/tmp/out.elf

PLAT and TOOLPREFIX need to be changed accordingly and when building the
prelinked elfloader binary PLAT and ARMV needs to be adjusted as well
(take a look at the Makefile).

I guess for your board you should try PLAT=imx6 for building and for
creating the image.

I guess I should do some cleanup if anyone else wants to use the
stuff...

With kind regards,
Hinnerk



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
genode-main@...172...net
https://lists.sourceforge.net/lists/listinfo/genode-main