Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg



Ähnliche Dokumente
Speaker. Dominik Helleberg. Mobile Development Android / Embedded Tools.

Niemals nach Mitternacht füttern! Grüne Roboter überall! Christian Meder Dominik Helleberg

Smartphone Entwicklung mit Android und Java

Walkabout: Location Based Services mit Android und dem Google Phone

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Mobile Application Development

Mobile Security (Android OS) Ein Vortrag zur Sensibilisierung eines Benutzers im Umgang mit Smartphones und Tablets mit dem Android OS.

Informatik Sommercamp 2012

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Android Testautomatisierung mit dem Framework Robotium

SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS HSRM

Android-Testautomatisierung mit Robotium

Embedded-Linux-Seminare. Toolchains

Präsentation Von Laura Baake und Janina Schwemer

Treiber Kernel und Module bauen

AK Medientechnologien Hello World. Josef Kolbitsch

ADNP/9200 mit E2U/ESL1: Web Interface Beispiele

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Apps-Entwicklung mit Netbeans

Android VPN. Am Beispiel eines Netzwerktunnels für das Domain Name System (DNS) 1 Andiodine - Android DNS-VPN

SAP NetWeaver Gateway. 2013

Java: Vererbung. Teil 3: super()

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Enterprise Mobility, Live! Pascal Kaufmann, Swisscom IT Services AG 12. Juni 2013

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Installation von NetBeans inkl. Glassfish Anwendungs-Server

JEAF Cloud Plattform Der Workspace aus der Cloud

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

Android-Geräte Programmieren 4. Hinweise zur Android-Programmierung. Stefan Rothe

Spring Dynamic Modules for OSGi Service Platforms

Parallels Mac Management 3.5

Anbindung des uvcvideo Treibers für eine CAM-104H

Ein mobiler Electronic Program Guide für Android

Agenda. Ziel Problematik OS-Installation Softwareverteilung Inventarisierung Stufenplan

Mobile und Verteilte Datenbanken

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

IVE-W530BT. Bluetooth Software Update Manual mit Android Telefonen

Cross-Platform Mobile mit.net

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Apps-Entwicklung mit Eclipse

Embedded Linux gnublin Board Programmieren Sonstiges. Embedded Linux am Beispiel des Gnublin-Boards

R-BACKUP MANAGER v5.5. Installation

INFOnline SZM Integration Guide Alternativlösung Messung hybrider APPs

Technische Alternative elektronische Steuerungsgerätegesellschaft mbh. A-3872 Amaliendorf, Langestr. 124 Tel +43 (0)

lldeckblatt Einsatzszenarien von SIMATIC Security-Produkten im PCS 7-Umfeld SIMATIC PCS 7 FAQ Mai 2013 Service & Support Answers for industry.

Jörg Neumann Acando GmbH

Powermanager Server- Client- Installation

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

a.sign Client Lotus Notes Konfiguration

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Collax PPTP-VPN. Howto

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Kurzanleitung Installation der Zend Studio Sprachpakete

Comtarsia SignOn Familie

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Mit Cloud Power werden Sie zum

JDroidLib mit Eclipse (Mac/Linux/Windows)

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen

2. Installation der minitek-app auf einem Smartphone. 3. Verbindung zwischen minitek-app und minitek herstellen

SDD System Design Document

Szenario 3: Service mit erweiterter Schnittstelle

Übung: Verwendung von Java-Threads

SSH Authentifizierung über Public Key

Einführung in die Informatik Tools

GeODin 7 Installationsanleitung

Installation, Konfiguration und Nutzung des WLAN auf PDA FujitsuSiemens Pocket Loox 720

2 Wege Smartphone Steuerung für KW-V30BT / 50BT. Technische Information

Remote Method Invocation

Sicherheit in Android

G DATA INTERNET SECURITY FÜR ANDROID

Software Engineering II

Mobile Development in.net mit Xamarin

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Mobile App development mit Xamarin. Christian Hassa Andreas Willich TechTalk Software AG

owncloud Sync Meine Daten gehören mir! Dr. Markus Tauber, AIT, ICB

OFS: Ein allgemeines Offline-Dateisystem auf Basis von FUSE

WebService in Java SE und EE

OP-LOG

Remedy-Day Innovative ITSM Lösungen von NTT Data. Machen wir es uns besser, schöner und leichter. Thomas Rupp Alexander Lyer Lukas Máté

Java Entwicklung für Embedded Devices Best & Worst Practices!

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

e-business - Patterns Stefan Brauch (sb058) -- Julian Stoltmann (js057)

Duonix Service Software Bedienungsanleitung. Bitte beachten Sie folgende Hinweise vor der Inbetriebnahmen der Service Software.

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Lizenzen auschecken. Was ist zu tun?

Entwicklung einer App mit FIspace How to get started?

3M Helth Information Systems. 3M KAPS PEPP Simulation. Installationsanleitung

Android Processes & Services

ANLEITUNG GERÄTEREGISTRATION AN KRZ.SMK

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Björn Heinemann Leiter Entwicklung Energiewirtschaft

Transkript:

Connecting Android Externe Hardware mit dem grünen Roboter verbinden Alexander Dahmen Dominik Helleberg

Speaker Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+

Speaker Alexander Dahmen Application Development Embedded Android http://google.com/+alexanderdahmen3

Android ist modern und anders https://twitter.com/arubin/status/27808662429

Beispiele Amazon Samsung Google Glass Samsung Gear Live Android Auto Boing 787 LG Kühlschrank Motorola MC3200 http://www.amazon.de/kindle-fire-zoll-hdx-display-wlan/dp/b00d695h6o http://www.samsung.com/de/promotions/galaxycamera/ http://www.google.com/glass/start/ https://play.google.com/store/devices/details?id=samsung_gear_live_black http://www.android.com/auto/ http://www.boeing.com/boeing/commercial/787family/ http://www.lg.com/us/refrigerators/lg-lfx31995st-french-3-door-refrigerator http://goo.gl/5dovl7

Smart Hubs im IoT

Beispiel: Smart Home http://www.gira.de/gebaeudetechnik/systeme/knx-eib_system/knxprodukte/bediengeraete/control9-knx.html

Vorteile Modernes OS (Architektur) UI-Stack Community SDK Hardware Support Lizensierung

Vorteile Hardware Acceleration builtin Application Views Canvas API libhwui SKIA OpenGL ES SurfaceFlinger

Vorteile Hardware Acceleration builtin

Vorteile - HAL / Service Architektur Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo Applikations-Logik Java API / SDK / Dokumentation Greift über RPC Call auf den Service zu Binder Interface für den Service (AIDL) Logik, Security Checks, Native JNI Aufrufe Native interface (header file) device depenedent driver kernel / module

Grove 16x2 Display mit I2C LCD-Modul RGB-Modul Der Befehlssatz des LCDs wird vom Hersteller bereitgestellt. MarS Board mit Android 4.0.4 (BSP) Das LCD wird per I2C an das Mars Board angeschlossen LCD 0x3e RGB 0x62 driver.so /dev/foo

Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo

Der Android Kernel basiert auf einem Linux Kernel mit einigen Android spezifischen Anpassungen Der Linux Kernel stellt bereits einen I2C-Core-Treiber zur Verfügung. Dieser übernimmt die Kommunikation mit den am Bus angeschlossenen Geräten. Für das LCD-Modul und das RGB-Modul wird jeweils ein I2C- Client Treiber benötigt. driver.so /dev/foo

static int init lcd1313m1_init(void) { ret = i2c_add_driver(&lcd1313m1_i2c_driver); } static struct i2c_driver lcd1313m1_i2c_driver = {.probe = lcd1313m1_i2c_probe,.driver = {.name = "lcd1313m1",.owner = THIS_MODULE, }, }; driver.so /dev/foo

static const struct file_operations lcd1313m1_fops = {.owner = THIS_MODULE,.open = lcd1313m1_open,.release = lcd1313m1_release,.write = lcd1313m1_write, }; driver.so /dev/foo

Der Client-Treiber kann über die I2C-Funktionen des Core- Treibers mit dem LCD kommunizieren. i2c_smbus_write_byte_data (client, u8 command, u8 value); i2c_smbus_read_byte_data (client, u8 command); driver.so /dev/foo

Anforderung: Die Treiber sollen beim Systemstart geladen und das Display initialisiert werden. Wie findet die Verknüpfung zwischen LCD-/RGB-Modul und dem jeweiligen Treiber statt? board-mx6q_marsboard.c unter /arch/arm/mach-mx6 driver.so /dev/foo

Erweiterung der board-mx6q_marsboard.c static struct i2c_board_info mxc_i2c2_board_info[] initdata = { { }, { }, }; I2C_BOARD_INFO("lcd1313M1", 0x3e), I2C_BOARD_INFO("rgb1313M1", 0x62), driver.so /dev/foo LCD RGB

driver.so /dev/foo

Integration der Client-Treiber in den Kernel Anpassung/Erstellung der Kconfig-Dateien und Makefiles make menuconfig (Konfigurationsdateien) driver.so /dev/foo

Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo

Zugriff auf die Treiber über eine HAL-Bibliothek (Userspace) HAL-Bibliothek greift über System-Call-Interface auf die Gerätedateien zu (/dev/lcd1313m1 u. /dev/rgb1313m1) Kann auch unter eine proprietäre Lizenz gestellt werden (Treiber muss unter die GPL gestellt werden, daher werden diese oft einfach gehalten) libhardware

Die HAL-Bibliothek besteht aus zwei Komponenten Implementierung unter: /device/fsl/marsboard_6q/lcd1313m1 Headerdatei unter: /hardware/libhardware/include/hardware Der Zugriff auf die HAL-Bibliothek findet über die Headerdatei statt libhardware

Zur Verfügung gestellte Funktionen der HAL-Bibliothek displayinit() settext(...) setrgb(...) backlighton()/backlightoff()... libhardware

const struct hw_module_t HAL_MODULE_INFO_SYM = {.tag = HARDWARE_MODULE_TAG,.id = LCD1313M1_HARDWARE_MODULE_ID,.methods = &lcd1313m1_module_methods, }; static int open_lcd1313m1hw(...) { struct lcd1313m1hw_device_t *dev = malloc(sizeof(struct lcd1313m1hw_device_t)); file_descriptor_lcd = open("/dev/lcd1313m1", O_RDWR); return 0; } libhardware

Damit ein open(...) auf /dev/lcd1313m1 erfolgreich ist, müssen die Rechte stimmen /system/core/rootdir/ueventd.rc erweitern: /dev/lcd1313m1 0660 system system /dev/rgb1313m1 0660 system system HAL-Bibliothek läuft im system-kontext libhardware

Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo

Der Manager Service besteht aus zwei Teilen: den nativen Methoden in com_android_server_lcdservice.cpp LCDService.java com_android_server_lcdservice.cpp bindet die Headerdatei der HAL-Bibliothek ein und lädt die Bibliothek LCDService.java ruft die nativen Methoden über das JNI auf Manager Service

Manager Service

public class LCDService extends ILCDService.Stub { private int mnativepointer; public LCDService(Context context) { super(); mnativepointer = init_native(); } public int settext(string mstring) { checkpermission(android.manifest.permission.lcd_service); synchronized (mlock) { byte[] buffer = mstring.getbytes(); return settext_native(mnativepointer, buffer); } } private static native int init_native(); SystemService

Android Permission für das LCD android.manifest.permission.lcd_service Eine App, die den Service/Hardware verwenden möchte, muss diese Permission in der Manifest-Datei angeben <uses-permission> Manager Service

Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo

Für den LCDService muss eine zugehörige ILCDService. aidl Datei erstellt werden. Diese beinhaltet die Deklarierung der Funktionen, die vom Binder aufrufbar sein sollen. Aus der.aidl Datei wird ein Binder-Interface für den Java- Dienst generiert (ILCDService.java) Manager Interface

Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo

AIDL-Funktionsprinzip SystemService

public class LCDManager { public static LCDManager getlcdmanager() { IBinder b = ServiceManager.getService("lcd1313M1"); ILCDService service = ILCDService.Stub.asInterface(b); return new LCDManager(service); } public int settext(string mstring) { try { return mservice.settext(mstring); } catch (RemoteException e) { return -1; } } SystemService

Anpassung des System Servers damit beim Systemstart der neue LCDService gestartet wird public void run() { //... try { ServiceManager.addService("lcd1313M1", new LCDService(context)); } catch ( Throwable e ) { reportwtf("starting LCD service",e) ; } } SystemService

Application SystemService Manager Interface Manager Service libhardware driver.so /dev/foo

Application

Problem: Application

Android Build System!

Vorteile Ein BSP für alles: Build Targets Firmware for production/debug (extern: Kernel, Bootloader) Emulator Custom SDK / SDK Addons Embedded Android as a Platform

Vorteile Ein BSP für alles: Releasetools Firmware Updates: komplett incrementel / delta (inc. Kernel, Bootloader) Digitale Signaturen

Vorteile Buildsystem inkl. Produktlinien- und Variantenmanagement Board Configuration Hardware Konfiguration Partitionierung Boot-Adressen Architektur Firmware (Bootloader, Kernel )

Vorteile Buildsystem inkl. Produktlinien- und Variantenmanagement LCDBoardConfig.mk fsl-imx6boardconfigcomm.mk fsl-omx.mk fsl-gpu.mk fsl-codec.mk

Vorteile Buildsystem inkl. Produktlinien- und Variantenmanagement Product Configuration Gerätenamen, Hersteller etc. System Apps System Module Shared Libraries Vorinstallierte Daten Lokalisierung SDK-Addons

SDK-Addon: Application

SDK-Addon: Application

SDK-Addon: Application

SDK-Addon: Application

SDK-Addon: Application

Emulator: Application

Emulator: Application

Android Open Source Projekt Architektur Stock Apps User Apps Framework / API System Services Java Dalvik / Runtime / Zygote Libs HAL Init Kernel

http://www.oreilly.de/catalog/9781449308292/index.html http://www.pearsonhighered.com/educator/product/modern-operating-systems/9780133591620.page Embedded Android Devel Getting Board Started

Embedded Android + IoT + https://entwickler.de/iot-mag

Danke! Danke!