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.
3. 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
4. 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
5. 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)
6. luminis
BUG elements
• BUGbase
• mobile linux computer
• BUGmodules
• video, audio, GPS, sensors, general I/O, ...
• SDK
• based on Eclipse
• BUGnet
• community application repository
7. 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
11. luminis
BUG motion and
accelerometer
• IR motion detector
• 3 axis accelerometer
12. luminis
BUG von Hippel
• named after MIT professor
Eric von Hippel
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.
• exposes most hardware
interfaces
• suited for rapid prototyping of modules, and as
general I/O device
13. luminis
BUG audio
• audio in and out
• mic, headphone, line-in,
line-out
• 2 hardware buttons
15. 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
16. App App App
OSGi
luminis
BUG software stack
• Linux 2.6 kernel
• CDC JVM (phoneME advanced)
• OSGi R3 framework (Concierge)
Java VM
• BUG applications are collections
of OSGi bundles Linux Kernel
17. 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
18. 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.
20. luminis
OSGi specification
OSGi Service Platform
Service Compendium
The OSGi Alliance
Release 4, Version 4.1
April 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 Platform
Core Specification
The OSGi Alliance
Release 4, Version 4.1
April 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
21. 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
luminis
SERVICE MODEL
LIFE-CYCLE
MODULE
Execution
Environment
22. Bundle
luminis
Module Layer
exports
• Unit of deployment
is the bundle i.e., a JAR
• Separate class loader
per bundle
• Class sharing at the Java package level
• Supports multiple versions of packages
Module
Module
Bundle Bundle Bundle
org.apache.utils 1.0
org.apache.db 1.4
org.apache.log 2.3 org.apache.utils 1.1
exports
imports
exports
imports
exports
29. luminis
Service Layer
• OSGi framework
promotes service
oriented interaction
pattern among
bundles
Service
Service
Log Database
publish use
use
publish
Bundle Bundle Bundle
Bundle
Prefs
publish
use
publish find
Service
Provider
Service
Requester
Service
Registry
interact
Life-cycle
Module
35. 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
Security
the UserAdmin service but not
integrated in the standard permission
Service
check as with JAAS
• PermissionAdmin and
ConditionalPermissionAdmin services
provide management infrastructure
Life-cycle
Module
luminis
36. Leveraging standard services
• Specification:
• OSGi compendium – catalog of standard service
luminis
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, ...
37. User Admin Wire Admin
luminis
OSGi compendium
Log
XML Parser
Position
Measurement and State
Event Admin Service Tracker
HTTP
Device Access
Configuration Admin
Preferences
Metatype
IO Connector
Initial Provisioning
UPnP™ Device
Execution Environment Spec
Declarative Services
OSGi Service Platform
Service Compendium
The OSGi Alliance
Release 4, Version 4.1
April 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
38. 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/
39. luminis
OSGi R3
• no bundle symbolic names
• no require-bundle
• only one version of a package
• a somewhat smaller compendium
OSGi Service Platform
Release 3
March 2003
40. 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
42. 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
43. 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
44. 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
45. 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
46. 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
47. 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