How to run two_linux_panda
Stefan Kalkowski
stefan.kalkowski at ...1...
Thu Mar 5 12:41:38 CET 2015
Hi Zachary,
On 03/04/2015 08:27 AM, Zachary wrote:
> Hello,
>
> Thanks again for your work.
>
> I have applied your patch, and the instances run correctly.
>
> However, there is only one linux widow showing on top-left of the screen.
> This is my config of nit_fb:
> ...
> <start name="linux.1">
> <binary name="nit_fb"/>
> <resource name="RAM" quantum="4M"/>
> <provides>
> <service name="Framebuffer"/>
> <service name="Input"/>
> </provides>
> <config xpos="1" ypos="0" width="510" height="382"/>
> </start>
> <start name="linux.2">
> <binary name="nit_fb"/>
> <resource name="RAM" quantum="4M"/>
> <provides>
> <service name="Framebuffer"/>
> <service name="Input"/>
> </provides>
> <config xpos="513" ypos="0" width="510" height="382"/>
> </start>
> ...
>
> It is very strange that the output of the log is different from my config:
> ...
> [init -> linux.2] using xywh=(513,513,510,382)
> [init -> linux.1] using xywh=(1,1,510,382)
> ...
Indeed this is strange. I have reproduced your issue. The problem is
that since Genode 14.08 we have a completely new GUI architecture.
Thereby, the framebuffer multiplexer "nitpicker" was minimized even
more, excluding the mouse pointer and statusbar from it. Moreover,
nitpicker now correlates its clients to configured domains.
In your example no domain is defined in nitpickers configuration at all.
To me the observed outcome, which is both nit_fb frames are located at
offset 0,0 of the screen, looks like unintended behavior. Either
nitpicker should decline to visualize clients it cannot relate to a
domain (and warn about it), or it should use a default domain even if
this is not stated explicitly. Maybe Norman (author of the whole graphic
stack) can add whether this is expected behavior?
Anyway, if you declare a default domain in nitpickers configuration,
everything works fine. Just add the following snippet to the nitpicker
start entry:
<config>
<domain name="" layer="1"/>
<policy label="" domain=""/>
</config>
Nevertheless, even when adding above snippet to your configuration, you
will miss a mouse-pointer and statusbar. If you want to have any of
those, you might have a look at the "repos/os/run/demo.run" script, and
copy out the configuration of "nitpicker", "report_rom", "status_bar",
and "pointer" from there. This way you will gain a setup that is almost
identically to the old nitpicker used within the ancient
two_linux_panda.run script.
Regards
Stefan
>
> That is the whole run script:
>
> assert_spec foc
> assert_spec platform_panda
>
> #
> # Build
> #
> build {
> core
> init
> drivers/timer
> drivers/framebuffer
> drivers/sd_card
> drivers/usb
> drivers/gpio
> server/nic_bridge
> server/part_blk
> server/nitpicker
> server/nit_fb
> l4linux
> }
>
> create_boot_directory
>
> #
> # Config
> #
> set config {
> <config prio_levels="2">
> <parent-provides>
> <service name="ROM"/>
> <service name="RAM"/>
> <service name="IRQ"/>
> <service name="IO_MEM"/>
> <service name="IO_PORT"/>
> <service name="CAP"/>
> <service name="PD"/>
> <service name="RM"/>
> <service name="CPU"/>
> <service name="LOG"/>
> <service name="SIGNAL"/>
> </parent-provides>
> <default-route>
> <any-service> <parent/> <any-child/> </any-service>
> </default-route>
> <start name="timer" priority="0">
> <resource name="RAM" quantum="1M"/>
> <provides><service name="Timer"/></provides>
> </start>
> <start name="fb_drv" priority="-1">
> <resource name="RAM" quantum="4M"/>
> <provides><service name="Framebuffer"/></provides>
> </start>
> <start name="sd_card_drv" priority="0">
> <resource name="RAM" quantum="4M"/>
> <provides><service name="Block"/></provides>
> </start>
> <start name="gpio_drv">
> <resource name="RAM" quantum="4M"/>
> <provides><service name="Gpio"/></provides>
> <config/>
> </start>
> <start name="usb_drv" priority="-1">
> <resource name="RAM" quantum="12M"/>
> <provides>
> <service name="Input"/>
> <service name="Nic"/>
> </provides>
> <config ehci="yes">
> <hid/>
> <nic mac="02:00:00:00:01:01" />
> </config>
> </start>
> <start name="part_blk">
> <resource name="RAM" quantum="2M"/>
> <provides><service name="Block"/></provides>
> <config>
> <policy label="vmlinux.1 -> sda" partition="1" />
> <policy label="vmlinux.2 -> sda" partition="2" />
> </config>
> <route>
> <service name="Block"> <child name="sd_card_drv"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> <start name="nic_bridge" priority="-1">
> <resource name="RAM" quantum="2M"/>
> <provides><service name="Nic"/></provides>
> <route>
> <service name="Nic"> <child name="usb_drv"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
>
> <start name="nitpicker" priority="-1">
> <resource name="RAM" quantum="2M"/>
> <provides><service name="Nitpicker"/></provides>
> <route>
> <service name="Input"> <child name="usb_drv"/> </service>
> <service name="Framebuffer"> <child name="fb_drv"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
>
> <start name="linux.1" priority="-1">
> <binary name="nit_fb"/>
> <resource name="RAM" quantum="4M"/>
> <provides>
> <service name="Framebuffer"/>
> <service name="Input"/>
> </provides>
> <config xpos="1" ypos="0" width="510" height="382"/>
> </start>
> <start name="linux.2" priority="-1">
> <binary name="nit_fb"/>
> <resource name="RAM" quantum="4M"/>
> <provides>
> <service name="Framebuffer"/>
> <service name="Input"/>
> </provides>
> <config xpos="513" ypos="0" width="510" height="382"/>
> </start>
>
> <start name="vmlinux.1" priority="-1">
> <binary name="l4linux"/>
> <resource name="RAM" quantum="96M"/>
> <config args="mem=254M l4x_rd=initrd.gz">
> <block label="sda" />
> </config>
> <route>
> <service name="Block"> <child name="part_blk"/> </service>
> <service name="Input"> <child name="linux.1"/> </service>
> <service name="Framebuffer"> <child name="linux.1"/> </service>
> <service name="Nic"> <child name="nic_bridge"/> </service>
> <any-service> <any-child/> <parent/> </any-service>
> </route>
> </start>
> <start name="vmlinux.2" priority="-1">
> <binary name="l4linux"/>
> <resource name="RAM" quantum="96M"/>
> <config args="mem=254M l4x_rd=initrd.gz">
> <block label="sda" />
> </config>
> <route>
> <service name="Block"> <child name="part_blk"/> </service>
> <service name="Input"> <child name="linux.2"/> </service>
> <service name="Framebuffer"> <child name="linux.2"/> </service>
> <service name="Nic"> <child name="nic_bridge"/> </service>
> <any-service> <any-child/> <parent/> </any-service>
> </route>
> </start>
> </config>}
>
> install_config $config
>
> #
> # Boot modules
> #
> set boot_modules {
> core
> init
> timer
> nic_bridge
> nitpicker
> nit_fb
> part_blk
> l4linux
> initrd.gz
> fb_drv
> sd_card_drv
> gpio_drv
> usb_drv
> }
>
> set uri "http://genode.org/files/l4linux/busybox-initrd-arm-20120710.gz"
> if {![file exists bin/initrd.gz]} {
> puts "Download initramfs ..."
> exec >& /dev/null wget -c -O bin/initrd.gz $uri
> }
> exec >& /dev/null wget -O bin/initrd.gz.md5 $uri.md5
> cd bin
> exec md5sum -c initrd.gz.md5
> cd ..
>
> build_boot_image [join $boot_modules " "]
> ------------------------------------------------------------------------------
>
> Is there somethig wrong with it?
>
> Best,
> Zachary
>
>
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming The Go Parallel Website, sponsored
> by Intel and developed in partnership with Slashdot Media, is your hub for all
> things parallel software development, from weekly thought leadership blogs to
> news, videos, case studies, tutorials and more. Take a look and join the
> conversation now. http://goparallel.sourceforge.net/
> _______________________________________________
> genode-main mailing list
> genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
>
--
Stefan Kalkowski
Genode Labs
http://www.genode-labs.com/ ยท http://genode.org/
More information about the users
mailing list