Code Sharing using C++ between Desktop Applications and Real-time Embedded Platforms



Similar documents
Software: Systems and Application Software

Virtual Machines.

DUKANE Intelligent Assembly Solutions

4.1 Introduction 4.2 Explain the purpose of an operating system Describe characteristics of modern operating systems Control Hardware Access

Introduction to Virtual Machines


Contents. Chapter 1. Introduction

Networking Operating Systems (CO32010)

Embedded Software development Process and Tools:

Chapter 5: System Software: Operating Systems and Utility Programs

Building Applications Using Micro Focus COBOL

Java and Real Time Storage Applications

evm Virtualization Platform for Windows

Embedded Software development Process and Tools: Lesson-1

Multi-core Programming System Overview

DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service

Eddy Integrated Development Environment, LemonIDE for Embedded Software System Development

Programación de Sistemas Empotrados y Móviles (PSEM)

Embedded Software development Process and Tools: Lesson-4 Linking and Locating Software

Operating System Overview. Otto J. Anshus

Mobile Devices and Systems Lesson 02 Handheld Pocket Computers and Mobile System Operating Systems

Freescale Semiconductor, I

Fall Lecture 1. Operating Systems: Configuration & Use CIS345. Introduction to Operating Systems. Mostafa Z. Ali. mzali@just.edu.

Chapter 1: Introduction. What is an Operating System?

Multicore Programming with LabVIEW Technical Resource Guide

Virtualization for Hard Real-Time Applications Partition where you can Virtualize where you have to

Operating Systems 4 th Class

How To Write Portable Programs In C

Chapter 12. Development Tools for Microcontroller Applications

Embedded Software development Process and Tools: Lesson-3 Host and Target Machines

Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)

Computer Architectures

POSIX. RTOSes Part I. POSIX Versions. POSIX Versions (2)

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines

Course Development of Programming for General-Purpose Multicore Processors

A single user ran a single program ran on a single computer there was no need for Page 1 of 6 Copyright Virtual University of Pakistan

Special FEATURE. By Heinrich Munz

Study and installation of a VOIP service on ipaq in Linux environment

Embedded PC The modular Industrial PC for mid-range control. Embedded PC 1

Operating System Tutorial

Systems Software. Introduction to Information System Components. Chapter 1 Part 2 of 4 CA M S Mehta, FCA

What is best for embedded development? Do most embedded projects still need an RTOS?

1/20/2016 INTRODUCTION

Integration for X-Tools and X32

Why Threads Are A Bad Idea (for most purposes)

Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Module 11. Software Project Planning. Version 2 CSE IIT, Kharagpur

Changing the embedded development model with Microsoft.NET Micro Framework

Processor Architectures

Chapter 2: OS Overview

I. TABLE OF CONTENTS...

Real-time processing the basis for PC Control

Four Keys to Successful Multicore Optimization for Machine Vision. White Paper

What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World

Types Of Operating Systems

WJEC GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

System Structures. Services Interface Structure

Keys To Developing an Embedded UA Server

Mobile Operating Systems. Week I

Client/Server Computing Distributed Processing, Client/Server, and Clusters

WIND RIVER DIAB COMPILER

Thread level parallelism

Embedded Virtualization & Cyber Security for Industrial Automation HyperSecured PC-based Control and Operation

How To Write A Windows Operating System (Windows) (For Linux) (Windows 2) (Programming) (Operating System) (Permanent) (Powerbook) (Unix) (Amd64) (Win2) (X

Thin Client Total Cost of Ownership & ACP ThinManager Enterprise Software Advantages. White Paper

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

General Specifications

æ A collection of interrelated and persistent data èusually referred to as the database èdbèè.

Certification Authorities Software Team (CAST) Position Paper CAST-13

Fondamenti su strumenti di sviluppo per microcontrollori PIC

Reconfigurable Architecture Requirements for Co-Designed Virtual Machines

Functions of NOS Overview of NOS Characteristics Differences Between PC and a NOS Multiuser, Multitasking, and Multiprocessor Systems NOS Server

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

Comparative Performance Review of SHA-3 Candidates

Mobile Operating Systems Lesson 05 Windows CE Part 1

ATSBA: Advanced Technologies Supporting Business Areas. Programming with Java. 1 Overview and Introduction

12. Introduction to Virtual Machines

VisualDSP Emulation Tools Installation Guide for Windows 95/98/NT/2000

Introduction to Embedded Systems. Software Update Problem

Network operating systems typically are used to run computers that act as servers. They provide the capabilities required for network operation.

the high-performance embedded kernel User Guide Version 5.0 Express Logic, Inc Toll Free 888.THREADX FAX

Lecture 3: Modern GPUs A Hardware Perspective Mohamed Zahran (aka Z) mzahran@cs.nyu.edu

Antonio Kung, Trialog. HIJA technical coordinator. Scott Hansen, The Open Group. HIJA coordinator

Empress Embedded Database. for. Medical Systems

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v Steps to Developing a QNX Program Quickstart Guide

Embedded Development Tools

Embedded Linux development training 4 days session

Module 8. Industrial Embedded and Communication Systems. Version 2 EE IIT, Kharagpur 1

Implementing AUTOSAR Scheduling and Resource Management on an Embedded SMT Processor

Applying Multi-core and Virtualization to Industrial and Safety-Related Applications

CSE 452: Programming Languages. Acknowledgements. Contents. Java and its Evolution

Chapter 3.2 C++, Java, and Scripting Languages. The major programming languages used in game development.

A New Chapter for System Designs Using NAND Flash Memory

Copyright by Parallels Holdings, Ltd. All rights reserved.

RTEMS Porting Guide. On-Line Applications Research Corporation. Edition , for RTEMS July 2015

Operating Systems Overview As we have learned in working model of a computer we require a software system to control all the equipment that are

8. MicroC/OS-II Real-Time Operating System

Transcription:

Code Sharing using C++ between Desktop Applications and Real-time Embedded Platforms Overview The general product was a data collection and messaging system that could display real-time business data on the PC desktop running Microsoft Windows or on LED message boards which contained custom embedded CPU boards. Description of Software and Hardware Environment Development Issues and Concerns Lessons Learned

Hardware and Software Environment Pentium-class PCs for desktop systems Running Windows 95/98/NT in a single-threaded, multi-processing fashion Using Microsoft C++ compiler and debugging tools Custom CPU board based on a 68340 or PowerPC 860 (601 processor core) running at 25 MHz Pre-emptive real time operating system Diab Data C++ cross-compiler & SDS debugger under Windows NT Software and Programmer Descriptions ~75 KLOC of shared C++ that included limited templates, RTTI support due to multiple inheritance schemes, and no C++ exceptions ~10 KLOC of C++ and C code specifically for embedded target support which included RTOS task implementations and low-level drivers for hardware support Approximately 12 programmers with a 2/3 1/3 split among software and firmware engineers Code Development Process Classes were developed and unit tested on the desktop Classes then compiled and unit tests ran on embedded target Classes fit into RTOS framework for the embedded application System integration tests: System tests of PC applications were run in parallel with the system tests of the embedded application that used the shared code A full system integration test that included PC applications and embedded application was then run

Resources Development Issues Avoid duplication of effort by having 1 programmer write for 2 targets instead of 1 programmer per platform Code executes exactly the same on both platforms Desktops have better tool sets for development, debugging, profiling, memory and performance analysis Development can proceed on the desktop if the embedded target is not available Code Guidelines Guidelines need to be established for acceptable behavior that include performance in speed and size, maintainability, etc. Areas to consider include: C++ Templates C++ Exceptions Throw/try/catch sequences introduce performance and size hits which may be undesirable Portable, standard coding techniques should be used. Avoid pointer tricks and assumptions or reliance on data word sizes, byte-ordering, etc. Minimize non-portable, target-specific code which must be identified and isolated either in separate modules or with the use of #ifdef/#elif/#endif bracketing. Utilize interface definitions with virtual functions and abstract classes to abstract processor, operating system, or other target-specific dependencies

Architecture Issues Differences in software and hardware architectures between the different platforms must be identified and isolated in the code. Some of these areas include: Processor-dependent Endian differences important for communication between different endian-based computers Compiler-introduced optimizations which include aggregate data structure padding, differing sizes for data types Computer resource availability Raw processor speed 300+ MHz Pentiums hide a lot of problems that arise on a 25 MHz 68xxx processor. Software Single-threaded vs. multi-threaded environment Real-time systems have deterministic time constraints vs. run-tocompletion environment on the desktop

General Issues Many of the issues that arise in a shared code development environment are not rocket science, but common sense: Each developer must be responsible for maintaining his/her code in both environments Each developer must be willing to adapt his/her code to fit into the constraints of the embedded target Much of successful code sharing relies on sensible human relations: Open and constructive communication Diplomacy Ego-less perspective

Lessons Learned Software Development Lessons Design and develop for both target environments simultaneously Code sharing enhanced robustness and reliability Code sharing saves a lot of effort Performance can be a big issue Someone must be responsible for creating and enforcing standards by which all shared code authors must follow Tools Know your compilers! To a lesser degree, know your linker/loader Utilize the rich off-the-shelf tool set available for desktop computers, then use the specific tools for the embedded target either off-the-shelf or rollyour-own tools