introduction to the linux sdk

39
Introduction to the Sitara Linux SDK In this session we will review the various components of the Sitara Linux Software Development Kit (SDK) including the out-of-box application launcher, example applications, SDK installer, setup scripts, Code Composer Studio and other host tools including PinMux Utility and Flash Tool. July 2012

Upload: vuongkhue

Post on 12-Feb-2017

240 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introduction to the Linux SDK

Introduction to the Sitara Linux SDKIn this session we will review the various components of the Sitara Linux Software Development Kit (SDK) including the out-of-box application launcher, example applications, SDK installer, setup scripts, Code Composer Studio and other host tools including PinMux Utility and Flash Tool.

July 2012

Page 2: Introduction to the Linux SDK

2

Page 3: Introduction to the Linux SDK

Agenda

• Sitara SDK Roadmap

• What is a Software Development Kit (SDK)?

• Sitara Linux SDK Objectives

• Sitara Linux SDK Overview

• SDK Development Process

• Current SDK Features

• Downloading the SDK

• Documentation

• SDK Target Components

• Installing the SDK

• SDK Target Development Tools

• SDK Host Tools

• Driving Mainline

3

Page 4: Introduction to the Linux SDK

What is an SDK?

• Definitions and solutions vary, but we think an SDK should be….

• More than just a board support package (BSP) or a Demo– An SDK should also contain tools for developing on TI parts– Pre-built libraries that customer applications can link against without

requiring building their own– Documentation

• Provide a known good starting point for product development– Start with the SDK reference distributions– Add and remove packages as needed

4

Page 5: Introduction to the Linux SDK

Sitara Linux SDK objectives

• The purpose of the Texas Instruments Sitara Linux SDK is to provide customers with a unique out-of-box experience and a quick path to their application development.

• The Sitara Linux SDK accomplishes this by providing– Example applications for key, high touch IP and peripherals– Tools for cross development and environment configuration– Host tools for device configuration– Documentation of SDK components

• Out-of-box in < 10 minutes and Development in < 1 hour

• A unified look and feel scaling across all Sitara devices from ARM9 to Cortex-A8 and beyond

5

Page 6: Introduction to the Linux SDK

Sitara Linux SDK overview• Board Support Package (BSP)

– Linux Kernel, Bootloaders & File System

• Documentation– Quick Start Guide & SW Developer’s Guide

• Matrix Application Launcher– GUI based on PHP and HTML5– Touchscreen, Mouse & Keyboard, Web Browser

• Example Applications– ARM Benchmarks, Power, Multimedia, Camera, Cryptography,

WLAN/Bluetooth, Profiling, 3D Graphics

• SDK Installer– Easy installation of all target and host software components and

documentation

• CCSv5– Linux aware debug– Preconfigured projects for example applications

• Host Tools– Flash Tool, PinMux Utility

6

Page 7: Introduction to the Linux SDK

Sitara Linux SDK overview - Continued

Matrix Application Launcher

Qt Embedded

QWidgetQGLWidget

OpenGL ES

ARM Benchmarks

Power Manager Web Browser System

Information

System on Chip

Target Board

FBDEV

DSS2

McSPI Touchscreen EthernetV4L2 ALSA VISA

UARTI2C USB McBSP MMC/SD

3D Graphics

Gstreamer/FFMPEG

MPEG4, H.264, MPEG2, AAC, …

Wifi BlueZ

USB Profiler WLAN GUI

Page 8: Introduction to the Linux SDK

SDK agile development process

8

RC

Beta2

Beta1

AlphaSDK Release Cycles withPrioritized Requirements

Cycle RequirementsBeta1

NightlyBuild & Test

2 weeks

Daily

Release Review Meeting• Demo release to BU• Retrospective on the

Release Cycle

SDK ReleaseIncrements

Daily Meeting• Items completed yesterday?• Plans for today?• Issues?

Release Planning Meeting• Review Release Cycle Backlog• Estimate Release Cycle

Backlog• Commit to 1-2 weeks

Beta2

Alpha

RC

Nightly Build & Test• Daily build using OE• Daily tests on dedicated

systems using testlink

Page 9: Introduction to the Linux SDK

Alpha(Proto1)

Cycle Start Review MRD

Complete SDK Req’s

Increment SDK version

Kickoff Nightly Builds

Cycle EndBuild review

Base SDK Requirements

Fulfilled

Beta1(Proto2)

Cycle StartReview Alpha

results

Add new features and component

updates

Cycle EndBuild review

Beta1 Cycle Requirements

Fulfilled

Beta2(Proto3)

Cycle StartReview Beta1

results

Add new features and component

updates

Final recipes submitted by start of 2nd wk

Cycle EndBuild review

Beta2 Cycle Req’s Fulfilled

Sign off fromComp Owners

Legal, OSRB & GTC

approvals

Release Candidate

(RC)

Cycle StartReview Beta 2

results

No new features

Bug fixes and patches only

Stop Nightly Build

Create Integration

branch

Cycle EndBuild review

RC Cycle Req’s Fulfilled

Sign off from BU

Re-Integration

Integration patches

pushed to Arago mainline

Occurs after the SDK release.

Cycle EndPush

integration patches back

to Arago mainline

Time = 0

PSP recipe received

EVMs in hand

T0 T0 + 2wks2wks

T0 + 4wksAlpha + 2wks

T0 + 6wksBeta1 + 2wks

T0 + 8wksRC + 1wk

T0 + 9wksSysTest + 1wk

System Test

Cycle StartPush RC to System Test for validation

Resolve Critical issues

only

Remove/hide components if

necessary

Release Note other issues

Cycle EndRelease RC to ti.com & board

vendors

T0 + 7wksBeta2 + 1wk

SDK release cycles

9

Page 10: Introduction to the Linux SDK

Nightly automation overview

10

Next Branches Master Branches

Open Source MainlinesArago and OpenEmbedded

Target Tests

Publish Build and

Test Results to Arago

Site

Build Next Branches

Arago Nightly Build

sdit-build01

OpenTest

Target Tests Host Tests

Release

Host Content

Build

Target Content

Build

Productize

SDK Nightly Build

sdit-build01 neo

OpenTest

Page 11: Introduction to the Linux SDK

SDK automation flow - Nightly

11

Front End Build ServerArago baseline distro

Back End Build ServerSDK Installers

OpenTest

Target Tests Host Tests

Release

Web Server Push

• SD Card contents

• Webgen contents

Kernel & FSComponents

Board VendorSD CardContents

TI.comsoftware-dl &

contents

CCSv5 & other Proprietary SW

Page 12: Introduction to the Linux SDK

Obtaining the SDK

• The Sitara SDK is provided on an SD card in the box with the EVM– NOTE: Some boards like the BeagleBoard and BeagleBone may come

without the SDK SD card in the box

• Often you will want to download the latest SDK from ti.com to get updates.

• There is now a central location for finding all Sitara Linux SDKs at http://www.ti.com/tool/linuxezsdk-sitara

12

Page 13: Introduction to the Linux SDK

Obtaining the SDK - Continued

• Each SDK page contains not only the single SDK installer, but also has many individual SDK components pulled out for smaller and quicker downloads

13

Single Installer

IndividualComponents

Page 14: Introduction to the Linux SDK

Documentation - Quick Start Guide

14

Page 15: Introduction to the Linux SDK

Documentation - Software developer’s guide• This guide is a wiki based document hosted externally at

http://processors.wiki.ti.com/index.php/Sitara_Linux_Software_Developer%E2%80%99s_Guide– Wiki based for instant updates & access– Step by Step details– How to start development using this SDK

• Links to additional documentation such as– Component User’s Guides– PSP release notes– Host system configuration instructions

• Also provided online and within the SDK as a pdf document

15

Page 16: Introduction to the Linux SDK

Sitara Linux training

• There is considerable Linux training material available to our customers as well when using the Sitara Linux SDK.

• Within the Software Developer’s Guide there is a Sitara Linux Training link that provides both the lecture and lab content

• All content is licensed under Creative Commons ShareAlike (CC BY-SA v3.0)

• Example training sessions include:– Hands On with Sitara Linux SDK (lecture/lab)– Linux Qt GUI Development (lecture/labs)– Optimizing Linux Boot Time– U-Boot & Linux Kernel Board Port (lecture/labs)– And many more…

16

Page 17: Introduction to the Linux SDK

SDK target components - MatrixSupports: All Platforms

• Matrix is the out-of-box experience application contained within the SDK and is launched automatically when the development board is booted

• Matrix is a PHP application running on an instance of the lighttpd web server on the target device and serving up HTML5 content

• The display is a simple Qt application using webkit to render the HTML being generated

• Because Matrix is a web application it can also be controlled from remote by connecting to the target board with a modern web browser– This provides interaction with the running Linux

system even on boards without video display capabilities

17

Page 18: Introduction to the Linux SDK

Matrix - Continued

• Matrix can be used to launch applications on the target system

• The content displayed within the Matrix screen is dynamically created by parsing .desktop files contained within the file system.

• Applications bring their own description data making adding additional functionality and demos as easy as installing the application

• Where possible the .desktop fields are based on the standard specified by freedesktop. – The rest of the .desktop fields as well as additional information on Matrix

can be found at http://processors.wiki.ti.com/index.php/Matrix_Users_Guide

18

Page 19: Introduction to the Linux SDK

SDK target components - PowerSupports: AM37x, Beagleboard-xM

• Located in the “Power” submenu of matrix

• The power submenu has applications that show:– How to transition between different CPU frequencies– Suspend and resume of the device

• The options available can vary based on the capabilities of the device

• User’s Guide available at http://processors.wiki.ti.com/index.php/Power_Management_Users_Guide

19

Page 20: Introduction to the Linux SDK

SDK target components - MultiMediaSupports: AM335x, AM35x, AM37x, Beagleboard-xM

• Located in the “Multimedia” submenu

• Based on Gstreamer media framework– Allows building dynamic pipelines that describe the data input, transformation operations,

and output.– Pipelines are flexible and behaviour can be changed based on adjusting the elements in the

pipeline

• All media components are open source and provided without licensing restrictions

• For Sitara devices with a Neon coprocessor (Cortex devices)– The ffmpeg Neon codecs are used to accelerate video decode operations

• User’s Guide available at http://processors.wiki.ti.com/index.php/ARM_Multimedia_Users_Guide

20

Page 21: Introduction to the Linux SDK

SDK Target Components - CameraSupports: AM37x

• Launched with the “Camera Loopback” button

• For devices with a camera input this application demonstrates how to take data from the media controller interface and output to the display.

• User’s Guide available at http://processors.wiki.ti.com/index.php/Camera_Users_Guide

21

Page 22: Introduction to the Linux SDK

SDK Target Components - CryptographySupports: All Platforms

• Located in the “Cryptos” submenu

• Uses the OpenSSL open source package to demonstrate a variety of cryptographic operations and performance metrics.

• On devices with cryptography accelerators the cryptodev API is available to allow OpenSSL to take advantage of hardware acceleration.– This operation is seamless to the user and will occur automatically if the hardware is available

• Cryptographic software has TSU exemption filed and the software is hosted at http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/crypto/latest/index_FDS.html

• User’s Guide available at http://processors.wiki.ti.com/index.php/Cryptography_Users_Guide

22

Page 23: Introduction to the Linux SDK

SDK Target Components - WLAN/BTSupports: AM335x, AM37x, AM180x

• WLAN located in the “Wi-Fi” submenu– The applications demonstrate configuring the device in:

• SoftAP mode - the device acts as an access point• WPA - connect to an existing network

– WiFi Direct - enables peer-to-peer connections between a group of up to 8 devices– Uses the wpa-supplicant open source software stack– Wpa-supplicant software has TSU exemption filed and the software is hosted at

http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/crypto/latest/index_FDS.html

• BT application is launched using the “Bluetooth” button– This application shows using the device to:

• Connect a bluetooth HID device such as a bluetooth keyboard• Connect a bluetooth audio device to stream audio data

– Qt based GUI for configuring bluetooth and scanning for devices– Uses the bluez open source software stack

• Information about additional command line demos can be found at http://processors.wiki.ti.com/index.php/Open_Source_Wireless_Connectivity_WLAN_and_Bluetooth_demos

23

Page 24: Introduction to the Linux SDK

SDK Target Components - 3DSupports: AM335x, Beaglebone, AM35x, AM37x, Beagleboard-xM

• Located in the “3D” submenu

• The applications demonstrate the use of the SGX graphics accelerator on devices with an SGX for 3D operations

• The driver and application sources as well as the SGX libraries are provided in the Sitara SDK as part of the graphics SDK which is packaged within it.– This SDK is produced by the graphics team from the Graphics DDK from

Imagination

• Supports– OpenGL ES 1.1– OpenGL ES 2.0– OpenVG

24

Page 25: Introduction to the Linux SDK

SDK Target Components - ARM BenchmarksSupports: All Platforms

• Located in the “ARM” submenu

• The following benchmars are provided– Dhrystone - Measures relative CPU cycles for comparison with other processors run

from L1 cache– Linpack - Measures CPU speed for single-precission floating point operations– Whetstone - Measures CPU speed for double-precission floating point operations– Lmbench benchmarks

• Communication bandwidth - measure bandwidth between processes• Communication latency - measure latency for various control messages• DDR bandwidth - measure memory bandwidth• Memory latency - measure memory latency

25

Page 26: Introduction to the Linux SDK

SDK Target Components - ProfilingSupports: All Platforms

• Located in the “Profiling” submenu

• The applications in this demonstrate how to use the open source Oprofile application to:– Generate different reports from assembly level to long detailed reports– Allows profiling two different applications to demonstrate how Oprofile can

be used• An application where one thread waits on another in a busy wait loop. This shows

the CPU utilization of the busy wait• An application where one thread waits on another and is notified using a signal.

This shows the low CPU utilization that signals can provide.

26

Page 27: Introduction to the Linux SDK

Installing the SDK• The Sitara Linux SDK is delivered as a single installer

– NOTE: The Sitara Linux SDK will also provide the option to install CCSv5 if the CCSv5 installer in found in the local directory. When installing from the SD card the CCSv5 installer is already placed in the local directory

• The Sitara Linux SDK installation has been streamlined to make installation quick and easy. The customer only needs to select:– The installation location– Whether or not to install CCSv5 if present

• The installer also notifies the user of important information such as– The default recommended environment– Notice of GPLv3 content within the SDK and information on how to

remove it– The location of the setup scripts within the SDK for additional

configuration

• The installer has been designed such that “root” permission is not required to install and evaluate the SDK.

27

Page 28: Introduction to the Linux SDK

SDK Target Development Tools

• These are the tools provided on the host to enable developing for the Sitara device.

• These tools are components of the SDK that are installed on the host that are:– Run on the target– Build code to run on the target– Directly configure the target

• They include– Cross Compiler– Cross Libraries– Board Support Packages– Top-level Makefiles– Setup Scripts

28

Page 29: Introduction to the Linux SDK

SDK Target Development Tools - Cross Compiler• The Sitara SDK contains its own GCC 4.5.3 based ARM

cross-compiler– This eliminates the need for a separate toolchain download and

removes the need for the customer to provide a toolchain location

• This toolchain is optimized for the processor family the SDK is targetting:– Previous CodeSourcery toolchains were made generic to ARM

so that they could support both ARM9 and Cortex-A8 devices.– This meant that libraries that could take advantage of the Neon

coprocessor such as libm were not utilizing the Cortex-A8 to its full potential

– The toolchain included with the SDK for Cortex-A8 devices has been optimized for Cortex devices and uses the Neon coprocessor

• The cross compiler is located in the linux-devkit/bin directory of the SDK

• This cross compiler is also paired with a gdbserver installed on the reference file system to allow for source code debugging

29

Page 30: Introduction to the Linux SDK

SDK Target Development Tools - Cross Libraries • The Sitara SDK ships with many open source libraries already cross

compiled and ready for linking

• The libraries are located in the linux-devkit directory of the SDK

• There is a script in the linux-devkit directory of the SDK called “environment-setup”. Sourcing this script will configure your development environment for cross compiling by performing actions such as:– Setting standard compile variables such as CC for the cross compiler– Adding the cross compiler to the PATH– Setting the PKG_CONFIG and other autotools settings to the cross

libraries– Configuring the Qt variables

• Sourcing the environment setup file will prepare the host system for target development

• Users can identify if the environment-setup script has been sources because their prompt will change to say “linux-devkit”

30

Page 31: Introduction to the Linux SDK

SDK Target Development Tools - Board Support Package • At the top-level of the SDK there is a directory called “board-

support”. This directory contains the components required to port to your custom hardware.

• This includes:– The Linux kernel sources– The bootloader sources

• In most cases the u-boot SPL is used in place of x-loader, which has been deprecated.

– Driver source for out-of-tree drivers

• The contents of this directory are usually pieces of the SDK that will require modification/configuration/rebuilding when porting to a new hardware platform

• You will also find pre-built kernel and bootloader images in a “prebuilt-images” directory that can be used to boot the TI EVM

31

Page 32: Introduction to the Linux SDK

SDK Target Development Tools - Top-level Makefile • At the top-level of the SDK there is a

Makefile and a Rules.make file. These files can be used to build the SDK components as well as to import useful settings.

• Rules.make - Provides settings used by component Makefiles for building the components. These include setting for the cross compiler and machine being built.

• Makefile - This Makefile contains targets to build, install, and clean most of the components of the SDK such as the board-support packages and the example applications

32

Page 33: Introduction to the Linux SDK

SDK Target Development Tools - Setup Scripts • At the top-level of the Sitara SDK there is a script called

setup.sh. This script should be run with “root” permission and will assist in configuring the development host and EVM.

• The general flow is to– Install required host side packages such as tftp server and

nfs server– Prompt the user for how they would like to configure the

EVM• TFTP kernel + NFS file system• SD kernel + NFS file system• TFTP kernel + SD file system• SD kernel + SD file system

– Setup the TFTP and NFS images if selected– Send the configuration to the EVM

33

Page 34: Introduction to the Linux SDK

SDK Host Tools

• These tools are intended to run on the host and assist with the configuration of Sitara devices

• These tools differ from the SDK Target Development tools in that they are not performing cross-compilation or contain code meant to run directly on the target

• Most of these tools can be found in the “host-tools” directory of the SDK

34

Page 35: Introduction to the Linux SDK

SDK Host Tools - Pinmux

• This tool allows users to select the peripherals and interfaces they intend to use and identifies pin conflicts if any

• Each platform has a default configuration file to serve as a starting point

• The output of the tool is a sample header file that can be used as a reference to configure the u-boot bootloader for the user’s configuration

• The user’s guide can be found at http://processors.wiki.ti.com/index.php/Pin_Mux_Utility_for_ARM_MPU_Processors

35

Page 36: Introduction to the Linux SDK

SDK Host Tools - Flash Tool

• This tool was created to assist customers with flashing a board that has no existing bootloaders flashed.– This could be because the bootloaders

were erased, or in production where clean memory devices are installed which do not have any software loaded yet.

• The flash tool has the following features:– Open source & scalable– Supports additional NAND types

through configuration files– Support ECC & ONFI– Supports UART & USB protocols– Developed in Qt

36

Page 37: Introduction to the Linux SDK

CCSv5

• The Sitara SDK also comes with CCSv5 available as:– Download for web updates– On the 3rd partition of the in-the-box SD card

• CCSv5 provides the following features– Eclipse based– Runs on Linux for debugging Linux– Multi-core debug– Run-Mode Linux debug support

• Remote GDB debug• Debug Linux applications and kernel

– Stop-Mode Linux support• Control target using JTAG• Enables examination of target and current Linux process• Requires installation of emulator package

• In addition to the standard CCSv5 package the Sitara SDK also adds the following plugins– Remote System Explorer

37

Page 38: Introduction to the Linux SDK

Driving MainlineWhat is it?• The ability to provide our customers a stable release from the community with an incremental patch set

Scope• Mainline applies to all 3 primary components of our Linux solution

– Uboot denx.de– Linux kernel kernel.org– Filesystem OpenEmbedded/Yocto

• Each has its own *mainline* consisting of well documented development flows, release schedules, git trees & maintainers

Benefits• Insanely easy, “just works” Linux solutions

• Easy board port to customer’s platforms

• Continued support of Existing Devices

• New Device development is incremental

• Bandwidth to focus on more middleware/applications

• Potential to enable Reference Designs

38

Page 39: Introduction to the Linux SDK

THANK YOU!For more Sitara Boot Camp sessions visit: www.ti.com/sitarabootcamp

39