Heterogeneous Multi-Core Architecture Support for Dronecode

Similar documents
Qualcomm Hexagon DSP: An architecture optimized for mobile multimedia and communications

Snapdragon NPE Overview

Using Openembedded with Snapdragon Flight

Embedded. Connected. Aware. SW Delivery Process. February Inforce Computing. Do NOT Copy/Distribute without prior written permission

Exploring Qualcomm Baseband via ModKit. Tencent Blade Team Tencent Security Platform Department

Kinetis SDK Release Notes for the TWR-K24F120M Tower System Module

Embedded HW/SW Co-Development

Freescale Kinetis Software Development Kit Release Notes

Perform. Travis Lanier Sr. Director, Product Management Qualcomm Technologies,

Kinetis SDK v Release Notes for KV5x Derivatives

N720 OpenLinux Software User Guide Version 1.2

Getting Started with FreeRTOS BSP for i.mx 7Dual

64 bit Bare Metal Programming on RPI-3. Tristan Gingold

Kinetis SDK v Release Notes for the MK21DA5 and MKW24D5 Devices

N720 OpenLinux Software User Guide Version 1.0

i.mx 7 - Hetereogenous Multiprocessing Architecture

Software Driven Verification at SoC Level. Perspec System Verifier Overview

LINARO CONNECT 23 HKG18 George Grey, Linaro CEO

CS333 Intro to Operating Systems. Jonathan Walpole

Linux Driver and Embedded Developer

Profiling and Debugging OpenCL Applications with ARM Development Tools. October 2014

Chapter 4: Threads. Operating System Concepts. Silberschatz, Galvin and Gagne

Heterogeneous Computing Made Easy:

HOW TO INTEGRATE NFC FRONTENDS IN LINUX

CS 3305 Intro to Threads. Lecture 6

Easy Multicore Programming using MAPS

CLICK TO EDIT MASTER TITLE STYLE. Click to edit Master text styles. Second level Third level Fourth level Fifth level

Hardware Software Bring-Up Solutions for ARM v7/v8-based Designs. August 2015

More performance options

Hello, World! in C. Johann Myrkraverk Oskarsson October 23, The Quintessential Example Program 1. I Printing Text 2. II The Main Function 3

Preparing for Mass Market Virtual Reality: A Mobile Perspective. Qualcomm Technologies, Inc. September 16, 2017

CSCE Operating Systems Interrupts, Exceptions, and Signals. Qiang Zeng, Ph.D. Fall 2018

Qualcomm Snapdragon 450 Mobile Platform

PetaLinux SDK User Guide. Application Development Guide

VR Development Platform

Snapdragon S4 System on Chip

Designing, developing, debugging ARM Cortex-A and Cortex-M heterogeneous multi-processor systems

RISC-V: Opportunities and Challenges in SoCs

EMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG

HKG : OpenAMP Introduction. Wendy Liang

2016 Seoul DevU Pipeline Cache Object. Bill Licea-Kane Engineer, Senior Staff Qualcomm Technologies, Inc

SoC Idling & CPU Cluster PM

PMC-BiSerial-III SDLC 8-Channel SDLC Interface

OS lpr. www. nfsd gcc emacs ls 1/27/09. Process Management. CS 537 Lecture 3: Processes. Example OS in operation. Why Processes? Simplicity + Speed

CS 300 Leftovers. CS460 Pacific University 1

Introduction to Supercomputing

Qualcomm Snapdragon Technologies

HOW TO INTEGRATE NFC CONTROLLERS IN LINUX

Multithreaded Programming

CS342 - Spring 2019 Project #3 Synchronization and Deadlocks

Combining TLM & RTL Techniques:

QPSI. Qualcomm Technologies Countermeasures Update

New Technologies for UAV/UGV

Module 9 ARM 7 Microcontroller LPC2148 Programming ARM Architecture, LPC2148 specifications, Register architecture, Special function registers, KEIL I

Modeling and SW Synthesis for

Operating Systems, Fall

CS420: Operating Systems

ECE 598 Advanced Operating Systems Lecture 10

Master level: Operating systems, distributed systems, networking,

Threads. What is a thread? Motivation. Single and Multithreaded Processes. Benefits

www nfsd emacs lpr Process Management CS 537 Lecture 4: Processes Example OS in operation Why Processes? Simplicity + Speed

Date: 13 June Location: Sophia Antipolis. Integrating the SIM. Dr. Adrian Escott. Qualcomm Technologies, Inc.

C Compilation Model. Comp-206 : Introduction to Software Systems Lecture 9. Alexandre Denault Computer Science McGill University Fall 2006

Machine Learning for Selected SI & PI Problems. Timothy Michalka Sr. Director, Engineering Qualcomm Technologies, Inc. 18-Oct-2017

CS510 Operating System Foundations. Jonathan Walpole

STM32F7 series ARM Cortex -M7 powered Releasing your creativity

On the Portability and Performance of Message-Passing Programs on Embedded Multicore Platforms

Application Fault Tolerance Using Continuous Checkpoint/Restart

SE300 SWE Practices. Lecture 10 Introduction to Event- Driven Architectures. Tuesday, March 17, Sam Siewert

PRU Hardware Overview. Building Blocks for PRU Development: Module 1

Developing on DragonBoard

82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide

W4118: OS Overview. Junfeng Yang

전공핵심실습 1: 운영체제론 Lecture 5. System Call

UTILIZING A BIG.LITTLE TM SOLUTION IN AUTOMOTIVE

WS_CCESSH-OUT-v1.00.doc Page 1 of 8

Azure Sphere: Fitting Linux Security in 4 MiB of RAM. Ryan Fairfax Principal Software Engineering Lead Microsoft

CS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University

SFO15-100: 96Boards & the course upstream

Operating System Structure

GPUfs: Integrating a file system with GPUs

Hands-On Workshop: ARM mbed : From Rapid Prototyping to Production

Snapdragon S4 System on Chip

CS 3113 Introduction to Operating Systems Midterm October 11, 2018

CS 3113 Introduction to Operating Systems Midterm October 11, 2018

ECE 471 Embedded Systems Lecture 16

Emerging Vision Technologies: Enabling a New Era of Intelligent Devices

Resilient IoT Security: The end of flat security models


Intel Stereo 3D SDK Developer s Guide. Alpha Release

Kick Start your Embedded Development with Qt

Chapter 4: Threads. Operating System Concepts with Java 8 th Edition

Developing a Camera Application with i.mx RT Series

GPUfs: Integrating a file system with GPUs

Beyond Hardware IP An overview of Arm development solutions

ECE 471 Embedded Systems Lecture 15

Copyright 2017 Samsung. All Rights Reserved. O-Hoon Kwon, Ph.D. Samsung Electronics

CS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University

Kernels & Processes The Structure of the Operating System

19.1. Unit 19. OpenMP Library for Parallelism

Transcription:

Heterogeneous Multi-Core Architecture Support for Dronecode Mark Charlebois, March 24 th 2015

Qualcomm Technologies Inc (QTI) is a Silver member of Dronecode Dronecode has 2 main projects: https://www.dronecode.org/software/where-dronecode-used

PX4 SW Stack https://pixhawk.org/_detail/dev/px4_software_architecture.png?id=dev:software_architecture

PX4 Software Architecture Today PX4 Firmware is based on NuttX NuttX supports: Single CP Flat memory model Tasks PX4 Firmware uses devices for task synchronization Custom device drivers (ioctl, read, write, poll, ) ses internal kernel structure data

PX4 on Snapdragon TM 600 SoC

Snapdragon 600 SoC The APQ8064 SoC has a heterogeneous multi-core architecture Multi-core apps processor (4 Krait TM cores) Linux TM SMP Hexagon TM processor HW seen as 3 CPs Runs an RTOS (QuRT TM ) Single process, multiple threads Can run Linux Supported in upstream kernel Hexagon SDK provides a way to run SW on Hexagon http://www.slideshare.net/qualcommdevelopernetwork/21-hexagon-sdkmay919gg23 Developing DSPAL layer for POSIX API

Hexagon DSP Processors in Snapdragon Products Snapdragon 800 adsp: Real-time media & sensor processing Camera Display Adreno GP Krait CP Krait CP Audio Sensors JPEG Video Krait CP Krait CP Hexagon adsp Misc. Connectivity Other 2MB L2 Multimedia Fabric System Fabric Fabric & Memory Controller Modem Hexagon mdsp LPDDR3 LPDDR3 mdsp: Dedicated modem processing

Programmer s View of Hexagon DSP HW Multi-threading Hexagon V5 includes three hardware threads Architected to look like a multi-core with communication through shared memory Shared Instruction Cache Thread 0 Thread 1 Thread 2 D D X X D D X X D D X X L2 Cache / TCM Register File Register File Register File Shared Data Cache

PX4 on Hexagon QuRT for realtime Hexagon SDK used to port PX4 Select files from old PX4 version used for initial port Demonstrated flights of drones with PX4 based SW on Hexagon Hexagon support in progress for upstream PX4 DSPAL POSIX layer in development Requires support for thread based PX4 build

PX4 Firmware Porting

Codebase Issues NuttX dependency, some code able to run under ROS Looking at creating clean backend separation Single CP RTOS Lots of use of internal kernel data structures Tasks vs threads err, errx, exit(), _exit(), main Param NuttX uses memory segment and linker nit test creates static array Difficult to split code across processors

Codebase Issues Time as uint64_t uint64_t varies per platform unsigned long on x86_64, unsigned long long on ARMv7hf/Krait Eigen Lots of C++ issues Is FLENS an option? (http://apfel.mathematik.uni-ulm.de/~lehn/flens/index.html) Device support serspace device control vs kernel I2C, SPI, ART

Thread Based Port of PX4 Created a fork of PX4/Firmware on Github https://github.com/mcharleb/firmware Linux port of PX4/Firmware Intermediate step Single process, multiple threads, POSIX, user space Enables definition of abstraction layer Faster way to develop and test code Can be done in parallel with DSPAL work

Top Level Code Changes makefiles/ firmware_linux.mk firmware_nuttx.mk toolchain_native.mk se clang or gcc (tested clang 3.4, 3.5 and gcc 4.8, 4.9) setup.mk PX4_TARGET_OS (nuttx, linux) linux_elf.mk (create mainapp) module.mk tools/ -DPX4_MAIN=$(MODLE_COMMAND)_app_main linux_apps.py (create list of built-in apps )

Board and Config files Moved to subdirs for each OS nuttx/ NuttX board and config files linux/ Linux board and config files

Code Change Highlights Minimal code change to track upstream Added abstraction headers src/platform px4_posix.h, px4_tasks.h, px4_defines.h, etc Added implementation directories src/platform/nuttx src/platform/linux Created basic shell to instantiate apps under Linux Similar to NuttX shell Runs built-in apps using app_main(argc, *argv[])

Code Change Highlights Virtual device used to maintain use of ioctl calls Modified Cdev VCDev px4_open( /dev/foo ) devmap[ /dev/foo ]->vcdev->dev_open(px4_dev_handle_t *h) Split backends where required foo_nuttx.cpp, foo_linux.cpp Converted process terminating calls err, errx, exit, _exit

Created Demo/Test Apps src/platform/linux/tests hello, hrt_test, vcdev_test int PX4_MAIN(int argc, char **argv) { } se socat to create ttys0 for mavlink Finding lots of failure cases (i.e. memset of nullptr)

The Future

Work To Do Add support for reading rc.s init in Linux port Finish DSPAL Need PX4 spec for user space control of I2C, SPI pstream QuRT/DSPAL port Added support for missing mathlib support Vector, Matrix, Quaternion, isinfinite Needed PX4 Param solution for Heterogeneous CP usage Debugging Integrated with Qualcomm Diag framework Sensor, PWM drivers uorb/muorb DDS?

Dronecode Future PX4/APM PX4/APM/ROS PX4/APM NuttX Cortex m3/m4 Linux x86_64/krait/ ARMv7hf DSPAL/QuRT Hexagon

research.qualcomm.com Not to be used, copied, reproduced, or modified in whole or in part, nor its contents revealed in any manner to others without the express written permission of Qualcomm Technologies, Inc. Qualcomm is a trademark of QALCOMM Incorporated, registered in the nited States and other countries. All QALCOMM Incorporated trademarks are used with permission. Other products and brand names may be trademarks or registered trademarks of their respective owners.