Genode on i.MX6Q Sabre Lite

Alexander Boettcher alexander.boettcher at ...1...
Wed Sep 13 08:48:59 CEST 2017


Hello,

On 13.09.2017 00:31, Yevgeny Lavrov wrote:
> 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

as written in the release notes, we support out-of-the-box the i.MX6
based Wand-Quad board.

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

The UART for Sabre Lite and Wand Quad are not the same, as far as I know.

If you have based your modifications on

repos/base-sel4/lib/mk/spec/wand_quad/kernel-sel4.mk

make sure that the line with the "sed" is dropped/removed, because this
line changes the UART "#define" to match the Wand_Quad board (and not
the Sabre Lite) for the elfloader of seL4
(elfloader/src/arch-arm/plat-imx6/platform.h) in the build directory.

Also, the seL4 kernel configuration (autoconf.h) is adjusted to match
the Wand Quad board, and not the Sabre Lite board, see

repos/base-sel4/patches/wand_quad.config
repos/base-sel4/ports/sel4.port

> I've tried to introduce debug statements like Genode's log( ) for core
> component and kernel_debugger_outstring( ) for seL4 side, but it never

You don't get a sign of life of the kernel, so you will not get any sign
from Genode either. Genode uses the debug facility of the seL4 kernel to
print messages, so you have to have to set the right board (autoconf.h)
and UART configuration for the seL4 elfloader
(elfloader/src/arch-arm/plat-imx6/platform.h).

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

Sure, on the Wand Quad board all tests of tool/autopilot.list for
Genode/seL4 are executed every night and the results look fine.

Cheers.

> 
> Thank you
> 
> On Mon, Jun 26, 2017 at 12:14 AM, Yevgeny Lavrov <ylavrov13 at ...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 at ...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 at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>>
>>
>>
> 
> 
> 
> ------------------------------------------------------------------------------
> 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
> 

-- 
Alexander Boettcher
Genode Labs

http://www.genode-labs.com - http://www.genode.org

Genode Labs GmbH - Amtsgericht Dresden - HRB 28424 - Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list