Hi Norman Trying to test the Arora example on RaspberryPI. I have compiled it for hw_rpi, when try to run Arora get this serial output, like you have told me about the Platform service:
Genode 14.08 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 166 MB to init int main(): --- init created, waiting for exit condition --- [init -> fb_drv] --- fb_drv started --- [init] fb_drv: no route to service "Platform" [init -> fb_drv] C++ runtime: Genode::Parent::Service_denied [init -> fb_drv] void* abort(): abort called [init -> usb_drv] Services::Services(): No <storage> config node found - not starting the USB Storage (Block) service [init -> usb_drv] Enabled UHCI (USB 1.0/1.1) support [init -> usb_drv] Enabled EHCI (USB 2.0) support [init] usb_drv: no route to service "Platform" [init -> usb_drv] C++ runtime: Genode::Parent::Service_denied [init -> usb_drv] void* abort(): abort called [init -> arora] tar archive 'qt5_fs_arora.tar' local at 230000, size is 503808 [init -> arora] void init_libc_lock_pipe(): init_libc_lock_pipe() [init -> arora] using the pipe libc plugin [init -> arora] void init_nic_dhcp(): init_nic_dhcp() [init -> arora] Using DHCP for interface configuration. [init -> arora] {anonymous}::Plugin::Plugin(): using the lwIP libc plugin
After that i have modified the arora.run script based on demo.run to support the service Platform, this is a patch version of the changes:
diff --git a/repos/ports/run/arora.run b/repos/ports/run/arora.run index c229bd6..a4a7207 100644 --- a/repos/ports/run/arora.run +++ b/repos/ports/run/arora.run @@ -9,10 +9,14 @@ set feature(Nic) 1 set build_components [qt5_build_components feature]
append build_components { + drivers/input server/loader server/tar_rom server/nit_fb app/launchpad test/nitpicker app/arora }
+lappend_if [have_spec gpio] build_components drivers/gpio +lappend_if [have_spec platform_rpi] build_components drivers/platform + build $build_components
create_boot_directory @@ -44,6 +48,13 @@ append config {
append config [qt5_start_nodes feature]
+append_if [have_spec platform_rpi] config { + <start name="platform_drv"> + <resource name="RAM" quantum="1M"/> + <provides><service name="Platform"/></provides> + <config/> + </start>} + append config { <start name="loader"> <resource name="RAM" quantum="2M"/> @@ -131,6 +142,8 @@ if {[have_spec qt4_deprecated]} { } }
+lappend_if [have_spec platform_rpi] boot_modules platform_drv + build_boot_image $boot_modules
append qemu_args " -m 512 "
When try to run the Arora example get the framebuffer initialized but don't start the arora browser on the framebuffer, this is the serial output:
Genode 14.08 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 165 MB to init int main(): --- init created, waiting for exit condition --- [init -> fb_drv] --- fb_drv started --- [init -> platform_drv] --- Raspberry Pi platform driver --- [init -> usb_drv] Services::Services(): No <storage> config node found - not starting the USB Storage (Block) service [init -> usb_drv] Enabled UHCI (USB 1.0/1.1) support [init -> usb_drv] Enabled EHCI (USB 2.0) support [init -> usb_drv] Using configured mac: 2e:60:90:0c:4e:01 [init -> usb_drv] dev_info: DWC OTG Controller [init -> usb_drv] dev_info: new USB bus registered, assigned bus number 1 [init -> usb_drv] dev_info: irq 17, io mem 0x00000000 [init -> usb_drv] dev_info: USB hub found [init -> usb_drv] dev_info: 1 port detected [init -> nitpicker] create session with args: label="wm", ram_quota=28672 [init -> nitpicker] create session with args: label="pointer", ram_quota=28672 [init -> nitpicker] create session with args: label="wm -> decorator", ram_quota=28672 [init -> arora] tar archive 'qt5_fs_arora.tar' local at 230000, size is 503808 [init -> arora] void init_libc_lock_pipe(): init_libc_lock_pipe() [init -> arora] using the pipe libc plugin [init -> arora] void init_nic_dhcp(): init_nic_dhcp() [init -> arora] Using DHCP for interface configuration. [init -> arora] {anonymous}::Plugin::Plugin(): using the lwIP libc plugin
I think that "No <storage> config node found ..." should not be causing the problem running the Arora browser. Any ideas or suggestions?
Best regards
On 09/05/2014 02:58 PM, Norman Feske wrote:
Hello Reinier,
I have switched to Genode's release 14.08, prepared again the ports and compiled the examples in the same way, but when try to test it on RPI, only the colored screen again. Someone have tested successfully this examples on RPI hardware? I have tested successfully the Demo example.
the SDL and Qt5 examples are indeed not expected to work on the Raspberry Pi out of the box. Most run scripts still lack two things that are important for the RPi, namely the platform driver and the USB HID driver. Those components are included in the 'os/run/demo.run' script but are lacking in many others such as the 'libports/run/sdl.run'. However, you should still get serial output in any case. Normally, the serial output gives enough indications about the missing pieces. Given the demo.run script as example, complementing the other run scripts with the missing pieces should be straight forward.
Has the switch to version 14.08 resolved the build problem?
As another heads-up warning regarding the Rpi, the USB driver is still not perfect. There are two issues. First, the keyboard is not working reliably unless you set the number of used host channels to 8 instead of 2 using the 'dwc_param_host_channels_default' define in <genode-dir>/contrib/dde_linux-<hash>/src/lib/dde_linux/drivers/usb/host/dwc_otg/dwc_otg_core_if.h. Second, the USB driver draws an enormous amount of CPU time because it has to issue USB start-of-frame (SOF) transactions every microframe (that is every 250 microseconds). So when the USB driver is running, there is hardly any CPU time left for the other processes. On Linux, this problem has been somehow fixed by the so-called FIQ optimization. I am still pondering about the best way to relieve this issue when using the base-hw kernel.
Best regards Norman