Easing embedded Linux software development for SBCs



Similar documents
Eddy Integrated Development Environment, LemonIDE for Embedded Software System Development

Eclipse IDE for Embedded AVR Software Development

Embedded Software Development

Installing Eclipse C++ for Windows

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

ERIKA Enterprise pre-built Virtual Machine

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

OpenCV on Android Platforms

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

Efficient embedded software development using QEMU

Cosmic Board for phycore AM335x System on Module and Carrier Board. Application Development User Manual

Introduction to Native Android Development with NDK

Developing an Application for the i.mx Devices on the Linux Platform

Development_Setting. Step I: Create an Android Project

Real-time Debugging using GDB Tracepoints and other Eclipse features

Code Estimation Tools Directions for a Services Engagement

Using Intel C++ Compiler in Eclipse* for Embedded Linux* targets

Lab 0 (Setting up your Development Environment) Week 1

Building graphic-rich and better performing native applications. Pro. Android C++ with the NDK. Onur Cinar

Android Development: a System Perspective. Javier Orensanz

How To Develop Android On Your Computer Or Tablet Or Phone

STLinux Software development environment

Xeon Phi Application Development on Windows OS

Example of Standard API

ANDROID DEVELOPER TOOLS TRAINING GTC Sébastien Dominé, NVIDIA

Yocto Project ADT, Eclipse plug-in and Developer Tools

How to use the Eclipse IDE for Java Application Development

Android: How To. Thanks. Aman Nijhawan

DS-5 ARM. Using the Debugger. Version 5.7. Copyright 2010, 2011 ARM. All rights reserved. ARM DUI 0446G (ID092311)

Overview. Open source toolchains. Buildroot features. Development process

IRF2000 IWL3000 SRC1000 Application Note - Develop your own Apps with OSGi - getting started

Programming Environment Setup

MontaVista Linux 6. Streamlining the Embedded Linux Development Process

Installing (1.8.7) 9/2/ Installing jgrasp

SDK Code Examples Version 2.4.2

System Structures. Services Interface Structure

Java Application Development using Eclipse. Jezz Kelway Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom

An Easier Way for Cross-Platform Data Acquisition Application Development

Software Requirement Specification for Web Based Integrated Development Environment. DEVCLOUD Web Based Integrated Development Environment.

RPC and TI-RPC Test Suite Test Plan Document

Board also Supports MicroBridge

DS-5 ARM. Using the Debugger. Version Copyright ARM. All rights reserved. ARM DUI0446P

A Tutorial on installing and using Eclipse

Modern Software Development Tools on OpenVMS

DS-5 ARM. Using the Debugger. Version Copyright ARM. All rights reserved. ARM DUI 0446M (ID120712)

Getting Started with Kinetis SDK (KSDK)

Andreas Burghart 6 October 2014 v1.0

GIVE WINGS TO YOUR IDEAS TOOLS MANUAL

Open EMS Suite. O&M Agent. Functional Overview Version 1.2. Nokia Siemens Networks 1 (18)

Introduction to Android

Cisco Networking Academy Program Curriculum Scope & Sequence. Fundamentals of UNIX version 2.0 (July, 2002)

LECTURES NOTES Organisational Aspects of Software Development

SIM900 Eclipse environment install Application Note_V1.00

CSC230 Getting Starting in C. Tyler Bletsch

NetBeans IDE Field Guide

Using Microsoft Visual Studio API Reference

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

VOL. 2, NO. 1, January 2012 ISSN ARPN Journal of Science and Technology ARPN Journals. All rights reserved

Software Development Kit

Network Shutdown Module V3 Extension of the User Manual for IBM BladeCenter architecture

Site Configuration SETUP GUIDE. Windows Hosts Single Workstation Installation. May08. May 08

The MaXX Desktop. Workstation Environment. Revised Road Map Version 0.7. for Graphics Professionals

Fahim Uddin 1. Java SDK

An Embedded Wireless Mini-Server with Database Support

Tutorial 5: Developing Java applications

Android Programming and Security

TEGRA X1 DEVELOPER TOOLS SEBASTIEN DOMINE, SR. DIRECTOR SW ENGINEERING

Middleware- Driven Mobile Applications

Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment

RVDS 3.x with Eclipse IDE

Technical Note. TN_134 FTDI Android D2XX Driver

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center

An Introduction to Android

WA1826 Designing Cloud Computing Solutions. Classroom Setup Guide. Web Age Solutions Inc. Copyright Web Age Solutions Inc. 1

PetaLinux SDK User Guide. Application Development Guide

SECURELINK.COM REMOTE SUPPORT NETWORK

Eclipse.org CDT and Cygwin: A Tutorial on Installation and Functionality

Introduction to Android

CPSC 226 Lab Nine Fall 2015

Take full advantage of IBM s IDEs for end- to- end mobile development

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

Eclipse installation, configuration and operation

1) SETUP ANDROID STUDIO

Programming with the Dev C++ IDE

The Asterope compute cluster

Introduction to Android

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

Software Development for Embedded GNU Radio Applications

Overview of CS 282 & Android

Lecture 1 Introduction to Android

Addonics T E C H N O L O G I E S. NAS Adapter. Model: NASU Key Features

For Introduction to Java Programming, 5E By Y. Daniel Liang

ACE: Dreamweaver CC Exam Guide

Module Title: Software Development A: Mobile Application Development

COMPANIES REGISTRY. Third Party Software Interface Specification. (Part 1 Overview)

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

SimbaEngine SDK 9.4. Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days. Last Revised: October Simba Technologies Inc.

Make the green IP switch Low-energy semiconductor solutions for VoIP

Transcription:

Page 1 of 5 Printed from: http://www.embedded-computing.com/departments/eclipse/2006/11/ Easing embedded Linux software development for SBCs By Nathan Gustavson and Eric Rossi Most programmers today leaving college with Electrical Engineering or Computer Science degrees are fairly well versed in programming on a Linux desktop platform. When these programmers need to take the leap to programming embedded Linux systems, they are often surprised and bewildered that the program they wrote on their desktop will not run their Linux embedded system. To alleviate this problem, some programmers choose to use versions of desktop systems in embedded applications. This is generally not a good fit as desktop systems typically have fans and hard drives, which are failure points. A bigger obstacle is fast change; the need to have the fastest, newest technology obsoletes desktop systems in as little as six months. Designing a long-life embedded product around a platform with no longevity is a recipe for disaster. Even if desktop platforms could be guaranteed to be around five years from now, the Linux kernel and associated distributions are moving targets. The kernel and standard libraries are constantly evolving, and distributions are fighting to keep pace. Kernel patches and library updates can render a user s program inoperable. This situation is exacerbated when engineers are required to update development machines due to a security hole or other issue. A way to abstract the embedded development environment from the standard desktop environment is needed. The key is not only to find a long-life embedded Linux hardware platform, but also a long-life embedded Linux software platform. Accomplished embedded Linux programmers often can create an embedded development platform by gathering the correct libraries and tool versions, and modifying the Makefile appropriately. Even when successful, it s a suboptimum development environment. Ideally, compilers should not rely on the libraries and kernels of their host, but instead on the tool chain of the more static target. The software platform should be compatible with other platforms, other Operating Systems (OSs), and other languages. The Software Development Kit (SDK) should be based on tool chains with broad community support so that even if one of the organizations driving the SDK stops supporting it, it survives on the shoulders of the rest. Enter Eclipse Eclipse is an open source, redistributable, cross-platform, framework for code development. It natively supports Java, and C/C++ with its CDT plug-in. It provides many of the same functions that have been reinvented over and over by the commercial Integrated Development Environments (IDEs) (syntax highlighting, language aware searches, code completion, and so on) but doesn t rely on any one particular set of tools to accomplish it (see Figure 1).

Page 2 of 5 Figure 1 (click to zoom) The flexibility of this solution led EMAC and other embedded software companies to build development platforms in an Eclipse environment. This commercial adoption has created de facto standardization for embedded code developers. OEMs can write Eclipse plug-ins and projects that work with GNU tool chains while providing compatibility with numerous commercial platforms running both Windows and Linux. Embedded Java EMAC s original Eclipse environment was developed for the SoM-400M module, using a DS400 TINI processor from Dallas/Maxim. This processor s firmware contains a proprietary embedded JRE. Building Java code for the system is completed by compiling classes for a normal JRE environment, replacing the core jars with TINI specific jars and then converting the resulting classes into TINI executables. To do this developers took advantage of Eclipse s native Ant support, which can be used to create a kind of advanced Java Makefile in XML format. Ant then builds targets by using Eclipse s JDTcompileradaptor class, which makes the internal compiler available to Ant s tasks. The Sourceforge TiniAnt extension then performs the final conversion from Java class to TINI executable. All the complex declarations required to do this are hidden in a top-level build.properties file, vastly reducing the complexity of compilation for the SoM-400M to simple, standard Ant tasks. Cross-compiled C The Eclipse tools project provides an open, redistributable C development plug-in called the CDT. It provides, among other things: Syntax highlighting Code completion On-the-fly builds Debugger integration (using GDB s MI interface) It does not provide the actual compiler, linker, and debugger binaries. These are specific to the target being built for and must be provided from an external source. They can then be integrated into Eclipse by writing an Eclipse plug-in, or, more simply, by using standard make projects and specifying the compiler in the Makefile. The Makefile in Listing 1 will compile a simple Hello World example project in the EMAC Eclipse environment.

Page 3 of 5 SDKBASE=../../ CROSS=$(SDKBASE)gcc-4.0.0-i486-D/bin/i486-linux- CC=$(CROSS)gcc LIBFLAGS =-lc #VERBOSE=-v CFLAGS= -g OFLAGS=-Wl TARGET=hello CFILES=hello.c all: $(TARGET) $(TARGET): objects $(CC) $(VERBOSE) *.o $(OFLAGS) $(SLIBS)-o $(TARGET) $(LIBFLAGS) objects: $(CFILES) $(CC) $(VERBOSE) $(CFLAGS) -c $(CFILES) clean: $(RM) *.o *.gdb $(TARGET) TARGET_IP=192.168.0.1 LOGIN=someuser PASSWORD=somepassword upload: wput $(TARGET) ftp://$(login):$(password)@$(target_ip)/../../tmp/$(target) Like the embedded Java environment, complex compiler/linker flags common to all projects are hidden in a higher-level file, which is then included by all Makefiles in the SDK. EMAC provides cross-compilers for all its boards by building freely available GNU cross-compilers against the libraries of the target development OS. On Linux these libraries are native; on Windows the Cygwin library is used. We then hide the actual Eclipse executable and replace it with a batch file that temporarily adds the required paths to support the GNU tool chains when Eclipse is started. Debugging Debugging takes place using GDB and GDBServer to facilitate a remote debugging environment. To accomplish this, the compiled executable is uploaded to the SBC and a GDBServer session is initiated listening on a specific port or serial terminal. The Eclipse Debugging perspective allows the user to then debug the application by specifying the connection parameters to use as well as the version of GDB built for the target architecture. The Debugging perspective displays the source code of the program to be debugged and the generated assembly code. It is easy to manage and monitor breakpoints and variables, as well as single-step through the program line by line. The current position in the source code is automatically highlighted. Eclipse provides a graphical debugging environment that greatly simplifies the process of remote target debugging. Target communication When developing for an embedded environment, it will be necessary to establish a connection with the target board, either by a serial terminal program or through TCP using a Telnet, SSH, or other similar connection. When this is done through the command line interface or a graphical front end, the programmer is forced to constantly switch between windows to monitor the connection and the IDE simultaneously. With a little integration, an OEM can create a robust, cross-platform development platform for their boards that will run on the same platform adopted by many commercial software vendors. EMAC eliminates this problem by integrating Eclipse plug-ins that allow for SSH, Telnet, and Terminal connections all within Eclipse. This allows the programmer to monitor the embedded target board as if it were a local file system and issue commands directly without having to leave the Eclipse environment. CVS Eclipse provides a powerful CVS natively. By setting up a CVS login and providing passwords to customers, developers can insure they always have access to the most recent versions of code and bug fixes for products.

Page 4 of 5 Uploading software patches and entirely new components for SDKs onto a CVS server provides up-to-the-minute software support to customers, who can graphically view differences in files and patch their own SDK with some, all, or none of what has been uploaded. Documentation Eclipse provides its own native browser, which is beneficial for creating HTML linked documentation right in the workspace. In this way, customers can browse through HTML documentation (similar to that generated by Doxygen and Javadoc). Context-sensitive help is also integrated in Eclipse (see Figure 2), allowing new users to be more productive. Figure 2 (click to zoom) This documentation can link right back to the software developer s website as well, allowing user documentation to be added dynamically. Users can switch right from code to documentation with a tab, rather than navigating several windows at once. Integrated tools, better development Eclipse provides an environment where GNU tools and commercial tools can play together. With a little integration, an OEM can create a robust, cross-platform development platform for their boards that will run on the same platform adopted by many commercial software vendors. Within the Eclipse framework, EMAC uses cross-compilation to alleviate the problem of abstracting the embedded development environment from the standard desktop environment. Debugging is accomplished using GDB with Eclipse windows for the debugger s input and output. Communication with the target is also integrated into Eclipse through Telnet, FTP, Terminal, and SSH plug-ins. CVS version control and HTML documentation are both accomplished within the Eclipse environment as well. All of the aforementioned development capabilities rolled up into a standard IDE make for a powerful, efficient development platform that can be used with a small 8-bit Java-based controller and a 32-bit Linux server programmed in C. This is the power of Eclipse. Nathan Z. Gustavson is a senior systems engineer at specializing in Linux and real-time control. He holds a BS in Electrical Engineering and is currently pursing a MS at Southern Illinois University. Eric Rossi is a senior manager at where he is responsible for new product development and custom engineering management. Eric has more than 25 years of experience in embedded system design and holds a BS in Electrical Engineering Technology as well as a BS and MS in Computer Science. To learn more, contact Nathan or Eric at: 2390 EMAC Way Carbondale, IL 62902

Page 5 of 5 618-529-4525 Nathan: ngustavson@emacinc.com Eric: erossi@emacinc.com www.emacinc.com MMVII Embedded Computing Design. An OpenSystems Publishing, LLC publication.