Hi Zachary,
On 02/10/2015 03:34 AM, Zachary wrote:
Hi all, I am interested in the work of Genode about muti_linux on pandaboard[1]. So, I downloaded the image from that page, and run it correctly. I try to build it by myself but get some troubles.
Firstly, there is no two_linux_panda.run script in the latest release of Genode, so I got one form genode 12.08. In order to build it , I changed 'omap4_fb' to 'fb_drv', and delete 'lib_log.lib.so'(The building log says can't find it). After that, I got an image.elf and run it on pandaboard, but it can't not work well.
This is the log of UART output: ... Genode 14.11 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 989 MB to init int main(): --- init created, waiting for exit condition --- Quota exceeded! amount=28672, size=4096, consumed=28672 [init] upgrading quota donation for Env::CPU (8192 bytes) Quota exceeded! amount=36864, size=4096, consumed=36864 [init] upgrading quota donation for Env::CPU (8192 bytes) Quota exceeded! amount=45056, size=4096, consumed=45056 [init] upgrading quota donation for Env::CPU (8192 bytes) [init -> sd_card_drv] --- OMAP4 SD card driver --- [init -> nic_bridge] Could not open file "config" [init -> nic_bridge] Could not obtain config file [init -> blocktest_term] int main(int, char**): --- terminal service started --- Insufficient quota for transfer: init -> nic_bridge have 1564672, need 3301376 [init] not enough quota for a donation of 3301376 bytes [init -> nic_bridge] resource_request: ram_quota=3301376 [init -> nic_bridge] virtual void Genode::Platform_env::release(): used before 8 [init -> nic_bridge] virtual void Genode::Platform_env::release(): used after f2 [init] child "nic_bridge" requests resources: ram_quota=3301376 [init -> fb_drv] Could not open file "config" [init -> fb_drv] Could not obtain config file [init -> http_term] int main(int, char**): --- terminal service started --- Insufficient quota for transfer: init -> part_blk have 1564672, need 4206592 [init] not enough quota for a donation of 4206592 bytes [init -> part_blk] resource_request: ram_quota=4206592 [init -> part_blk] virtual void Genode::Platform_env::release(): used before fr6 [init -> fb_drv] int main(int, char**): using default configuration: HDMI@...305... [init -> part_blk] virtual void Genode::Platform_env::release(): used after fre0 [init] child "part_blk" requests resources: ram_quota=4206592 [init -> vmlinux.1] Booting L4Linux ... [init -> vmlinux.1] ======> L4Linux starting... <======== [init -> vmlinux.1] Linux version 3.9.0-l4-gf2eebae (czzcz@...306...) (gcc5 [init -> vmlinux.1] Binary name: vmlinux [init -> vmlinux.1] This is an AEABI build. [init -> vmlinux.1] Linux kernel command line (2 args): mem=54M l4x_rd=initrd.gz [init -> vmlinux.1] CPU mapping (l:p)[0]: Image: 02000000 - 02500000 [5120 KiB]. [init -> vmlinux.1] Areas: Text: 02000000 - 023dc000 [3952kB] (a bit longer) [init -> vmlinux.1] Data: 023dc000 - 024091b8 [180kB] [init -> vmlinux.1] Initdata: 023b4000 - 023da9c0 [154kB] [init -> vmlinux.1] BSS: 0240a000 - 02446de8 [243kB] [init -> vmlinux.2] Booting L4Linux ... [init -> usb_drv] Services::Services(): Could not read screen resolution in cone [init -> usb_drv] Services::Services(): No <storage> config node found - not ste [init -> usb_drv] Services::Services(): No <raw> config node found - not startie [init -> usb_drv] Warning: No USB controllers enabled. [init -> usb_drv] Use <config (u/e/x)hci="yes"> in your 'usb_drv' configuration [init -> sd_card_drv] CID: 0x97009861 0x38caa862 0x44303847 0x02544d53 [init -> sd_card_drv] RCA: 0x895a [init -> vmlinux.2] ======> L4Linux starting... <======== [init -> vmlinux.2] Linux version 3.9.0-l4-gf2eebae (czzcz@...306...) (gcc5 [init -> vmlinux.2] Binary name: vmlinux [init -> vmlinux.2] This is an AEABI build. [init -> vmlinux.2] Linux kernel command line (2 args): mem=54M l4x_rd=initrd.gz [init -> sd_card_drv] SD card detected [init -> sd_card_drv] capacity: 7600 MiB [init -> vmlinux.2] CPU mapping (l:p)[0]: Image: 02000000 - 02500000 [5120 KiB]. [init -> vmlinux.2] Areas: Text: 02000000 - 023dc000 [3952kB] (a bit longer) [init -> vmlinux.2] Data: 023dc000 - 024091b8 [180kB] [init -> vmlinux.2] Initdata: 023b4000 - 023da9c0 [154kB] [init -> vmlinux.2] BSS: 0240a000 - 02446de8 [243kB] [init -> part_blk] Partition 1: LBA 62 (78058 blocks) type: c [init -> part_blk] Partition 2: LBA 78120 (46872 blocks) type: c [init -> part_blk] Partition 3: LBA 124992 (46872 blocks) type: c [init -> nitpicker] Could not open file "config" [init -> nitpicker] Could not obtain config file [init -> nitpicker] create session with args: label="linux.1", ram_quota=28672 [init -> nitpicker] create session with args: label="linux.2", ram_quota=28672 [init -> nitpicker] create session with args: label="http_fb", ram_quota=28672 [init -> nitpicker] create session with args: label="blocktest_fb", ram_quota=22 [init -> linux.1] using xywh=(1,1,510,382) [init -> linux.2] using xywh=(513,513,510,382) [init -> http_fb] using xywh=(1,1,510,376) [init -> blocktest_fb] using xywh=(513,513,510,376) [init -> http_term] Could not open file "config" [init -> http_term] Could not obtain config file [init -> blocktest_term] Could not open file "config" [init -> blocktest_term] Could not obtain config file [init -> http_term] cell size is 8x16 [init -> blocktest_term] cell size is 8x16 [init -> http_term] create terminal session [init -> blocktest_term] create terminal session [init -> http_term] new terminal session: [init -> http_term] framebuffer has 510x376 pixels [init -> http_term] character size is 8x16 pixels [init -> http_term] terminal size is 63x23 characters [init -> blocktest_term] new terminal session: [init -> blocktest_term] framebuffer has 510x376 pixels [init -> blocktest_term] character size is 8x16 pixels [init -> blocktest_term] terminal size is 63x23 characters [init -> nic_bridge] Invalid session request, no matching policy [init -> vmlinux.1] l4io_get_root_device: Not implemented yet! [init -> vmlinux.1] Device scan: [init -> vmlinux.1] l4io_iterate_devices: Not implemented yet! [init -> vmlinux.1] Device scan done. [init -> vmlinux.2] l4io_get_root_device: Not implemented yet! [init -> vmlinux.2] Device scan: [init -> vmlinux.2] l4io_iterate_devices: Not implemented yet! [init -> vmlinux.2] Device scan done. [init] vmlinux.1: no route to service "Timer" [init -> vmlinux.1] C++ runtime: Genode::Parent::Service_denied [init] vmlinux.2: no route to service "Timer" [init -> vmlinux.1] void* abort(): abort called [init -> vmlinux.2] C++ runtime: Genode::Parent::Service_denied [init -> vmlinux.2] void* abort(): abort called [init] virtual void Genode::Child_policy::exit(int): child "test-libc_ffat" exi1 [init] virtual void Genode::Child_policy::exit(int): child "test-lwip_httpsrv" 1
Only test-lwip_httpssrv shows on the The HDMI moniter, and it says : [test-lwip_httpssrv] Could not open file "config" [test-lwip_httpssrv] Could not obtain config file [test-lwip_httpssrv] no VFS configured [test-lwip_httpssrv] DHCP timed out [test-lwip_httpssrv] We got no IP address!
I want to ask:
- What is 'lib_log.lib.so'? Can I delete it?
The libc_log.lib.so was a library used to map data send to stdout or stderr to Genode's LOG service. This kind of libc backend libraries was replaced by a set of more flexible VFS-plugins. For more information about the usage and integration of these plugins, please have a look into the corresponding section of the Genode 14.05 release notes:
http://genode.org/documentation/release-notes/14.05#Per-process_virtual_file...
To sum it up, you don't need the libc_log.lib.so anymore, but any libc program needs to be configure properly so that its printings are connected to the right backend - in this case the LOG service. A config snippet for this purpose looks like the following:
<config> ... <libc stdin="/dev/null" stdout="/dev/log" stderr="/dev/log"> <vfs> <dir name="dev"> <log/> <null/> </dir> </vfs> </libc> </config
- Is there a document about configuration of run script?
The run-script structure and the configuration language are two distinct topics. A run-script comprises everything that is needed to do (build, configuration, assembly, testing) to have a ready-to-use or ready-to-test setup. Therefore it is closely coupled with Genode's build system. The XML-style configuration you can find in a run-script is actually the aggregation of all component's configuration. It is used by the system's init process to spawn the components, route communication channels between them, express access permissions, and deliver component-specific configurations to them.
To better understand the interplay of run-script and build system a good starting point can be found here:
http://genode.org/documentation/developer-resources/build_system
To better understand the init process configuration have a look at here:
http://genode.org/documentation/developer-resources/init
Although both documents provide a good introduction to the field, they are a bit outdated. Currently, Norman works on a "Genode manual", which includes both topics and represents the "state of the art". A preliminary version can be found here:
http://genode.org/files/e01096b9ffe3f416157f6ec46c467725/manual-2015-01-23.p...
- How to run the two_linux_panda correctly?
According to the output you posted, the biggest problem is a missing route to the "Timer" service needed by both Linux instances. That's why they don't come up. Probably, it is enough to add something like:
<service name="Timer"> <child name="timer"/> </service>
to the route declaration of both linux instances. Alternatively you might change their default routes.
Moreover, I can see that there are some test-programs started "test-libc_ffat" and "test-lwip_httpsrv" that you probably don't need. I would exclude them ("blocktest_term" too) so you get rid of complexity you don't want to have in your script.
Best Regards Stefan
Best, Zachary
[1] http://genode.org/documentation/articles/pandaboard
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@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main