Processor SDK Overview
Agenda • Why Processor SDK?
• Cores Determine Software
• SDK Architectures
• TI Development Ecosystem
Why Processor SDK?
Processor SDK Overview
Processor SDK Purpose • The Processor SDK was designed from the ground up to provide a great
software starting point for portable applications. • Application software needs to be portable to maximize reuse and engineering
efficiency. • Lower levels of software can effectively provide this abstraction. • Heterogeneous multi-core devices have software architectures to match.
Hardware
SoC
Problems Need Abstraction
Application Application
Hardware Abstraction
Operating Systems (scheduling, stacks, etc.)
• Applications solve problems. • Time to market and efficiency demand
that application software be reused as much as possible.
• Lower-level software should enable this reuse.
• Developer experience and lessons learned should translate from project to project.
• Ideally, software reuse should even scale across SoCs.
Hardware
SoC
Reuse Applications Broadly Platforms
Application Application
Hardware Abstraction
Operating Systems (scheduling, stacks, etc.)
Application Application
Sitara AM335x • 1x ARM
Cortex-A8 • 2x PRU-ICSS
Sitara AM437x • 1x ARM
Cortex-A9 • 4x PRU-ICSS
Sitara AM57x • 1-2x ARM
Cortex-A15 • 1-2x C66x DSP • 2x ARM-M4 • 4x PRU-ICSS
AM5K2Ex 2-4x ARM Cortex-A15
66AK2Ex • 1-4x ARM
Cortex-A15 • 1 C66x DSP
TMS320C66x 1-8 C66x DSP
TMS320C55x Dual MAC C55x DSP
Hardware
SoC
Application Application
Hardware Abstraction
Operating Systems (scheduling, stacks, etc.)
Application Application
Heterogeneous Multicore Enabled by Software
Sitara AM57x • 1-2x ARM
Cortex-A15 • 1-2x C66x DSP • 4x ARM-M4 • 4x PRU-ICSS
Processor SDK
The Processor SDK
Hardware
SoC
Application Application
Hardware Abstraction
Operating Systems (scheduling, stacks, etc.)
Application Application
Sitara AM57x • 1-2x ARM
Cortex-A15 • 1-2x C66x DSP • 4x ARM-M4 • 4x PRU-ICSS
Cores Determine Software
Processor SDK Overview
AM57x Block Diagram High Speed Interconnect 28 nm
32b DDR3/3L
ARM M4
System Services
2MB L2
ARM Cortex-A15 ARM
Cortex-A15
ARM M4
32KB L1 64KB RAM
C66x DSP
= + - *
C66x DSP = + - *
32b DDR3/3L w/ECC
Video Acceleration
Display Subsystem
Video Input Ports
Graphics Acceleration
2.5MB L3 Shared RAM w/ECC
Security
Acceleration
PRU (Quad Core)
Industrial Communication
Subsystem (ICSS)
Storage IO Serial IO Industrial and Programmable IO
• LOTS of great features • But only some has impact on
software • Take a look at the
programmable cores: – 2x ARM Cortex-A15 – 2x ARM M4 – 2x C66x DSP – 4x PRUs
Software Runs on Cores
ARM M4
ARM Cortex-A15 ARM
Cortex-A15
ARM M4
= + - *
C66x DSP = + - *
PRU (Quad Core)
• In many ways, the core architecture determines the software. For example, full Linux needs MMU.
• The problem that the core is best at solving (i.e., lower latency) influences the software used.
• Each core may do best with a different software architecture.
• Combining different cores with different capabilities provides a powerful solution.
Cores Run Run-Time Software
ARM Cortex-A15 ARM
Cortex-A15 ARM M4
ARM M4
PRU (Quad Core)
C66x DSP
= + - *
C66x DSP = + - *
Cores Run Run-Time Software
ARM Cortex-A15 ARM
Cortex-A15 ARM M4
ARM M4
C66x DSP
= + - *
C66x DSP = + - *
PRU PRU
PRU PRU
Run-Time Software • While the ideal scenario might be a complete abstraction of all cores, we
are NOT there (yet!): – OpenXX (CL, CV, MP, etc.) options are improving. – OpenCL is DSP recommendation for AM57x.
• Today, different cores often require fairly different software environments: – Linux is best developed using a Linux host. – DSP, MCU, and others are still fairly Windows-based.
• TI-RTOS • Bare metal
• Skill sets and experience level of individual developers varies widely: – Linux development is still a pretty specific skill set. – DSP algorithm development is also skill specialized. – General “C” firmware development is classic embedded.
PRU PRU
PRU PRU
ARM M4 ARM M4
ARM Cortex-A15
ARM Cortex-A15
C66x DSP = + - *
C66x DSP = + - *
Core HLOS Host
Linux Linux
TI-RTOS Windows/Linux
Other Varies
TI-RTOS Windows/Linux
Bare metal Windows/Linux
Other Varies
TI-RTOS, bare metal, other Windows/Linux
Bare metal Windows/Linux
Run-Time Software Environments
PRU PRU
PRU PRU
C66x DSP = + - *
C66x DSP = + - *
ARM M4 ARM M4
• Linux development should be done with Linux host.
• Windows users may not want to learn Linux. • TI-RTOS work can be done on Linux. • TI-RTOS is better at IPC (Inter-Processor
Communication) than bare metal. • Bare metal could be done with either host. But
Windows predominates. • Developer comfort with a given environment
will impact schedule and success. • If using all cores, different developers will
use a mix of software architectures and development hosts.
ARM Cortex-A15
ARM Cortex-A15
SDK Architectures
Processor SDK Overview
AM57x
Software Architectures: Linux on A15
ARM Cortex-A15
ARM Cortex-A15
PRU PRU
PRU PRU
C66x DSP = + - *
C66x DSP = + - *
ARM M4 ARM M4
IPC
OpenCL ARM Cortex-A15s
• OS = Linux • Dev Host = Linux
ARM Cortex-M4s • OS = TI-RTOS • Dev Host = Windows
or Linux
DSPs • OS = TI-RTOS • Dev Host = Windows
or Linux
PRUs • OS = Bare Metal • Dev Host = Windows
or Linux
AM57x
Software Architectures: TI-RTOS on A15
ARM Cortex-A15
ARM Cortex-A15
PRU PRU
PRU PRU
C66x DSP = + - *
C66x DSP = + - *
ARM M4 ARM M4
IPC
IPC ARM Cortex-A15s
• OS = TI-RTOS • Dev Host = Windows
or Linux
ARM Cortex-M4s • OS = TI-RTOS • Dev Host = Windows
or Linux
DSPs • OS = TI-RTOS • Dev Host = Windows
or Linux
PRUs • OS = Bare Metal • Dev Host = Windows
or Linux
Hardware
SoC
Application Application
Hardware Abstraction
Operating Systems
Application Application
ARM Cortex-A15
ARM Cortex-A15
PRU PRU
PRU PRU
C66x DSP = + - *
C66x DSP = + - *
ARM M4 ARM M4
Linux TI-RTOS TI-RTOS
Applications by Core
Hardware
SoC
Application Application
Hardware Abstraction
Application Application
Two Flavors of SDKs
ARM Cortex-A15
ARM Cortex-A15
PRU PRU
PRU PRU
C66x DSP = + - *
C66x DSP = + - *
ARM M4 ARM M4
Operating Systems Linux TI-RTOS TI-RTOS
Hardware
SoC
Application Application
Hardware Abstraction
Application Application
One Package When Using TI-RTOS
ARM Cortex-A15
ARM Cortex-A15
PRU PRU
PRU PRU
C66x DSP = + - *
C66x DSP = + - *
ARM M4 ARM M4
Operating Systems TI-RTOS TI-RTOS TI-RTOS
Hardware
SoC
Application Application
Hardware Abstraction
Application Application
One Package When Using Different SoCs
ARM Cortex-A15
ARM Cortex-A8 PRU
PRU
Operating Systems Linux
TI Development Ecosystem
Processor SDK Overview
Run-Time Software: Foundational SDKs
Processor SDK for Linux®:
• Long Term Stable (LTS) Mainline Linux kernel support
• U-Boot community boot loader • Robust, commercial-grade Linaro® GNU
compiler collection (GCC) toolchain • Yocto Project™ OE Core-compatible file systems
enable tailored Linux application support
Processor SDK for TI-RTOS:
• Robust real-time TI-RTOS kernel including TCP/IP networking stack
• Posix thread-compatible API layer available • Driver libraries that can be used with TI-RTOS or without a
kernel • Free and available as open source
http://www.ti.com/lsds/ti/tools-software/processor_sw.page
Processor SDK for Linux and TI-RTOS helps speed application development. • Includes complete board support packages, documentation, libraries, benchmarks, utilities, and code examples • Allows seamless reuse and migration of software across devices
TI’s Software Ecosystem
• TI Design Network: off-the-shelf software, tools and services
• E2E forums, wikis and open source development communities available 24/7
• Online training
Support & Community
Development Tools, Kits & Boards
• Code Composer Studio™ integrated development environment (IDE)
• Wide range of generation, build, and debug support
• Design kits, development boards & evaluation modules
TI continues to invest heavily in its software and tools ecosystem
Run-Time Software • Foundational embedded software
development kits (SDKs) • Application-specific development kits
(ex. Industrial SDKs) • Large libraries of OS-independent
algorithms, protocol stacks, and codecs
Single Processor SDK One SDK Experience, committed to mainline Linux and TI-RTOS, with application-specific packages.
Software is a differentiator - Consistent software packages for all new devices - LTS Linux brings higher quality, greater stability, easier migration - Common Yocto/OE-Core file systems, kernel, U-Boot for Linux - Common chip support library/driver model for TI-RTOS
Single foundational SDK: “Processor SDK” • Convergence of MCSDK and AMSDK
– Sitara user experience including graphical navigation – MCSDK-like ARM & DSP programming
• Common Linux and TI-RTOS packages – General purpose foundational packages – Application-specific packages build upon foundational packages:
• Industrial SDK: industrial package for AM3/4/5 • High-performance computing (HPC): KeyStone II SoC platform
For More Information
• Processor SDK Linux Getting Started Guide
• Processor SDK RTOS Getting Started Guide
• Processor SDK Training Series
• For questions about this training, refer to the E2E Community Forum: https://e2e.ti.com/support