Introduction to the Linux SDK

Download Report

Transcript Introduction to the Linux SDK

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
2
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
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
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
Sitara Linux SDK overview
•
Board Support Package (BSP)
–
•
Documentation
–
•
Easy installation of all target and host software
components and documentation
CCSv5
–
–
•
ARM Benchmarks, Power, Multimedia, Camera,
Cryptography, WLAN/Bluetooth, Profiling, 3D Graphics
SDK Installer
–
•
GUI based on PHP and HTML5
Touchscreen, Mouse & Keyboard, Web Browser
Example Applications
–
•
Quick Start Guide & SW Developer’s Guide
Matrix Application Launcher
–
–
•
Linux Kernel, Bootloaders & File System
Linux aware debug
Preconfigured projects for example applications
Host Tools
–
Flash Tool, PinMux Utility
6
Sitara Linux SDK overview - Continued
Matrix Application Launcher
ARM
Benchmarks
3D Graphics
USB Profiler
Power
Manager
System
Information
Web Browser
WLAN GUI
Qt Embedded
QGLWidget
Gstreamer/FFMPEG
QWidget
Wifi
BlueZ
MPEG4, H.264, MPEG2, AAC, …
OpenGL ES
V4L2
FBDEV
DSS2
ALSA
VISA
McSPI
Touch
screen
Ethernet
I2C
USB
McBSP
MMC/SD
UART
System on Chip
Target Board
SDK agile development process
Daily Meeting
• Items completed yesterday?
• Plans for today?
• Issues?
Nightly Build & Test
• Daily build using OE
• Daily tests on dedicated systems
using testlink
Daily
Release Planning Meeting
• Review Release Cycle Backlog
• Estimate Release Cycle Backlog
• Commit to 1-2 weeks
SDK
Release
Cycles
with
Prioritized
Requirements
Nightly
Build & Test
2 weeks
Release Review Meeting
• Demo release to BU
• Retrospective on the
Release Cycle
Alpha
Beta1
Beta2
RC
RC
Cycle Requirements
SDK Release
Increments
Beta2
Beta1
Alpha
8
SDK release cycles
T0
T0 + 2wks
2wks
T0 + 4wks
Alpha + 2wks
T0 + 6wks
Beta1 + 2wks
T0 + 7wks
Beta2 + 1wk
T0 + 8wks
RC + 1wk
T0 + 9wks
SysTest + 1wk
Time = 0
Alpha
(Proto1)
Beta1
(Proto2)
Beta2
(Proto3)
Release
Candidate
(RC)
System
Test
ReIntegration
PSP recipe
received
Cycle Start
Review MRD
Cycle Start
Review Alpha
results
Cycle Start
Review Beta1
results
Cycle Start
Review Beta 2
results
EVMs in hand
Complete SDK
Req’s
Cycle Start
Push RC to
System Test
for validation
Integration
patches
pushed to
Arago mainline
Add new
features and
component
updates
Add new
features and
component
updates
No new
features
Resolve
Critical issues
only
Occurs after
the SDK
release.
Increment
SDK version
Kickoff Nightly
Builds
Cycle End
Build review
Base SDK
Requirements
Fulfilled
Final recipes
submitted by
start of 2nd wk
Cycle End
Build review
Beta1 Cycle
Requirements
Fulfilled
Cycle End
Build review
Beta2 Cycle
Req’s Fulfilled
Sign off from
Comp Owners
Legal, OSRB
& GTC
approvals
Bug fixes and
patches only
Stop Nightly
Build
Remove/hide
components if
necessary
Create
Integration
branch
Release Note
other issues
Cycle End
Build review
RC Cycle
Req’s Fulfilled
Cycle End
Release RC to
ti.com & board
vendors
Cycle End
Push
integration
patches back
to Arago
mainline
Sign off from
BU
9
Nightly automation overview
Open Source Mainlines
Arago and OpenEmbedded
Next Branches
Master Branches
sdit-build01
sdit-build01
Target Tests
Arago Nightly Build
Host
Content
Build
Release
OpenTest
Publish
Build and
Test
Results
to Arago
Site
Target
Content
Build
Productize
Build Next Branches
neo
OpenTest
Target Tests
Host Tests
SDK Nightly Build
10
SDK automation flow - Nightly
CCSv5 &
other Proprietary SW
Kernel & FS
Components
Front End Build Server
Back End Build Server
Arago baseline distro
SDK Installers
Release
Web Server
Push
Board
Vendor
SD Card
Contents
• SD Card
contents
OpenTest
Target Tests
• Webgen
contents
Host Tests
TI.com
software-dl &
contents
11
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
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
Single Installer
Individual
Components
13
Documentation - Quick Start Guide
14
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_Develop
er%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
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
SDK target components - Matrix
Supports: 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
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
SDK target components - Power
Supports: 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_Gui
de
19
SDK target components - MultiMedia
Supports: 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
SDK Target Components - Camera
Supports: 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
SDK Target Components - Cryptography
Supports: 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
SDK Target Components - WLAN/BT
Supports: 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://softwaredl.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
SDK Target Components - 3D
Supports: 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
SDK Target Components - ARM
Benchmarks
Supports: 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
SDK Target Components - Profiling
Supports: 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
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
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
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
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 “linuxdevkit”
30
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
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
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
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
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.ph
p/Pin_Mux_Utility_for_ARM_MPU_Pr
ocessors
35
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
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
Driving Mainline
What 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
Linux kernel
Filesystem
denx.de
kernel.org
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
For more Sitara Boot Camp sessions visit:
www.ti.com/sitarabootcamp
THANK YOU!
39