Hey Genodians,
I am facing a problem with the Server/Client Application. But first a short summary, what happend: With the help from Johannes I am able to use Genode on the ZedBoard. So the hello_tutorial is working fine and after that I am now trying to build my own Server/Client Application.
Here is the output from the boot up: kernel initialized Genode 15.05 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 502 MB to init int main(): --- init created, waiting for exit condition --- [init] parent provides [init] service "ROM" [init] service "RAM" [init] service "IRQ" [init] service "IO_MEM" [init] service "CAP" [init] service "PD" [init] service "RM" [init] service "CPU" [init] service "LOG" [init] service "SIGNAL" [init] child "timer" [init] RAM quota: 765952 [init] ELF binary: timer [init] priority: 0 [init] provides service Timer [init] child "own_server" [init] RAM quota: 33271808 [init] ELF binary: own_server [init] priority: 0 [init] provides service First_Service [init] provides service Second_Service [init] child "own_client" [init] RAM quota: 16494592 [init] ELF binary: own_client [init] priority: 0 [init] child "timer" announces service "Timer" init -> own_server -> own_server: undefined instruction at ip=3983cc init -> own_client -> own_client: undefined instruction at ip=3743cc
My assumption on what is going wrong is the following: The server and the client needs to access the jitterentropy node at /dev/random and needs to write in the /tmp folder. Here is the part of the run file: set config { <config verbose="yes"> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <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"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start>
<start name="own_server"> <resource name="RAM" quantum="32M"/> <provides> <service name="First_Service"/> <service name="Second_Service"/> </provides> <config> <libc> <vfs> <dir name="dev"> <jitterentropy name="random"/> </dir> <dir name="tmp"> <ram/> </dir> </vfs> </libc> </config> </start>
<start name="own_client"> <resource name="RAM" quantum="16M"/> <config> <libc> <vfs> <dir name="dev"> <jitterentropy name="random"/> </dir> <dir name="tmp"> <ram/> </dir> </vfs> </libc> </config> </start> </config>} I have no initramfs and linux kernel included which could provide the path to the folders. So how do I provide the server and client to access the file/folder? Can I use the server/ram_fs or should I use the Noux Runtime Environment? Or is it something else?
Thank you in advance. Jack
Hello Jack,
* jack@...358... <jack@...358...> [2015-10-22 12:11:17 +0200]:
I am facing a problem with the Server/Client Application. But first a short summary, what happend: With the help from Johannes I am able to use Genode on the ZedBoard. So the hello_tutorial is working fine and after that I am now trying to build my own Server/Client Application.
[…] init -> own_server -> own_server: undefined instruction at ip=3983cc init -> own_client -> own_client: undefined instruction at ip=3743cc
My assumption on what is going wrong is the following: The server and the client needs to access the jitterentropy node at /dev/random and needs to write in the /tmp folder. […]
Our jitterentropy port on ARM depends on the performance counters. To use them on base-hw/ARM you have to explicitly enable user space access to the performance counters by setting 'SPECS += perf_counter' in your <build>/etc/specs.conf file.
I have no initramfs and linux kernel included which could provide the path to the folders. So how do I provide the server and client to access the file/folder? Can I use the server/ram_fs or should I use the Noux Runtime Environment? Or is it something else?
The easiest way would be to use the ram_fs component indeed.
Regards Josef
Hi Josef,
thank you very much! I got it up and running. Had a little struggle with the configuration of the ram_fs with the policies. So I copy my config setup here, perhaps it will help someone.
<start name="ram_fs"> <resource name="RAM" quantum="32M"/> <provides> <service name="File_system"/> </provides> <config verbose="yes"> <content> <dir name="dev"> </dir> <dir name="tmp"> </dir> </content> <policy label="root" root="/" writable="yes"/> <policy label="own_server -> dev" root="/dev" writable="yes"/> <policy label="own_server -> tmp" root="/tmp" writable="yes"/> <policy label="own_client -> dev" root="/dev" writable="yes"/> <policy label="own_client -> tmp" root="/tmp" writable="yes"/> </config> </start>
<start name="own_server"> <resource name="RAM" quantum="32M"/> <provides> <service name="First_Service"/> <service name="Second_Service"/> </provides> <config verbose="yes"> <libc stdout="/dev/log" stderr="/dev/log"> <vfs> <dir name="dev"> <fs label="dev"/> <jitterentropy name="random"/> <log/> </dir> <dir name="tmp"> <fs label="tmp"/> </dir> </vfs> </libc> </config> </start>
<start name="own_client"> <resource name="RAM" quantum="16M"/> <config verbose="yes"> <libc stdout="/dev/log" stderr="/dev/log"> <vfs> <dir name="dev"> <fs label="dev"/> <jitterentropy name="random"/> <log/> </dir> <dir name="tmp"> <fs label="tmp"/> </dir> </vfs> </libc> </config> </start>
Kind regards Jack
On 22 October 2015 12:59:16 +02:00, Josef Söntgen <josef.soentgen@...106......> wrote:
Hello Jack,
- <jack@...358...> <<jack@...358...>> [2015-10-22 12:11:17 +0200]:
I am facing a problem with the Server/Client Application. But first a short summary, what happend: With the help from Johannes I am able to use Genode on the ZedBoard. So the hello_tutorial is working fine and after that I am now trying to build my own Server/Client Application.
[…] init -> own_server -> own_server: undefined instruction at ip=3983cc init -> own_client -> own_client: undefined instruction at ip=3743cc
My assumption on what is going wrong is the following: The server and the client needs to access the jitterentropy node at /dev/random and needs to write in the /tmp folder. […]
Our jitterentropy port on ARM depends on the performance counters. To use them on base-hw/ARM you have to explicitly enable user space access to the performance counters by setting 'SPECS += perf_counter' in your <build>/etc/specs.conf file.
I have no initramfs and linux kernel included which could provide the path to the folders. So how do I provide the server and client to access the file/folder? Can I use the server/ram_fs or should I use the Noux Runtime Environment? Or is it something else?
The easiest way would be to use the ram_fs component indeed.
Regards Josef
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main