Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

De leukste Bug

716 views

Published on

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.

Published in: Software
  • Be the first to comment

  • Be the first to like this

De leukste Bug

  1. 1. De leukste Bug Marcel Offermans luminis
  2. 2. luminis Introduction • Marcel Offermans • marcel.offermans@luminis.nl • . • IT solutions from idea to Arnhem Apeldoorn implementation • experts in Java, OSGi, .NET, Agile/Scrum Enschede image © 2008 Google Earth
  3. 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. 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. 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. 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. 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
  8. 8. luminis BUG camera • 2 megapixel camera • flash LED • 3 buttons
  9. 9. luminis BUG LCD • QVGA (320x240) resolution • touchscreen • (simple) accelerometer
  10. 10. luminis BUG GPS • GPS device • internal or external antenna
  11. 11. luminis BUG motion and accelerometer • IR motion detector • 3 axis accelerometer
  12. 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. 13. luminis BUG audio • audio in and out • mic, headphone, line-in, line-out • 2 hardware buttons
  14. 14. luminis Third party and planned • Zigbee • Wifi • 3G
  15. 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. 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. 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. 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.
  19. 19. luminis OSGi Alliance • Expert Groups: • core platform (CPEG) • mobile (MEG) • vehicle (VEG) • enterprise (EEG) • residential (REG) • Working Groups: • marketing • requirements
  20. 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. 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. 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
  23. 23. luminis Manifest Bundle-Name: Example Bundle Bundle-SymbolicName: net.luminis.example.bundle Bundle-Version: 1.0.0 DynamicImport-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
  24. 24. Life-cycle resolved active luminis Life-cycle Layer • Managed life cycle • States for each bundle; • Allows updates of existing bundles • Dynamically install, start, update, and uninstall Life-cycle start end installed install start starting stopping stop uninstall uninstalled Module
  25. 25. luminis Life-cycle Example Bundle OSGi Framework
  26. 26. luminis Life-cycle Example Bundle OSGi Framework Provided Package
  27. 27. luminis Life-cycle Example Bundle OSGi Framework Bundle Install Bundle
  28. 28. luminis Life-cycle Example Bundle OSGi Framework Bundle Resolve Bundle
  29. 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
  30. 30. luminis Service Example Bundle OSGi Framework
  31. 31. luminis Service Example Bundle OSGi Framework Provided Service Provided Package
  32. 32. luminis Service Example Bundle OSGi Framework Bundle Install Bundle
  33. 33. luminis Service Example Bundle OSGi Framework Bundle Resolve Bundle
  34. 34. luminis Service Example Bundle OSGi Framework Bundle Resolve Service
  35. 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. 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. 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. 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. 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. 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
  41. 41. SDK interfaces with hardware luminis
  42. 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. 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. 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. 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. 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. 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
  48. 48. 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
  49. 49. luminis Questions?! ? & !

×