[no subject]

[ Thread Index | Date Index | More lists.tuxfamily.org/pok-devel Archives ]


But in your project, it may also makes no sense because this type of
optimization is out of the scope of your project. Thus, you can just take a
generic libpok.a for making a basic example or also just use a libpok.a
with all services (you would have to spot for all POK_USE* macro to enable
them) and include it to build your system.

Also, as you seem very active and willing to contribute, I will give you
access to the repository so that you can commit your changes directly.

Best,



On Sun, May 12, 2013 at 5:24 PM, Philipp Eppelt <
philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx> wrote:

> Hi,
>
> I can only find libpok/libpok.a. As libpok.a is generated for every
> partition I think it would be nice, if it resides in the partitions
> directory in generated-code/cpu/partX/ to save it from being overwritten by
> the libpok.a for the next partition.
>
> For the project it is essential, as several RTEMS instances with different
> needs and other partitions should be running in the system (one day).
> However, I don't know if any constraints apply to the generated-code/
> directory, preventing libpok.a to reside in the partX/ dir.
>
> I modified misc/mk/rules-partition.mk to copy the current libpok to the
> current partition directory. The patch is attached and I hope its accurate.
> It worked for example/partitions-threads/.
>
>
> Regards,
> Philipp
>
>
>
> On 05/12/2013 06:00 AM, Julien Delange wrote:
>
>> Hi,
>>
>> As far as I remember, POK builds a library that is then linked with the
>> code. For each partition, it builds a libpok.a tailored according to the
>> requirements of the partition. Then, you would need to link the libpok.a
>> of the partition to your RTEMS instance.
>> Also, I think the approach and your design seems to be clean. This is
>> good because most of the time, along the project, we use some hacks and
>> other tricks to address some problems/issues we do not expect. Then,
>> starting with a good design in mind is a good start :-)
>>
>>
>>
>> On Fri, May 10, 2013 at 11:16 AM, Philipp Eppelt
>> <philipp.eppelt@xxxxxxxxxx-**dresden.de<philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx>
>> <mailto:philipp.eppelt@**mailbox.tu-dresden.de<philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx>>>
>> wrote:
>>
>>     Hi,
>>
>>     yes Wiktor used a combine script to build partition.bin, sizes.c and
>>     to compile pok.elf again. This looks like misc/mk/rules-main.mk
>>     <http://rules-main.mk>.
>>
>>     My approach still utilizes this script to fuse everything together.
>>
>>     I wrote about it in the RTEMS wiki [0] and here it is:
>>
>>     * Design the POK system via an AADL model.
>>     * Keep the size of the final binary, including RTEMS, in mind.
>>     * Build the POK container for the RTEMS code --> Library
>>     * Take the library and pass it to RTEMS at compile time.
>>     * Use the last years pok_rtems_combine script to add the final
>>     binary as partition.
>>
>>     This is a clean approach on both sides. POK will be configured with
>>     the AADL model and the partition binary implements the POK side of
>>     the communication interface. As POK starts partitions by loading the
>>     ELF-binary and jumping in on the entry_ip specified in the
>>     ELF-header, RTEMS should start fine. On the RTEMS side the use of
>>     the virtualization layer functions works without issues, as the
>>     function implementations are passed via the library.
>>
>>
>>     Is it possible to tell the tool-chain to build a library file?
>>     When the elf is loaded the entry_IP is saved in the pok_partitions
>>     array and my guess is, it is used to start the binary. But how does
>>     the AADL subprogram source_name property play into this?
>>
>>     What do you think of this approach?
>>
>>     Regards,
>>     Philipp
>>
>>
>>     [0]
>>     http://wiki.rtems.org/wiki/__**index.php/GSOC_2013_-___**
>> Paravirtualization_of_RTEMS#__**Build_process<http://wiki.rtems.org/wiki/__index.php/GSOC_2013_-___Paravirtualization_of_RTEMS#__Build_process>
>>
>>     <http://wiki.rtems.org/wiki/**index.php/GSOC_2013_-_**
>> Paravirtualization_of_RTEMS#**Build_process<http://wiki.rtems.org/wiki/index.php/GSOC_2013_-_Paravirtualization_of_RTEMS#Build_process>
>> >
>>
>>
>>
>>     On 05/04/2013 06:16 AM, Julien Delange wrote:
>>
>>         Hi,
>>
>>         Indeed, the binaries are concatenated with the kernel to built the
>>         binary to load on the target. As far as I remember, this was
>>         also the
>>         approach used by the student last year but it was done manually
>> (not
>>         integrated with the actual toolchain). If you want to break, you
>>         need to
>>         know the address in RTEMS + the start address of the partition.
>>         That is
>>         why in the POK debug mode (as far as I remember), we show the
>> start
>>         address of a partition. Then, you should be able to put your
>>         breakpoint.
>>
>>         Please ask other question if you need. I am no longer developing
>>         POK but
>>         I hope that actual (anybody from owi, tpt ?) and old (Laurent ?)
>>         developers would help so that we might be able to design a first
>>         draft
>>         of proof of example of POK as an RTEMS virtualisation layer. On
>>         my side,
>>         I will do my best to answer the rest of knowledge I have :-)
>>
>>
>>         On Fri, May 3, 2013 at 6:17 AM, Philipp Eppelt
>>         <philipp.eppelt@xxxxxxxxxx-__**dresden.de<philipp.eppelt@xxxxxxxxxx-__dresden.de>
>>         <mailto:philipp.eppelt@**mailbox.tu-dresden.de<philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx>
>> >
>>         <mailto:philipp.eppelt@__mailb**ox.tu-dresden.de<http://mailbox.tu-dresden.de>
>>
>>         <mailto:philipp.eppelt@**mailbox.tu-dresden.de<philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx>>>>
>> wrote:
>>
>>              Hi,
>>
>>              I tried to inject an RTEMS binary into POK.
>>              By modifying the generated-code/cpu/Makefile to use hello.exe
>>              (RTEMS) as partition binary instead of part1/part1.elf and I
>>              introduced a makefile rule just depending on $(TARGET), so
>> the
>>              partitions and kernel aren't rebuild.
>>
>>              Result:
>>              partitions.bin -> nm shows the RTEMS symbols
>>              sizes.c -> contains the size of hello.exe
>>
>>              make run spins in a reload cycle.
>>              However, I did at least expect the binary to be loaded, but
>>         I didn't
>>              manage to confirm this with make run-gdb. It behaves
>>         strange, as
>>              breakpoints are accepted but the execution won't stop at
>>         the defined
>>              breakpoint. Sometimes it does after various tries and
>>         symbol-file
>>              switches.
>>
>>              Do you have some recommendations to solve this gdb issue?
>>              Or an idea how I can confirm the successful loading of the
>>         hello.exe
>>              binary?
>>
>>
>>              Regards,
>>              Philipp
>>
>>
>>
>>
>>              On 05/02/2013 07:39 PM, Philipp Eppelt wrote:
>>
>>                  Hi,
>>
>>                  I am a student at Dresden University of Technology,
>>         currently
>>                  applying
>>                  to Google Summer of Code for the RTEMS project.
>>
>>                  The purpose of my project is to design and implement a
>>                  paravirtualization layer in RTEMS to ease
>>         virtualization. As
>>                  proof-of-concept I like to use POK as host system.
>>
>>                  In last year's GSoC a student used POK to run RTEMS
>>         with the
>>                  goal to get
>>                  RTEMS ARINC 653 compliant.
>>                  He introduced new syscalls to POK and combined the
>>         RTEMS partly
>>                  linked
>>                  .ralf file with the POK binary. He used cat to pipe both
>>                  binaries into
>>                  the same file and used some 'magic' to fuse the two
>>         systems.
>>                  However, none of the usual tools (nm, readelf, objdump)
>>         read the
>>                  resulting binary correctly, therefore I refrain from
>>         taking this
>>                  way.
>>                  Additionally, I don't want to use direct syscalls from
>> the
>>                  guest, as the
>>                  virtualization layer in RTEMS should be portable.
>>
>>
>>                  Now I am searching for a way to start the RTEMS guest
>>         binary.
>>                  My first idea was to build an application in POK
>>         containing all
>>                  'guest
>>                  communication functions' (e.g. disable/enable
>>         interrupts, console
>>                  access) and to pass the fully linked file as a library
>>         to RTEMS.
>>                  Then
>>                  the RTEMS build process would run without errors, as
>>         the missing
>>                  function implementations are provided.
>>                  But I don't know, how I can call the RTEMS bsp_start()
>>         function for
>>                  instance, as POK doesn't know about this at compile time.
>>
>>                  The second idea was to build RTEMS first. This will
>>         fail due to
>>                  undefined references cause by the 'communication
>>         functions'. The
>>                  partly
>>                  linked .ralf file could then be inserted while POK is
>>         linked,
>>                  resolving
>>                  the undefined references. This is pretty much the
>>         approach of last
>>                  year's student. But that would intercept with the build
>>         process
>>                  of POK
>>                  and is therefore no satisfying approach. An custom
>>         linker script
>>                  might
>>                  resolve the issues with the tools, though.
>>
>>
>>                  So I am a little stuck here and seeking guidance.
>>                  Do you have another idea?
>>                  Is there some source code supporting foreign binaries to
>> be
>>                  executed in
>>                  a partition?
>>                  Do you know of projects doing something similar?
>>
>>
>>                  Regards,
>>                  Philipp
>>
>>
>>
>>
>>
>>
>>
>>
>>

--001a11c2e46ccb5f6404dc994da8
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div>Dear Philip,<br><br></div>From what I =
see in your patch, everything seems correct and great. Also, I should proba=
bly explain the rationale for having a different libpok.a for each partitio=
n. The initial reason was that we can remove automatically useless service =
using compilation macro. Then, we increase the code coverage, that is reall=
y useful for safety-critical applications that must comply with demanding c=
ode coverage standards.<br>
</div><br>But in your project, it may also makes no sense because this type=
 of optimization is out of the scope of your project. Thus, you can just ta=
ke a generic libpok.a for making a basic example or also just use a libpok.=
a with all services (you would have to spot for all POK_USE* macro to enabl=
e them) and include it to build your system.<br>
<br></div>Also, as you seem very active and willing to contribute, I will g=
ive you access to the repository so that you can commit your changes direct=
ly.<br><br></div>Best,<br><br></div><div class=3D"gmail_extra"><br><br><div=
 class=3D"gmail_quote">
On Sun, May 12, 2013 at 5:24 PM, Philipp Eppelt <span dir=3D"ltr">&lt;<a hr=
ef=3D"mailto:philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx"; target=3D"_blank">philip=
p.eppelt@xxxxxxxxxxxxxxxxxxxxx</a>&gt;</span> wrote:<br><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex">
Hi,<br>
<br>
I can only find libpok/libpok.a. As libpok.a is generated for every partiti=
on I think it would be nice, if it resides in the partitions directory in g=
enerated-code/cpu/partX/ to save it from being overwritten by the libpok.a =
for the next partition.<br>

<br>
For the project it is essential, as several RTEMS instances with different =
needs and other partitions should be running in the system (one day).<br>
However, I don&#39;t know if any constraints apply to the generated-code/ d=
irectory, preventing libpok.a to reside in the partX/ dir.<br>
<br>
I modified misc/mk/<a href=3D"http://rules-partition.mk"; target=3D"_blank">=
rules-partition.mk</a> to copy the current libpok to the current partition =
directory. The patch is attached and I hope its accurate.<br>
It worked for example/partitions-threads/.<br>
<br>
<br>
Regards,<br>
Philipp<div class=3D"im"><br>
<br>
<br>
On 05/12/2013 06:00 AM, Julien Delange wrote:<br>
</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-l=
eft:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br><div class=3D"im">
As far as I remember, POK builds a library that is then linked with the<br>
code. For each partition, it builds a libpok.a tailored according to the<br=
>
requirements of the partition. Then, you would need to link the libpok.a<br=
>
of the partition to your RTEMS instance.<br>
Also, I think the approach and your design seems to be clean. This is<br>
good because most of the time, along the project, we use some hacks and<br>
other tricks to address some problems/issues we do not expect. Then,<br>
starting with a good design in mind is a good start :-)<br>
<br>
<br>
<br>
On Fri, May 10, 2013 at 11:16 AM, Philipp Eppelt<br>
&lt;<a href=3D"mailto:philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx"; target=3D"_blan=
k">philipp.eppelt@xxxxxxxxxx-<u></u>dresden.de</a><br></div><div class=3D"i=
m">
&lt;mailto:<a href=3D"mailto:philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx"; target=
=3D"_blank">philipp.eppelt@<u></u>mailbox.tu-dresden.de</a>&gt;&gt; wrote:<=
br>
<br>
=C2=A0 =C2=A0 Hi,<br>
<br>
=C2=A0 =C2=A0 yes Wiktor used a combine script to build partition.bin, size=
s.c and<br>
=C2=A0 =C2=A0 to compile pok.elf again. This looks like misc/mk/<a href=3D"=
http://rules-main.mk"; target=3D"_blank">rules-main.mk</a><br></div>
=C2=A0 =C2=A0 &lt;<a href=3D"http://rules-main.mk"; target=3D"_blank">http:/=
/rules-main.mk</a>&gt;.<div class=3D"im"><br>
=C2=A0 =C2=A0 My approach still utilizes this script to fuse everything tog=
ether.<br>
<br>
=C2=A0 =C2=A0 I wrote about it in the RTEMS wiki [0] and here it is:<br>
<br>
=C2=A0 =C2=A0 * Design the POK system via an AADL model.<br>
=C2=A0 =C2=A0 * Keep the size of the final binary, including RTEMS, in mind=
..<br>
=C2=A0 =C2=A0 * Build the POK container for the RTEMS code --&gt; Library<b=
r>
=C2=A0 =C2=A0 * Take the library and pass it to RTEMS at compile time.<br>
=C2=A0 =C2=A0 * Use the last years pok_rtems_combine script to add the fina=
l<br>
=C2=A0 =C2=A0 binary as partition.<br>
<br>
=C2=A0 =C2=A0 This is a clean approach on both sides. POK will be configure=
d with<br>
=C2=A0 =C2=A0 the AADL model and the partition binary implements the POK si=
de of<br>
=C2=A0 =C2=A0 the communication interface. As POK starts partitions by load=
ing the<br>
=C2=A0 =C2=A0 ELF-binary and jumping in on the entry_ip specified in the<br=
>
=C2=A0 =C2=A0 ELF-header, RTEMS should start fine. On the RTEMS side the us=
e of<br>
=C2=A0 =C2=A0 the virtualization layer functions works without issues, as t=
he<br>
=C2=A0 =C2=A0 function implementations are passed via the library.<br>
<br>
<br>
=C2=A0 =C2=A0 Is it possible to tell the tool-chain to build a library file=
?<br>
=C2=A0 =C2=A0 When the elf is loaded the entry_IP is saved in the pok_parti=
tions<br>
=C2=A0 =C2=A0 array and my guess is, it is used to start the binary. But ho=
w does<br>
=C2=A0 =C2=A0 the AADL subprogram source_name property play into this?<br>
<br>
=C2=A0 =C2=A0 What do you think of this approach?<br>
<br>
=C2=A0 =C2=A0 Regards,<br>
=C2=A0 =C2=A0 Philipp<br>
<br>
<br>
=C2=A0 =C2=A0 [0]<br></div>
=C2=A0 =C2=A0 <a href=3D"http://wiki.rtems.org/wiki/__index.php/GSOC_2013_-=
___Paravirtualization_of_RTEMS#__Build_process" target=3D"_blank">http://wi=
ki.rtems.org/wiki/__<u></u>index.php/GSOC_2013_-___<u></u>Paravirtualizatio=
n_of_RTEMS#__<u></u>Build_process</a><div class=3D"im">
<br>
=C2=A0 =C2=A0 &lt;<a href=3D"http://wiki.rtems.org/wiki/index.php/GSOC_2013=
_-_Paravirtualization_of_RTEMS#Build_process" target=3D"_blank">http://wiki=
..rtems.org/wiki/<u></u>index.php/GSOC_2013_-_<u></u>Paravirtualization_of_R=
TEMS#<u></u>Build_process</a>&gt;<br>

<br>
<br>
<br>
=C2=A0 =C2=A0 On 05/04/2013 06:16 AM, Julien Delange wrote:<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Hi,<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Indeed, the binaries are concatenated with the =
kernel to built the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 binary to load on the target. As far as I remem=
ber, this was<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 also the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 approach used by the student last year but it w=
as done manually (not<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 integrated with the actual toolchain). If you w=
ant to break, you<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 need to<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 know the address in RTEMS + the start address o=
f the partition.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 That is<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 why in the POK debug mode (as far as I remember=
), we show the start<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 address of a partition. Then, you should be abl=
e to put your<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 breakpoint.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Please ask other question if you need. I am no =
longer developing<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 POK but<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 I hope that actual (anybody from owi, tpt ?) an=
d old (Laurent ?)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 developers would help so that we might be able =
to design a first<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 draft<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 of proof of example of POK as an RTEMS virtuali=
sation layer. On<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 my side,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 I will do my best to answer the rest of knowled=
ge I have :-)<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 On Fri, May 3, 2013 at 6:17 AM, Philipp Eppelt<=
br></div>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;<a href=3D"mailto:philipp.eppelt@xxxxxxxxxx=
-__dresden.de" target=3D"_blank">philipp.eppelt@xxxxxxxxxx-__<u></u>dresden=
..de</a><br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;mailto:<a href=3D"mailto:philipp.eppelt@mai=
lbox.tu-dresden.de" target=3D"_blank">philipp.eppelt@<u></u>mailbox.tu-dres=
den.de</a>&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;mailto:<a href=3D"mailto:philipp.eppelt@"; t=
arget=3D"_blank">philipp.eppelt@</a>__<a href=3D"http://mailbox.tu-dresden.=
de" target=3D"_blank">mailb<u></u>ox.tu-dresden.de</a><div><div class=3D"h5=
"><br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;mailto:<a href=3D"mailto:philipp.eppelt@mai=
lbox.tu-dresden.de" target=3D"_blank">philipp.eppelt@<u></u>mailbox.tu-dres=
den.de</a>&gt;&gt;&gt; wrote:<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Hi,<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0I tried to inject an RTEMS =
binary into POK.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0By modifying the generated-=
code/cpu/Makefile to use hello.exe<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(RTEMS) as partition binary=
 instead of part1/part1.elf and I<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0introduced a makefile rule =
just depending on $(TARGET), so the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0partitions and kernel aren&=
#39;t rebuild.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Result:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0partitions.bin -&gt; nm sho=
ws the RTEMS symbols<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sizes.c -&gt; contains the =
size of hello.exe<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0make run spins in a reload =
cycle.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0However, I did at least exp=
ect the binary to be loaded, but<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 I didn&#39;t<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0manage to confirm this with=
 make run-gdb. It behaves<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 strange, as<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0breakpoints are accepted bu=
t the execution won&#39;t stop at<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 the defined<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0breakpoint. Sometimes it do=
es after various tries and<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 symbol-file<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0switches.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Do you have some recommenda=
tions to solve this gdb issue?<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Or an idea how I can confir=
m the successful loading of the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 hello.exe<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0binary?<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Regards,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Philipp<br>
<br>
<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0On 05/02/2013 07:39 PM, Phi=
lipp Eppelt wrote:<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Hi,<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0I am a studen=
t at Dresden University of Technology,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 currently<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0applying<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0to Google Sum=
mer of Code for the RTEMS project.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0The purpose o=
f my project is to design and implement a<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0paravirtualiz=
ation layer in RTEMS to ease<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 virtualization. As<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0proof-of-conc=
ept I like to use POK as host system.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0In last year&=
#39;s GSoC a student used POK to run RTEMS<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 with the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goal to get<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0RTEMS ARINC 6=
53 compliant.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0He introduced=
 new syscalls to POK and combined the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 RTEMS partly<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0linked<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0.ralf file wi=
th the POK binary. He used cat to pipe both<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0binaries into=
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0the same file=
 and used some &#39;magic&#39; to fuse the two<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 systems.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0However, none=
 of the usual tools (nm, readelf, objdump)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 read the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0resulting bin=
ary correctly, therefore I refrain from<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 taking this<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0way.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Additionally,=
 I don&#39;t want to use direct syscalls from the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0guest, as the=
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0virtualizatio=
n layer in RTEMS should be portable.<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Now I am sear=
ching for a way to start the RTEMS guest<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 binary.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0My first idea=
 was to build an application in POK<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 containing all<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&#39;guest<br=
>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0communication=
 functions&#39; (e.g. disable/enable<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 interrupts, console<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0access) and t=
o pass the fully linked file as a library<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 to RTEMS.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Then<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0the RTEMS bui=
ld process would run without errors, as<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 the missing<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0function impl=
ementations are provided.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0But I don&#39=
;t know, how I can call the RTEMS bsp_start()<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 function for<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0instance, as =
POK doesn&#39;t know about this at compile time.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0The second id=
ea was to build RTEMS first. This will<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 fail due to<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0undefined ref=
erences cause by the &#39;communication<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 functions&#39;. The<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0partly<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0linked .ralf =
file could then be inserted while POK is<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 linked,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0resolving<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0the undefined=
 references. This is pretty much the<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 approach of last<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0year&#39;s st=
udent. But that would intercept with the build<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 process<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0of POK<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0and is theref=
ore no satisfying approach. An custom<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 linker script<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0might<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0resolve the i=
ssues with the tools, though.<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0So I am a lit=
tle stuck here and seeking guidance.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Do you have a=
nother idea?<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Is there some=
 source code supporting foreign binaries to be<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0executed in<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0a partition?<=
br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Do you know o=
f projects doing something similar?<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Regards,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Philipp<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</div></div></blockquote>
</blockquote></div><br></div>

--001a11c2e46ccb5f6404dc994da8--



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/