+ All Categories
Home > Documents > ELCEurope 2009 Grenoble · Common porting strategies ... – Over ad hoc API Kernel space User...

ELCEurope 2009 Grenoble · Common porting strategies ... – Over ad hoc API Kernel space User...

Date post: 11-Jul-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
62
Philippe GERUM - SourceTrek ELC-Europe 2009 - Grenoble
Transcript
  • Philippe GERUM - SourceTrek

    ELCEurope 2009  Grenoble

  • Introduction

  •    

    The context

    ● Linux about to be natively real-time– PREEMPT_RT close to mainline

  •    

    The context

    ● Linux about to be natively real-time– PREEMPT_RT close to mainline

    ● Legacy applications knocking on Linux's door– Traditional, embedded RTOS– Non-POSIX core API– Flat / physically addressed memory– Typically: VxWorks, pSOS, VRTX etc.

  •    

    The issue

    ● Porting them to Linux currently means– Rebasing on Linux, changing design

    or,– Keeping design, keeping proprietary RTOS

    ● How to go the Linux way?– Keeping design, using Linux technologies

  •    

    Possible solution

    ● Combine existing Linux technologies– Native real-time support– Linux-native virtualization– RTOS emulation

  •    

    Common porting strategies

    ● Port to dual kernel– Over POSIX API– Over API emulator– Over ad hoc API

    Kernel space

    User space

    Real-time core

    Application

    APIs, emulators

    Linuxsub-systems

    RT driversRT drivers

    Regulardrivers

    Regulardrivers

    RT libraries GNU libc

  •    

    Common porting strategies

    ● Go Linux native– Over POSIX API– Over API emulator

    Kernel space

    User space

    Application

    Linuxsub-systems

    RT driversRT drivers Regular

    drivers

    Regulardrivers

    GNU libc

    EmulatorsEmulators

  •    

    Common porting strategies

    ● Introduce virtualization– Original RTOS guest– Vendor-specific

    ● Bare metal hypervisor– Leverage multi-core

    Bare metal (RT) HypervisorBare metal (RT) Hypervisor

    Linu

    x

    RTO

    S

    SBC

    / ha

    rdw

    are

    Core Core

  •    

    Approaches are challenging

    ● Dual kernel Linux architecture is complex

  •    

    Approaches are challenging

    ● Dual kernel Linux architecture is complex

    LibrariesLibraries

    Rea

    l-tim

    e st

    ack

    Reg

    ular

    Lin

    ux

    Drivers

    Core Core

    Drivers

    Libraries

    Apps Apps

  •    

    Approaches are challenging

    ● Dual kernel Linux architecture is complex– Pressure on application design

    LibrariesLibraries

    Rea

    l-tim

    e st

    ack

    Reg

    ular

    Lin

    ux

    Drivers

    Core Core

    Drivers

    Libraries

    Apps Apps

  •    

    Approaches are challenging

    ● Native real-time Linux is complex

  •    

    Approaches are challenging

    ● Native real-time Linux is complex

    LibrariesLibraries

    Drivers

    Core

    Apps

    Global efficiency

    General fairness

    Bounded latency

    Total unfairness

    RegularReal-time

  •    

    Approaches are challenging

    ● Native real-time Linux is complex– Pressure on system configuration

    LibrariesLibraries

    Drivers

    Core

    Apps

    Global efficiency

    General fairness

    Bounded latency

    Total unfairness

    RegularReal-time

  •    

    Approaches are challenging

    ● Proprietary virtualization systems?

  •    

    Approaches are challenging

    ● Proprietary virtualization systems?– Introduce dependencies on vendor

    ● Hypervisor technology● Private (PV) Linux kernel● Original RTOS as guest

  •    

    Approaches are challenging

    ● Proprietary virtualization systems?– Introduce dependencies on vendor

    ● Hypervisor technology● Private (PV) Linux kernel● Original RTOS as guest

    – Enable Linux for proprietary RTOS

  •    

    Approaches are challenging

    ● Proprietary virtualization systems?– Introduce dependencies on vendor

    ● Hypervisor technology● Private (PV) Linux kernel● Original RTOS as guest

    – Enable Linux for proprietary RTOS

    BUT,– Do not help the Linux real-time effort

  •    

    Teams are challenged

    ● Inclination to seek 1:1 API mapping– Over-emulation of missing calls– Pitfalls in mapping common calls

  •    

    Teams are challenged

    ● Inclination to seek 1:1 API mapping– Over-emulation of missing calls– Pitfalls in mapping common calls

    ● Driver model– Weak vs strong– Linux kernel API is more complex

  •    

    Teams are challenged

    ● Inclination to seek 1:1 API mapping– Over-emulation of missing calls– Pitfalls in mapping common calls

    ● Driver model– Weak vs strong– Linux kernel API is more complex

    ● Protocol stacks– Keep “as is” or offload to Linux?

  •    

    Legacy issues

    ● Software architecture– BSP code exposed– Application and driver code entangled– Non-public API sometimes used

  •    

    Legacy issues

    ● Software architecture– BSP code exposed– Application and driver code entangled– Non-public API sometimes used

    ● Programming model– Flat / physically addressed memory assumed– Supervisor mode assumed– CPU architecture assumed

  • About RTOS emulators

  •    

    RTOS API emulation?

    ● A way to mimic the RTOS interfaces– Evades the BSP issue– Source-level approach

    ● Has real-time requirements– Must run over a deterministic core– Must exhibit real-time properties itself

  •    

    Myths and Reality

    ● Can (RTOS) API emulation be accurate?– Based on public, dependable interfaces– Relies on a documented feature set

  •    

    Myths and Reality

    ● Can (RTOS) API emulation be accurate?– Based on public, dependable interfaces– Relies on a documented feature set

    Do you trust your vendor documentation?

  •    

    Myths and Reality

    ● Can (RTOS) API emulation be accurate?– Based on public, dependable interfaces– Relies on a documented feature set

    Do you trust your vendor documentation? YES

    Should your code rely on undocumented features?

  •    

    Myths and Reality

    ● Can (RTOS) API emulation be accurate?– Based on public, dependable interfaces– Relies on a documented feature set

    Do you trust your vendor documentation? YES

    Should your code rely on undocumented features? NO

    Should your code expect undocumented behavior?

  •    

    Myths and Reality

    ● Can (RTOS) API emulation be accurate?– Based on public, dependable interfaces– Relies on a documented feature set

    Do you trust your vendor documentation? YES

    Should your code rely on undocumented features? NO

    Should your code expect undocumented behavior? NO

    Therefore, you don't need the original API implementation to emulate it properly.

  •    

    Myths and Reality

    ● Isn't API emulation slower?

  •    

    Myths and Reality

    ● Isn't API emulation slower?– Traditional RTOS share basic semantics

    ● Optimized building blocks can be made● Efficient “window-dressing” follows● Leveraging single address space helps

  •    

    Myths and Reality

    ● Isn't API emulation slower?– Traditional RTOS share basic semantics

    ● Optimized building blocks can be made● Efficient “window-dressing” follows● Leveraging single address space helps

    – Naive emulation over POSIX not enough● POSIX semantics do not map 1:1● POSIX-based building blocks may work better

  •    

    RTOS emulators shortcomings

    ● Limited emulation coverage– noarch/generic core services

  •    

    RTOS emulators shortcomings

    ● Limited emulation coverage– noarch/generic core services

    ● Require Application / Driver split– BSP code not accessible from user-space– I/O resources live in kernel space

  •    

    RTOS emulators shortcomings

    ● Limited emulation coverage– noarch/generic core services

    ● Require Application / Driver split– BSP code not accessible from user-space– I/O resources live in kernel space

    ● Restricted by Linux protections– No supervisor actions from user-space

  • Our assets

  •    

    PREEMPT-RT

    ● Fully native real-time support– Enables real-time virtualization

    ● Promise of embedded multi-core scalability– Sophisticated locking model– Sophisticated scheduling

  •    

    KVM

    ● Complete sandboxing● Compatible memory spaces● Device virtualization through host

    – virtio● Device emulation through VM

    – Qemu-based modelling

  •    

    Introducing Xenomai

    ● Generic RTOS core● Host abstraction

    – Dual kernel– Simulator– (Single image *)

    Generic RTOS

    SAL

    Host system (Linux, Simulator)

    (*) Xenomai/SOLO

  •    

    Introducing Xenomai

    ● Generic RTOS core● Host abstraction

    – Dual kernel– Simulator– (Single image *)

    ● RTOS personalities

    VxWorks pSOS VRTX ...

    Generic RTOS

    SAL

    Host system (Linux, Simulator)

    (*) Xenomai/SOLO

  •    

    Introducing Xenomai

    ● RTOS building blocks– Thread scheduling– Synchronization– Interrupt handling– Memory allocation– Timing services Bu

    ildin

    g bl

    ocks

    Sched

    Synch

    IRQ

    Memory

    Timing

  •    

    Introducing Xenomai

    ● RTOS building blocks– Thread scheduling– Synchronization– Interrupt handling– Memory allocation– Timing services Bu

    ildin

    g bl

    ocks

    e.g.

    VxW

    orks

    taskLib

    semLib

    msgQLib

    wdLib

    tickLib

    sysLib

    Sched

    Synch

    IRQ

    Memory

    Timing

  •    

    What about combining?

    ● Real-time host kernel– PREEMPT-RT

    Real-time kernel sub-systems

    Real-timeApplication

  •    

    What about combining?

    ● Real-time host kernel– PREEMPT-RT

    ● Virtualization core– KVM– QEMU

    KVM

    Guest

    QEMU

  •    

    What about combining?

    ● Real-time host kernel– PREEMPT-RT

    ● Virtualization core– KVM– QEMU

    ● RTOS emulation– Xenomai

    KVM

    Xenomaiemulator

    QEMU

  •    

    Virtualization + RTOS emulation

    Improvements● Native real-time● Original programming model● Better emulation coverage● Sandboxing● Legacy device emulation

  •    

    Virtualization + RTOS emulation

    Restrictions● No ABI compatibility● Still not 100% source compatible● Reworking the device driver layer still required

  • Virtualize & Emulate

  •    

    Improved emulation engine

    Emulation core● Xenomai guest

    – Freestanding mode– RTOS personality

    ● QEMU– Virtual machine

    Emulator

    Xenomai

    QEMU

    Application

  •    

    Improved emulation engine

    Handling I/O● Paravirtualized

    – Common hw– High bandwidth

    ● Emulated– Precise emulation– Low bandwidth

    Emulator

    Xenomai

    QEMU

    PV

    Drivers

    EMU

    virt

    io

    Application

  •    

    Improved emulation engine

    Native real-time VMM● PREEMPT-RT host

    – KVM-enabled

    Linux -rt

    Emulator

    Xenomai

    QEMU

    PV

    KVM

    Drivers

    EMU

    virt

    io

    Application

  •    

    TODO list

    ● Real-time aware KVM– Guest scheduling

    ● Real-time aware QEMU– I/O emulation

    ● Guest mode Xenomai core● Extended emulation coverage

  • More applications

  •    

    Could also be used for...

    ● Application-specific virtual RTOS– Virtual RT appliance (sort of)

  •    

    Could also be used for...

    ● Application-specific virtual RTOS– Virtual RT appliance (sort of)

    ● Transition path for in-house RTOS– Consolidate & extend via virtualization

  •    

    Could also be used for...

    ● Application-specific virtual RTOS– Virtual RT appliance (sort of)

    ● Transition path for in-house RTOS– Consolidate & extend via virtualization

    ● Simulation of complex architectures– e.g. modeling Arinc653 systems

  • Conclusion

  •    

    Legacy RT application to Linux

    Today● Rebase on Linux, change design● Keep design, keep proprietary RTOS

  •    

    ●Legacy RT application to Linux

    Today● Rebase on Linux, change design● Keep design, keep proprietary RTOS

    Tomorrow● Combine existing technologies

    – Rely on real-time capable virtualization– Couple with accurate RTOS emulation

  •    

    ●The End

    Thank you for attending

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52Slide 53Slide 54Slide 55Slide 56Slide 57Slide 58Slide 59Slide 60Slide 61Slide 62


Recommended