[ 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"><<a hr=
ef=3D"mailto:philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx" target=3D"_blank">philip=
p.eppelt@xxxxxxxxxxxxxxxxxxxxx</a>></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'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>
<<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">
<mailto:<a href=3D"mailto:philipp.eppelt@xxxxxxxxxxxxxxxxxxxxx" target=
=3D"_blank">philipp.eppelt@<u></u>mailbox.tu-dresden.de</a>>> 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 <<a href=3D"http://rules-main.mk" target=3D"_blank">http:/=
/rules-main.mk</a>>.<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 --> 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 <<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>><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 <<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 <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>><br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 <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 <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>>>> 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 -> nm sho=
ws the RTEMS symbols<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sizes.c -> 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'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'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 'magic' 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'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'guest<br=
>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0communication=
functions' (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'=
;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'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 'communication<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 functions'. 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'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--