ARM with Qemu

Nicolas VARONA nvarona at pactenovation.fr
Mon Mar 2 15:10:04 CET 2015


Hi l4Hackers,

I am trying to set up a simulator with Qemu and l4linux ARM to simulate
the Zynq board. I have successfully compiled Fiasco and L4 with the tool
chain "arm-linux-gnueabi-gcc". I succeeded to launch l4linux but I have
no input on l4linux when it's running on Qemu. Nevertheless, the fiasco
jdb can be invoked. After reading the mailing list I changed the hello
world program to take inputs and tried a bare metal application with
l4re with the same result (I didn't modify the module list).

So, I tried to do the same thing with the board and I have inputs with
the l4 bare metal application and a kernel panic for the l4linux. I boot
with the uboot image on it. Nonetheless, using uImage for qemu doesn't
change anything:

./qemu-system-arm -M arm-generic-fdt-plnx -m 512M -kernel
/path/bootstrap.uimage -dtb /path/devicetree.dtb -serial mon:stdio

I tried to compile the u-boot from Xilinx and Qemu freezes when I launch
the l4 application.

To be sure I have done things right, I also tried the modified hello
world program on x86 intel and it works well. Then I launched a
Petalinux with Qemu and a uImage with uboot and it works. 

My Qemu is from Xilinx: QEMU emulator version 2.0.50

This is my program (taken from the mailing list:
http://os.inf.tu-dresden.de/pipermail/l4-hackers/2014/006337.html
<http://os.inf.tu-dresden.de/pipermail/l4-hackers/2014/006337.html>  ):

Main.c:

#include <stdio.h>



int main(void)
{
  printf("Press some key: ");
  char c = getchar();
  printf("\nYour input: %c (%d)\n", c, c);
  printf("Enter a number: ");
  int number;
  scanf("%x", &number);
  printf("Your number: %d\n", number);

  return 0;
}

 

Makefile:

PKGDIR                               ?= ../..
L4DIR                    ?= $(PKGDIR)/../..
TARGET                               = hello
SRC_C                  = main.c
EQUIRES_LIBS    = libc_be_file_stdin
include $(L4DIR)/mk/prog.mk



Module list:

entry hello-cfg
kernel fiasco -serial_esc
roottask moe rom/hello.cfg
module l4re
module ned
module hello.cfg
module hello

hello-cfg:

require("L4");
L4.default_loader:start({caps={},log = L4.Env.log,},"rom/hello");

 

Could it be an interruption problem? Where is my mistake?

Thanks in advance for your help,

Nicolas

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://os.inf.tu-dresden.de/pipermail/l4-hackers/attachments/20150302/3ff175d3/attachment.html>


More information about the l4-hackers mailing list