De leukste Bug

Post on 22-Jun-2015

100 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

The Bug is a device with which you can build your own mobile system by combining certain modules. Each module delivers a specific piece of functionality, such as camera, video output, GPS location, etc. The fun part of this device is that both the hardware and the software are completely modular and dynamic. That means that you can easily, with Eclipse and an SDK, write your own software for it. This session will introduce the Bug and the OSGi based software stack and will build and deploy a whole application.

Transcript

luminis

De leukste BugMarcel Offermans

luminis

Introduction

• Marcel Offermans

• marcel.offermans@luminis.nl

• .

• IT solutions from idea toimplementation

• experts in Java, OSGi, .NET,Agile/Scrum

Enschede

image © 2008 Google Earth

ApeldoornArnhem

luminis

Agenda

• The BUG hardware

• The software stack, from kernel to application

• OSGi overview

• Concierge, R3 and the SDK

• Live demos

• Hello world on the BUG

• Developing and deploying a camera application

• Wrapping up

luminis

Agenda

• The BUG hardware

• The software stack, from kernel to application

• OSGi overview

• Concierge, R3 and the SDK

• Live demos

• Hello world on the BUG

• Developing and deploying a camera application

• Wrapping up

luminis

BUG

• Electronic building blocks to build personalized devices

• Open platform for custom hardware and software development

• Based on proven technologies:

• Linux

• Java

• OSGi

• 100% open source ((L)GPL, BSD and EPL)

luminis

BUG elements

• BUGbase

• mobile linux computer

• BUGmodules

• video, audio, GPS, sensors, general I/O, ...

• SDK

• based on Eclipse

• BUGnet

• community application repository

luminis

BUGbase

• Mobile Linux computer

• Freescale ARM SoC at 532 MHz

• 128 MB RAM, 32 MB flash, 2 GB SD storage, USB 2.0

• LCD menu system with navigation buttons and LEDs

• battery powered

• BUG Module Interface with 4 slots

• I2C, I2S, UART, ...

• hot pluggable

• kernel subsystem

luminis

BUG camera

• 2 megapixel camera

• flash LED

• 3 buttons

luminis

BUG LCD

• QVGA (320x240) resolution

• touchscreen

• (simple) accelerometer

luminis

BUG GPS

• GPS device

• internal or external antenna

luminis

BUG motion and accelerometer

• IR motion detector

• 3 axis accelerometer

luminis

BUG von Hippel

• named after MIT professor Eric von Hippel

• exposes most hardware interfaces

• suited for rapid prototyping of modules, and as general I/O device

Democratizing Innovation

In this book I explain in detail how the emerging process of user-centric, democratized innovation works. I also explain how innovation by users provides a very necessary complement to and feedstock for manufacturer innovation.

luminis

BUG audio

• audio in and out

• mic, headphone, line-in, line-out

• 2 hardware buttons

luminis

Third party and planned

• Zigbee

• Wifi

• 3G

luminis

Agenda

• The BUG hardware

• The software stack, from kernel to application

• OSGi overview

• Concierge, R3 and the SDK

• Live demos

• Hello world on the BUG

• Developing and deploying a camera application

• Wrapping up

luminis

BUG software stack

• Linux 2.6 kernel

• CDC JVM (phoneME advanced)

• OSGi R3 framework (Concierge)

• BUG applications are collections of OSGi bundles Linux Kernel

Java VM

OSGi

AppAppApp

luminis

OSGi history

• Started as an embedded platform for the “home gateway”

• Originally under the JCP as JSR-8 (1999)

• OSGi alliance, large consortium, with a mission:

• maintaining and publicizing the OSGi specification

• certifying implementations

• organising events

• OSGi R3: march 2003

• Current version: OSGi Release 4.1 (JSR-291)

luminis

OSGi today

OSGi technology is the dynamic module system for Java™

OSGi technology is Universal Middleware.

OSGi technology provides a service-oriented, component-based environment for developers and offers standardized ways to manage the software lifecycle. These capabilities greatly increase the value of a wide range of computers and devices that use the Java™ platform.

luminis

OSGi Alliance

• Expert Groups:

• core platform (CPEG)

• mobile (MEG)

• vehicle (VEG)

• enterprise (EEG)

• residential (REG)

• Working Groups:

• marketing

• requirements

luminis

OSGi specification

OSGi Service PlatformService CompendiumThe OSGi Alliance

Release 4, Version 4.1April 2007

OSGi Alliance

Digitally signed by OSGi Alliance DN: cn=OSGi Alliance, c=US Date: 2007.02.22 14:44:10 + 01'00'

Signatu re Not Verified

OSGi Service PlatformCore SpecificationThe OSGi Alliance

Release 4, Version 4.1April 2007

OSGi Alliance

Digitally signed by OSGi Alliance DN: cn=OSGi Alliance, c=US Date: 2007.02.22 14:45:47 + 01'00'

Signatur e Not Verified

luminis

OSGi Framework Layering

L3 - Provides a publish/find/bind service model to decouple bundles

L2 - Manages the life cycle of a bundle in a framework without requiring the vm to be restarted

L1 - Creates the concept of a module (aka. bundles) that use classes from each other in a controlled way according to system and bundle constraints

L0 - well defined profiles that define the environment in which bundles can work, ie:* CDC/Foundation* JavaSE-6

SERVICE MODEL

MODULE

LIFE-CYCLE

ExecutionEnvironment

luminis

Module Layer

• Unit of deploymentis the bundle i.e., a JAR

• Separate class loaderper bundle

• Class sharing at the Java package level

• Supports multiple versions of packages

Module

ModuleBundle Bundle Bundle

org.apache.utils 1.0

org.apache.utils 1.1org.apache.log 2.3

org.apache.db 1.4

Bundle

exports

imports

exports

imports

exports

exports

luminis

Manifest

Bundle-Name: Example BundleBundle-SymbolicName: net.luminis.example.bundleBundle-Version: 1.0.0DynamicImport-Package: net.luminis.jdbc.*Import-Package: org.osgi.framework;version=“1.3“, org.osgi.service.event;version=“[1.0,2.0)“, net.luminis.foo;resolution:=“optional“Export-Package: org.osgi.service.event;version=“1.1“Bundle-ManifestVersion: 2

luminis

Life-cycle Layer

• Managed life cycle

• States for each bundle;

• Allows updates of existing bundles

• Dynamically install, start, update, and uninstall

Life-cycle

Life-cycle

start

end

installedinstall

startingstart

stopping stop

activeresolved

uninstalled

uninstall

Module

luminis

Life-cycle Example

Bundle

OSGi Framework

luminis

Life-cycle Example

Bundle

OSGi Framework

Provided Package

luminis

Life-cycle Example

Bundle

OSGi Framework

Bundle

Install

Bundle

luminis

Life-cycle Example

Bundle

OSGi Framework

Bundle

Resolve

Bundle

luminis

Service Layer

• OSGi framework promotes service oriented interaction pattern among bundles

Service

Service

Log Database

Bundle Bundle Bundle

publish useuse

publish

Bundle

Prefs

publish

use

Service Provider

Service Requester

Service Registry

interact

publish find

Life-cycle

Module

luminis

Service Example

Bundle

OSGi Framework

luminis

Service Example

Bundle

OSGi Framework

Provided Package

Provided Service

luminis

Service Example

Bundle

OSGi Framework

Bundle

Install

Bundle

luminis

Service Example

Bundle

OSGi Framework

Bundle

Resolve

Bundle

luminis

Service Example

Bundle

OSGi Framework

Bundle

Resolve

Service

luminis

Security Concepts Overview

• Codebased security of the Java Security Model

• Makes use of Protection Domain

• The stack walk based Permission Check

• Signed bundles

• User based security is supported by the UserAdmin service but not integrated in the standard permission check as with JAAS

• PermissionAdmin and ConditionalPermissionAdmin servicesprovide management infrastructure

Security

Module

Life-cycle

Service

luminis

Leveraging standard services

• Specification:

• OSGi compendium – catalog of standard service descriptions

• Implementations:

• OBR repository at bundles.osgi.org – over 1400 bundles, implement compendium and other services

• Maven repository and third party OBR’s

• Springsource has a repository

• More and more projects are made OSGi compatible, for example: Apache Commons OSGi, Jetty, ...

luminis

OSGi compendium

Log

HTTP

Device Access

Configuration AdminPreferences

Metatype

Wire AdminUser Admin

IO Connector

Initial Provisioning

UPnP™ Device

Declarative Services

Event Admin Service Tracker

XML Parser

Position

Measurement and State

Execution Environment Spec

OSGi Service PlatformService CompendiumThe OSGi Alliance

Release 4, Version 4.1April 2007

OSGi Alliance

Digitally signed by OSGi Alliance DN: cn=OSGi Alliance, c=US Date: 2007.02.22 14:44:10 + 01'00'

Signatu re Not Verified

luminis

Concierge

• implements OSGi R3 specification

• small footprint: 80 kB

• optimized for embedded environments

• low resource consumption

• tuned for VM’s that interpret bytecode

• tested on many platforms

• iPAQ, Zaurus, Nokia 9300, LinkSys NSLU, iMote2, ...

• Homepage: http://concierge.sourceforge.net/

luminis

OSGi R3

• no bundle symbolic names

• no require-bundle

• only one version of a package

• a somewhat smaller compendium

OSGi Service Platform

Release 3March 2003

luminis

Dragonfly BUG SDK

• software development kit to build applications

• Eclipse plug-ins, open source

• includes a virtual BUG, an emulator to test applications without hardware

luminis

SDK interfaces with hardware

luminis

Agenda

• The BUG hardware

• The software stack, from kernel to application

• OSGi overview

• Concierge, R3 and the SDK

• Live demos

• Hello world on the BUG

• Developing and deploying a camera application

• Wrapping up

luminis

Hello World on the BUG

• Register ourselves as a listener for button events

• When an event comes in, blink all LEDs for half a second

• Deploy the code to the BUG

luminis

Adding modules

• at the OSGi level, adding a module means new services appearing

• applications can track these services and become active once all required services are present

• BUG SDK has a convenient project wizard to help you with that

• internally, Service Trackers are used to track OSGi services

luminis

Developing and deploying a camera application

• Use the camera, LCD and accelerometer to:

• wait until you hold the device still for a little while

• take a picture

• display the picture on the LCD

• Use the project wizard to depend on the right services

• Deploy to the BUG

• Test the application

luminis

Agenda

• The BUG hardware

• The software stack, from kernel to application

• OSGi overview

• Concierge, R3 and the SDK

• Live demos

• Hello world on the BUG

• Developing and deploying a camera application

• Wrapping up

luminis

Wrapping up

• We’ve looked at the open software and hardware stack of the BUG

• After a brief look at OSGi, we developed and deployed a couple of applications to the BUG

• Before you ask, a new version of the BUG, which supports WiFi is scheduled for June and will ship to europe (you need a US address now)

• The BUG community is very supportive, check it out on their site and go to #buglabs on Freenode IRC

luminis

Links

• Slides, docs and code:http://opensource.luminis.net/

• Buglabs:http://buglabs.net/

• OSGi:http://www.osgi.org/

• Marcel Offermans: marcel.offermans@luminis.nl

luminis

Questions?!

? & !

top related