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