Changes between Version 51 and Version 52 of GSoC/2013/ParavirtualizationOfRTEMS


Ignore:
Timestamp:
Dec 2, 2014, 10:39:41 AM (5 years ago)
Author:
Chris Johns
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GSoC/2013/ParavirtualizationOfRTEMS

    v51 v52  
    1414Up to date source code can be found in my [https://github.com/phipse/rtems rtems repo] in the ''virt-pok'' branch and in the [https://github.com/phipse/pok POK repo] on github.
    1515
    16 I have also published a paper about this project on the 15th Real-Time Linux Workshop 2013. <ref> P. Eppelt: ''Running RTEMS in POK Partitions'', Proceedings of the 15th Real-Time Linux Workshop, 2013. https://wwwpub.zih.tu-dresden.de/~s8940405/rtlws13_rtems_in_pok_partitions.pdf </ref>
     16I have also published a paper about this project on the 15th Real-Time Linux Workshop 2013. P. Eppelt: ''Running RTEMS in POK Partitions'', Proceedings of the 15th Real-Time Linux Workshop, 2013. https://wwwpub.zih.tu-dresden.de/~s8940405/rtlws13_rtems_in_pok_partitions.pdf
    1717=  Partitioned OS Kernel - POK  =
    1818
    1919
    2020This paper explains POK in detail.
    21 <ref>J. Delange and Laurent Lec. POK, an ARINC653-compliant operating system released under the BSD license. In - 13th Real-Time Linux Workshop. http://julien.gunnm.org/data/publications/article-dl11-osadl11.pdf</ref>
     21J. Delange and Laurent Lec. POK, an ARINC653-compliant operating system released under the BSD license. In - 13th Real-Time Linux Workshop. http://julien.gunnm.org/data/publications/article-dl11-osadl11.pdf
    2222=  Architecture Analysis and Design Language  =
    2323
     
    123123 12
    124124 13 last: $(TARGET)
    125 
    126 </code>
     125}}}
    127126
    128127Invoking with ''make last'' produces the expected result: The size.c file contains the size of hello.exe and nm partitions.bin shows the RTEMS symbols.
     
    151150==  libcpu/score split  ==
    152151
    153 == = Structure  ===
     152=== Structure  ===
    154153
    155154The CPU dependent code is split up in virtualization sensitive and unsensitive parts.
     
    162161
    163162In the end there is one virtual CPU model and one BSP per virtualized architecture.
    164 == = Configuration  ===
     163=== Configuration  ===
    165164
    166165The only change to the RTEMS configuration scripts, will be additional names for the ''--enable-rtemsbsp='' option.
    167 == = Questionable parts  ===
     166=== Questionable parts  ===
    168167
    169168All files are below /cpukit/score/cpu/i386/ or c/src/lib/libcpu/i386/.
    170169This lists the name, the file its in and the instruction(s):
    171 {| class="wikitable" border="1"
    172 |-
    173 ! Name
    174 ! File
    175 ! Instruction
    176 ! Description
    177 |-
    178 | _CPU_ISR_Set_level
    179 | rtems/score/cpu.h
    180 | cli, sti
    181 |
    182 |-
    183 | _CPU_Fatal_halt
    184 | rtems/score/cpu.h
    185 | hlt
    186 |
    187 |-
    188 | _CPU_Thread_Idle_body
    189 | cpu.c
    190 | hlt
    191 |
    192 |-
    193 | CPU_EFLAGS_INTERRUPTS_ON/_OFF
    194 | rtems/score/cpu.h
    195 |
    196 |
    197 |-
    198 | interrupt.h
    199 | rtems/score/interrupt.h
    200 |
    201 | Critical.
    202 |-
    203 | rdtsc
    204 | libcpu: cpuModel.h
    205 |
    206 | No direct access possible.
    207 |}
     170
     171|| Name || File || Instruction || Description
     172|| _CPU_ISR_Set_level || rtems/score/cpu.h || cli, sti || -
     173|| _CPU_Fatal_halt || rtems/score/cpu.h || hlt || -
     174|| _CPU_Thread_Idle_body || cpu.c || hlt || -
     175|| CPU_EFLAGS_INTERRUPTS_ON/_OFF || rtems/score/cpu.h || || -
     176|| interrupt.h || rtems/score/interrupt.h || Critical. || -
     177|| rdtsc || libcpu: cpuModel.h || No direct access possible. || ||
    208178==  Collective directory ''virt''  ==
    209179
    210 == = Structure  ===
     180=== Structure  ===
    211181
    212182To prevent cluttering the BSP and CPU directories with additional virtual CPU models, a collective directory is added.
     
    223193
    224194The Makefiles have to cover these directories.
    225 == = Configuration  ===
     195=== Configuration  ===
    226196
    227197To configure RTEMS for virtual execution of the binary, a new flag is introduced.
     
    240210
    241211[https://github.com/phipse/L4RTEMS L4RTEMS source code]
    242 == = Structure  ===
     212=== Structure  ===
    243213
    244214
     
    255225Also some privileged instructions are skipped.
    256226It's still work in progress.
    257 == = Configuration  ===
     227=== Configuration  ===
    258228
    259229Also some configuration files were adapted, see the doc file in the source code.
    260230
    261231To configure RTEMS ''l4vcpu-rtems4.11'' must be used as a target and ''pc386'' as BSP.
    262 == = Compilation & Start up  ===
     232=== Compilation & Start up  ===
    263233
    264234
     
    269239
    270240
    271 The ARINC 653 standard defines "a software specification for space and time partitioning in Safety-critical avionics Real-time operating systems".<ref>https://en.wikipedia.org/wiki/ARINC_653</ref>
     241The ARINC 653 standard defines "a software specification for space and time partitioning in Safety-critical avionics Real-time operating systems". https://en.wikipedia.org/wiki/ARINC_653
    272242These specifications are enforced by an additional layer called APEX (APplication EXecutive).
    273243
     
    472442So it doesn't need to be present at compile time.
    473443Furthermore, it we should be able to reuse the virtualpok BSP, provided we replace libpart.a with a library provided by L4Re.
    474 HowTo  =
     444!HowTo  =
    475445=  Run RTEMS on other hypervisors  =
    476446
     
    494464The second defines the board services needed by the BSP; e.g. clock, console.
    495465Copy these two files to your work directory on the hypervisor and implement these functions.
    496 Compile these files and build a library including all hypervisor code needed (vCPU calls, VirtualMachineMonitor communication, etc.).
     466Compile these files and build a library including all hypervisor code needed (vCPU calls, !VirtualMachineMonitor communication, etc.).
    497467Then pass it over to RTEMS into c/src/lib/libbsp/i386/virtualpok/ as ''libpart.a''.
    498468
     
    507477
    508478
    509 I don't have a lot of knowledge about these architectures, so this HowTo is pretty abstract.
     479I don't have a lot of knowledge about these architectures, so this !HowTo is pretty abstract.
    510480
    511481First of all, you have to find out if your target architecture has so called "virtualization holes".
     
    526496=  References  =
    527497
    528 <references/>
     498* https://wwwpub.zih.tu-dresden.de/~s8940405/rtlws13_rtems_in_pok_partitions.pdf
     499* http://julien.gunnm.org/data/publications/article-dl11-osadl11.pdf
     500* https://en.wikipedia.org/wiki/ARINC_653