Hi,
On 03/30/2013 08:03 AM, longjks wrote:
Like Stefan said , I can started L4Android on top of Fiasco.OC x86 32bit QEMU. It is exciting to see that Android is runing on genode. Then I decided to modify the 'l4android.run' script to started L4Andaroid on PandaBoard. I have add the necessary driver into the 'l4android.run' script and copy the system image(system-ginger.img)to the second partition. But l4android still can not run rightly. I can see the last log in 'terminal_log' is that: !io scheduler cfq registered(default) !brd:module loaded !mousedev: PS/2 mouse device common for all mice !ashemen: initialized !logger:created 256K log 'log_main' !logger:created 256K log 'log_events' !logger:created 256K log 'log_radio' !logger:created 256K log 'log_system' !ttyS0 at MMIO 0x1(irq=211) is a L4 !rtc-genode rtc-genode.0: rtc core:registered rtc-genode as rtc0 !genode_fb:framebuffer at 0x00000000, size 600k !genode_fb:mode is 640x480x16 !Console:switching to colour frame buffer device 80x30 ! input: Genode input key as /devices/virtual/input/input0 !intput:Genode intput mouse as /devices/virtual/intput/intput! Then it stops. What is the problem? and how can I get the whole log from "terminal_log"?
You can get the whole log by removing the log_term, and use core's LOG service for all children instead. Then all logs will appear on serial line. We've put the log_term in place in some run-scripts only for demonstration purposes, when there is no serial line available. For debugging it's often more convenient to use only the serial line.
You can get the log and l4android.run I modified in attachment.
The patch you've sent is not complete, it won't build all necessary components. Anyway, what I could see from your log file is an unresolved pagefault from one component:
"Could not resolve pf=400feff8 ip=10004b8"
After rebuilding your scenario myself, and entering the kernel debugger (via escape on the serial console) after the boot process completes, I've seen it is the sd_card driver that caused the fault.
The address 0x400feff8 immediately set off my alarm bells. In Genode at address 0x40000000 normally the thread context area starts including the thread's stacks. Moreover, the pagefault address is nearby a page boundary. When looking at the instruction that raised the fault ("push {r3,lr}") it gets obvious that a stack overflow occured.
The problem was the usleep function implemented in the omap4 sd_card driver. When this driver was written, there was no usleep function existent in the timer session interface. Therefore, usleep was provided in this driver by simply wrapping the msleep function of the timer session. Some time ago, the timer session interface was rewritten to use an asynchronous signal mechanism. The msleep call in this interface was replaced by a simple wrapper around the latterly available usleep function. When usleep got available in the timer session interface, nobody removed the superfluous function in the sd-card driver. Now, when either usleep or msleep were called in the Omap4 sd-card driver, that function called the other one, and vice versa in an endless loop.
I've opened a corresponding issue in our tracker:
https://github.com/genodelabs/genode/issues/705
There you'll find a patch to resolve that problem. With that patch in place Android boots fine on my Pandaboard.
Regards Stefan
thanks.
longjks
Own the Future-Intel(R) Level Up Game Demo Contest 2013 Rise to greatness in Intel's independent game demo contest. Compete for recognition, cash, and the chance to get your game on Steam. $5K grand prize plus 10 genre and skill prizes. Submit your demo by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main