[PATCH] i386/virtualpok BSP, virtual BSP to be used with POK, build with enable-paravirt

Chris Johns chrisj at rtems.org
Thu Mar 13 07:31:48 UTC 2014


On 8/03/2014 12:38 am, Philipp Eppelt wrote:
>
> For the next design, I would be very interested to hear the expectations
> and requirements up front.

The ideal situation is POK being built without any specific detail of 
RTEMS and RTEMS POK support is implemented for a supported architecture 
and a BSP within the architecture.

We should treat POK as a binary black box when looking from RTEMS. RTEMS 
makes calls to a specific and agreed interface and POK responds in a 
defined manner.

This approach means the tools and options used to build POK and RTEMS 
can vary independently. The only requirement is the resulting code 
generated meets the ABI.

When I mean ABI I mean the machine level.

> So we don't have to go through this discussion again.

I agree.

> Questions like:
> Are we allowed to have dependencies to the host(POK)?

Yes at an ABI level that defines the calls to POK. RTEMS needs to 
contain code that implements these calls.

> Which dependencies are allowed?

Consider how we would need to maintain the continuous integration server 
so this can be tested.

We need a suitable POK version and we would assume this is a stable 
released version that is approved for RTEMS. There may be RTEMS specific 
patches as version skew between the upstream POK and RTEMS move around. 
POK is considered stable and should not vary in the short to medium 
term. The POK build system would need to support the RTEMS server farm 
operating system which is FreeBSD. You can consider the POK dependency 
as being similar to the tools for RTEMS and how they are handled. If POK 
needs specific tools or other libraries these dependences would need to 
be added to the list. I would not expect to be building POK each time we 
build and test RTEMS.

If the interface code which is currently called libpart.a was in RTEMS 
we would have no further dependences. The way the code is built and how 
it is built is contained in RTEMS so a change in build flags would 
effect the BSP, RTEMS and this code. If this code is separate from POK 
and RTEMS we would need to build this code with the tool set we would be 
using to build RTEMS and the same flags (or close to the same flags). We 
would also need to manage the dependence between the build flags used 
for both libraries. Some architectures have flags that vary the ABI, eg 
hard vs soft float. If this code resides in POK we would have RTEMS 
dependent on POK and POK dependent on RTEMS and that is not my preferred 
path.

> Which dependency checks need to be in place?

The ABI version in POK and the version in RTEMS. I suspect this would be 
a runtime check. It the libpart.a is separate another check for its 
version would be needed and maybe the flags used to build it (I have no 
idea how you would do this).

If the ABI changes we need a new version number to check and a new POK 
and updated code in RTEMS (if libpart.a was in RTEMS). If the RTEMS 
build flags or new tools breaks the ABI on the RTEMS side that is a bug 
and our testing should show this. A new POK needs to have been tested 
against a known RTEMS version and so the ABI tested before it is 
released and we use it for our testing.

I hope this helps.

Chris



More information about the devel mailing list