cFS Platforms OSAL and PSP

Slides:



Advertisements
Similar presentations
Operating Systems Manage system resources –CPU scheduling –Process management –Memory management –Input/Output device management –Storage device management.
Advertisements

Where Do the 7 layers “fit”? Or, where is the dividing line between hdw & s/w? ? ?
Chapter 13 Embedded Systems
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3 Operating System Organization.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
Chapter 3.1:Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
UNIX System Administration OS Kernal Copyright 2002, Dr. Ken Hoganson All rights reserved. OS Kernel Concept Kernel or MicroKernel Concept: An OS architecture-design.
Department of Electrical Engineering Electronics Computers Communications Technion Israel Institute of Technology High Speed Digital Systems Lab. High.
Operating Systems  A collection of programs that  Coordinates computer usage among users  Manages computer resources  Handle Common Tasks.
Chapter 2 – Software Part A. Definition Computer is made up of two components Hardware Physical components Software Instructions for the computer Two.
Chapter 2: Operating-System Structures. 2.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Jan 14, 2005 Operating System.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 3: Operating Systems Computer Science: An Overview Tenth Edition.
R ION-WG Status CCSDS Meetings 28 Oct r ION-Working Group Overview ION Working Group is a sub-team of the NASA DTN Readiness Project whose goal.
Chapter 2 Operating System Overview
ATCA based LLRF system design review DESY Control servers for ATCA based LLRF system Piotr Pucyk - DESY, Warsaw University of Technology Jaroslaw.
Operating System What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. An operating.
Processes Introduction to Operating Systems: Module 3.
Operating Systems Structure what is the organizational principle?
Computer Software Types Three layers of software Operation.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Operating-System Structures
CENG334 Introduction to Operating Systems 1 Erol Sahin Dept of Computer Eng. Middle East Technical University Ankara, TURKEY URL:
I/O Software CS 537 – Introduction to Operating Systems.
System Programming Basics Cha#2 H.M.Bilal. Operating Systems An operating system is the software on a computer that manages the way different programs.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
CFS Use at Goddard The Johns Hopkins University Applied Physics Laboratory core Flight Software System Workshop October 26, 2015 Alan Cudmore – NASA Goddard.
Introduction to Operating Systems Concepts
Computer System Structures
Computer System Structures
Operating System Overview
Operating System & Application Software
Chapter 4: Threads.
OSAL and PSP Inventory and Status
Chapter Objectives In this chapter, you will learn:
Current Generation Hypervisor Type 1 Type 2.
cFE FSW at APL & FSW Reusability
cFS Workshop Introduction
CS 6560: Operating Systems Design
Operating Systems •The kernel is a program that constitutes the central core of a computer operating system. It has complete control over everything that.
Chapter 2: Operating-System Structures
Topics Covered What is Real Time Operating System (RTOS)
Chapter 5: Using System Software
Operating System Structure
TECH SESSION #1 STANDARDS AND BUILD TOOLS
CASE STUDY 1: Linux and Android
Computer System Laboratory
Operating System Structure
Lecture 1 Runtime environments.
The PCI bus (Peripheral Component Interconnect ) is the most commonly used peripheral bus on desktops and bigger computers. higher-level bus architectures.
KERNEL ARCHITECTURE.
What is an Operating System?
Porting the core Flight System to the Dellingr Cubesat
Introduction to the Kernel and Device Drivers
Chapter 3: Windows7 Part 1.
Core Flight System on Unique Missions & Experiments
An Introduction to Device Drivers
cFS Workshop Product Management
cFS Community Day Platform Technology Roadmap
Booting Up 15-Nov-18 boot.ppt.
Chapter 2: System Structures
Chapter 2: The Linux System Part 1
B.Ramamurthy Chapter 2 : Appendix
Outline Chapter 2 (cont) OS Design OS structure
Operating Systems: A Modern Perspective, Chapter 3
OS Simulator Develop and test embedded applications on Windows or Linux host environments Eliminates the need for the original OS and expensive.
Lecture 1 Runtime environments.
Software - Operating Systems
A case study of implementations of SBN with SpaceWire
Presentation transcript:

cFS Platforms OSAL and PSP Alan Cudmore – NASA Goddard Space Flight Center Cal Tech – APL/JPL/Aerospace core Flight System Workshop December 12, 2016

Agenda Brief history of the OSAL and PSP Other PSP Needs Anatomy of a Device Driver Current PSP Interfaces Future PSP device interfaces cFS Library based device interfaces PSP Plugin device interfaces Other PSP Needs Porting Guide and Documentation Test Suite

Brief History of the OSAL & PSP The Operating System Abstraction layer (OSAL) is a small software library that isolates an application from a supported Real Time Operating System With the OSAL, flight software such as the core Flight System can be compiled for different operating systems without modifying the source Currently the OSAL does is a standalone project and does depend on the cFE or cFS OS function to create a new task OS_TaskCreate taskSpawn rtems_task_create rtems_task_start pthread_create Implementation for vxWorks Implementation for RTEMS Implementation for POSIX ( linux, mac os X, etc.. )

Brief History of the OSAL & PSP The Platform Support Package (PSP) is a software library that adapts the cFE Core and cFS applications to a specific hardware and operating system platform* The PSP was derived from the BSP and HAL directories in the original OSAL. It was named PSP to avoid confusion with an operating system BSP (vxWorks) The PSP covers the minimum number of APIs to get the cFE/cFS running on a processor with an OS. The PSP is currently a cFE/cFS specific library *Some platforms such as linux may be more generic, allowing a PSP to support more than one hardware platform.

Brief History of the OSAL & PSP The first version of the OSAL was created for the SDO mission. SDO has a RAD750 running vxWorks and multiple Coldfire CPUs running RTEMS SDO pre-dated cFE/cFS OSAL and the Hardware Abstraction Layer The OSAL originally had a hardware abstraction layer (HAL) covering much of what the PSP does now Problem: As we developed the cFE, users asked for new versions of the OSAL to support new hardware platforms. It did not make sense to deliver a new version of the OSAL to support a new processor card. To make the releases more stable and modular, the HAL was forked to the cFE Platform Support Package (PSP) Now the purpose of the OSAL is to cover just the operating system interfaces The PSP became the glue logic that ties the cFE/cFS to a Processor Platform & OS

Anatomy of a Device Driver A device driver can take a few different forms Small microcontroller based drivers Usually Memory Mapped or I/O based device Can have interrupt and/or DMA support Example: Send data on the I2C bus on the Dellingr/Nanomind CPU int i2c_send(int handle, i2c_frame_t * frame, uint16_t timeout); Unix style device drivers In a POSIX style kernel, drivers live in kernel space and the user interacts through a standard open/close/read/write/ioctl API Some Real Time Operating Systems support both types of drivers Open/close/.. API is used even though there is no user/kernel space barrier

Current PSP Device Interfaces The PSP just covers the necessary interfaces to allow the cFS to run on a particular hardware platform with a particular OS Example: RAD750 3U board with vxWorks 6.x Current PSP interfaces / functions include Startup and Restart APIs How do we startup the cFE? How does the cFE command a restart of the board? Memory access APIs EEPROM / Nonvolatile memory Special access for RAM Memory copy utilites ( abstracted to support different memory interfaces ) Device I/O APIs Compiler definitions and switches

Future PSP Device Interfaces It will be hard to keep expanding the PSP API to support a growing collection of drivers for cFS applications For example: Do we want to add the API for “Bob’s super GPS & Gyro module” if it will only be used on one platform? The API would continue to expand (and contract) based on the hardware being supported We also don’t want to back port new APIs to old PSPs or have a bunch of “empty” APIs for unsupported devices on each platform Based on that thought, a couple of options: cFS mission hardware libraries PSP device plugin model Or, a hybrid approach using both as needed

Mission Hardware Library Option cFS Reuse App Mission App cFE/cFS core Flight Executive (cFE) Mission Hardware Library ( All Mission hardware accessed through this library) OS Abstraction Layer Platform Support Package Real Time Operating System RTOS Board Support, File Systems, Drivers, Firmware Libraries, etc Legend: Vendor Supplied cFE/cFS Reuse New on Dellingr Processor , Memory, Peripherals, and other hardware

Mission Hardware Library Option Pros Allows app developers more flexibility in adding and modifying mission specific hardware Library APIs can use services such as OSAL Tasks if needed Library APIs can use underlying OS, BSP, or firmware if needed Easy to incorporate simulator at this level Cons This model “breaks” the layering by introducing hardware specific code at the app layer ( but at least the apps stay generic ) An implementation for each platform/OS has to be made This model was used for the Dellingr Cubesat, and has worked very well Two implementations of the Dellingr Hardware Library (DHL) Linux – with simulated hardware and interface to the 42 Dynamic Simulator Gomspace Nanomind – with actual hardware/firmware calls

PSP Plug-in Device Model cFS Reuse App Mission App cFE/cFS PSP Device Plugin Calls core Flight Executive (cFE) Mission Hardware Library (Code can generic APIs below) OS Abstraction Layer Platform Support Package Plug-in Plug-in Plug-in Real Time Operating System RTOS Board Support, File Systems, Drivers, Firmware Libraries, etc Legend: Vendor Supplied cFE/cFS Reuse New on Dellingr Processor , Memory, Peripherals, and other hardware

PSP vs. Library based drivers PSP Plug-in Option PSP Plug-in model Create a device driver model that is generic enough to support underlying layers – from FreeRTOS to RTEMS Devices do not have to be portable to all platforms and Operating Systems Create a standard API to add or remove a device Use a standard API to init/open and use a device

PSP vs. Library based drivers Hybrid approach cFS Reuse App Mission App cFE/cFS core Flight Executive (cFE) Common Sensor Library (GPS, Gyro, Temp, etc ) Mission Hardware Library ( All Mission hardware accessed through this library) OS Abstraction Layer Platform Support Package Plug-in Plug-in Real Time Operating System RTOS Board Support, File Systems, Drivers, Firmware Libraries, etc Legend: Vendor Supplied cFE/cFS Reuse New on Dellingr Processor , Memory, Peripherals, and other hardware

PSP vs. Library based drivers Hybrid approach PSP Hybrid approach PSP Device Plugins cFS Mission Hardware Libraries Can include Mission Specific Libraries or more portable libraries such as Common Sensor Libraries ( for Sensor/Actuators ) Simulator Interface Libraries Etc