Changes between Version 51 and Version 52 of GSoC/2013/ParavirtualizationOfRTEMS
- Timestamp:
- 12/02/14 10:39:41 (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GSoC/2013/ParavirtualizationOfRTEMS
v51 v52 14 14 Up 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. 15 15 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>16 I 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 17 17 = Partitioned OS Kernel - POK = 18 18 19 19 20 20 This 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> 21 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 22 22 = Architecture Analysis and Design Language = 23 23 … … 123 123 12 124 124 13 last: $(TARGET) 125 126 </code> 125 }}} 127 126 128 127 Invoking 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. … … 151 150 == libcpu/score split == 152 151 153 == 152 === Structure === 154 153 155 154 The CPU dependent code is split up in virtualization sensitive and unsensitive parts. … … 162 161 163 162 In the end there is one virtual CPU model and one BSP per virtualized architecture. 164 == 163 === Configuration === 165 164 166 165 The only change to the RTEMS configuration scripts, will be additional names for the ''--enable-rtemsbsp='' option. 167 == 166 === Questionable parts === 168 167 169 168 All files are below /cpukit/score/cpu/i386/ or c/src/lib/libcpu/i386/. 170 169 This 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. || || 208 178 == Collective directory ''virt'' == 209 179 210 == 180 === Structure === 211 181 212 182 To prevent cluttering the BSP and CPU directories with additional virtual CPU models, a collective directory is added. … … 223 193 224 194 The Makefiles have to cover these directories. 225 == 195 === Configuration === 226 196 227 197 To configure RTEMS for virtual execution of the binary, a new flag is introduced. … … 240 210 241 211 [https://github.com/phipse/L4RTEMS L4RTEMS source code] 242 == 212 === Structure === 243 213 244 214 … … 255 225 Also some privileged instructions are skipped. 256 226 It's still work in progress. 257 == 227 === Configuration === 258 228 259 229 Also some configuration files were adapted, see the doc file in the source code. 260 230 261 231 To configure RTEMS ''l4vcpu-rtems4.11'' must be used as a target and ''pc386'' as BSP. 262 == 232 === Compilation & Start up === 263 233 264 234 … … 269 239 270 240 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>241 The 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 272 242 These specifications are enforced by an additional layer called APEX (APplication EXecutive). 273 243 … … 472 442 So it doesn't need to be present at compile time. 473 443 Furthermore, 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 = 475 445 = Run RTEMS on other hypervisors = 476 446 … … 494 464 The second defines the board services needed by the BSP; e.g. clock, console. 495 465 Copy 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.).466 Compile these files and build a library including all hypervisor code needed (vCPU calls, !VirtualMachineMonitor communication, etc.). 497 467 Then pass it over to RTEMS into c/src/lib/libbsp/i386/virtualpok/ as ''libpart.a''. 498 468 … … 507 477 508 478 509 I don't have a lot of knowledge about these architectures, so this HowTo is pretty abstract.479 I don't have a lot of knowledge about these architectures, so this !HowTo is pretty abstract. 510 480 511 481 First of all, you have to find out if your target architecture has so called "virtualization holes". … … 526 496 = References = 527 497 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