300 likes | 432 Views
auf kleinen Linux-Devices. Gerrit Telkamp DOMOLOGIC Home Automation GmbH 38106 Braunschweig GERMANY. DOMOLOGIC. Gründung 1999 „Spin-Off“ der TU Braunschweig Seit 1995 aktiv im Bereich „Home Automation“ Seit 2000 Mitglied der Konnex-Association Sitz im Technologiepark Braunschweig
E N D
auf kleinenLinux-Devices Gerrit Telkamp DOMOLOGIC Home Automation GmbH 38106 Braunschweig GERMANY
DOMOLOGIC • Gründung 1999 • „Spin-Off“ der TU Braunschweig • Seit 1995 aktiv im Bereich „Home Automation“ • Seit 2000 Mitglied der Konnex-Association • Sitz im Technologiepark Braunschweig • Z.Zt. 5 dauerhafte Mitarbeiter Java auf kleinen Linux-Devices
Unternehmensziele • Vorentwicklung: • Software-Module • Schaltungs-Konzepte • Auftragsentwicklung • Hardware • Software • Consulting Java auf kleinen Linux-Devices
Kernkompetenzen • Embedded Systems (8-32 Bit) • Embedded JAVA • Embedded Linux • HMI (Human-Machine-Interface) • frei konfigurierbar, z.B. Touch-Panel • Gerätekommunikation • Konnex PL132, EIB, LON, CAN • Ethernet, Web-basierte Dienste Java auf kleinen Linux-Devices
Referenzen • EU-Projekte: HOME-AOM, ASK-IT • Intelligentes Haus Gifhorn • Entwicklung von Soft- und Hardware für Tür-Kommunikationsanlage • Power-Line-Analyzer • Kommunikationslösungen für ANSI/EIA-709 • Grafische Benutzeroberflächen • ... Java auf kleinen Linux-Devices
Motivation • steigende Anforderungen an Embedded Systems • Integration in IP-Netze • Komfortable HMI (Human Machine Interfaces) • Hoher Kostendruck der Hardware bei Massenprodukten • Niedrige Leistungsaufnahme • Kleine Baugröße Java auf kleinen Linux-Devices
Anwendungsbeispiele • Gateways • Umfangreicher Support an Netzwerkprotokollen • diverse Bibliotheken (z.B. gsmlib) • verbreitete & gut dokumentierte API • Touch-Panels • Vielzahl an Gerätetreibern • verbreitete & gut dokumentierte API • eingeschränkte Unterstützung von einfachen GUIs Java auf kleinen Linux-Devices
JControl (I) • Lösung: Kombination • uCLinux als freies Betriebssystem: • kontinuierliche Weiterentwicklung • Quelltexte verfügbar • JAVA als objektorientierte Programmiersprache • Klassenbibliotheken stellen fertige Software-Komponenten zur Verfügung (z.B. GUI-Framework) • Garbage Collector • Plattformunabhängigkeit Java auf kleinen Linux-Devices
JControl (II) • JControlVM • skalierbar von 8 bis 32 Bit • Hier: Betriebssystem uClinux • ab 60kB Speicherbedarf • alle Peripheriekomponenten als Klassenbibliothekenlokal: I/O-Komponenten, Sensoren, Aktoren • remote: Komponenten anderer Geräte über Bussysteme • optimiertes Speichermanagement • JControl-Entwicklungsumgebung • Compiler, Projektmanagement, Simulator, Debugger Java auf kleinen Linux-Devices
JControl (III) JControl-Produkte • 60 x 42mm • Grafik-LCD mit128 x 64 Pixel • Diverse I/O Steuerleitungen • Analog-Eingänge • PWM-Ausgänge • Bus-Systeme etc. • 8-Bit Mikrocontroller-Kern • 2k Arbeitsspeicher • 64k-256k FLASH für Anwendungen • Stromaufnahme: ca. 10mA Java auf kleinen Linux-Devices
JControl (IV) • Tür-Sprechstelle • Video-Speicher • Touch-Panel • Frei konfigurierbare Benutzeroberfläche • Embedded Linux mit uClinux • Embedded JAVA mit JControl • Feld-Bus-Systeme • EIB, YR-Bus • Spezielles GUI-Design, spezielle Schriftsätze • Firmware-Update über serielle Schnittstelle • Umfangreiche Test- und Diagnose-Funktionen Java auf kleinen Linux-Devices
JControl (V) • SmartHome Terminal • Power-Line Kommunikation (PL132) • „Tür-Terminal“ für Signalisierung von Fehlerzuständen • Geräte werden beim Öffnen der Tür überprüft • Bedienung per Touch Java auf kleinen Linux-Devices
JControl (VI) • Ethernet-CAN-Gateway Java auf kleinen Linux-Devices
JControl (VII) Java auf kleinen Linux-Devices
Historie - uClinux • „Standard“-Linux setzt auf PC-Technologie auf • uClinux: Linux für MMU-lose Systeme (z.B. PALM-Devices) • uClinux = „you see Linux“ • Kenneth Albanowski und D. Jeff Dionne, 1998 • ColdFire-Port: Greg Ungerer, 1999 Java auf kleinen Linux-Devices
Plattformen für uClinux (1) • 32-Bit-Systeme ohne MMU (Memory Management Unit), z.B.: • „PALM-Size” • Motorola M68k • Motorola ColdFIRE • ARM7 • NEC V850 • Hitachi H8, SH4 • XILINX MicroBlaze • Leistung in etwa vergleichbar mit 486-66MHz Java auf kleinen Linux-Devices
Plattformen für uClinux (2) • Kompakte Hardware: ab 3-Chip-Lösung • Prozessor • RAM • ROM (FLASH) • Stromverbrauch: <1W • Speicherausstattung: • 1..16MB RAM • 0.5 ... 2MB FLASH Memory • Systemkosten: 30,00 Java auf kleinen Linux-Devices
JControl/IDE (I) • IDE für Kopplung zwischen Host und Target Java auf kleinen Linux-Devices
JControl/IDE (II) • Entwicklungsumgebung • Integrierte Entwicklungs-umgebung (IDE) • Editor • Compiler • Upload/Download • Bildbearbeitung • Schriftsatz • ... • Integrierte Simulation • Software-Entwicklung auf Geräte-Ebene, nicht aufProzessor-Ebene Java auf kleinen Linux-Devices
JControl/IDE (III) PictureEdit - Bildbearbeitung für LCDs Java auf kleinen Linux-Devices
JControl/IDE (IV) FontEdit - Schriftsatzerstellung Java auf kleinen Linux-Devices
JControl/IDE (V) MelodyEdit - Melodien Bearbeiten Java auf kleinen Linux-Devices
JControl/IDE (VI) Java auf kleinen Linux-Devices
JControl im Vergleich • JControl im Vergleich zu anderen Implementierungen: Java auf kleinen Linux-Devices
Aufbau der JControlVM • Mikrokernel: • Scheduling • Execution • Runtime-Environmentin Threads ausgelagert Java auf kleinen Linux-Devices
Komponentenbibliothek Schaltflächen: Text und Bilder: Messwert-Visualisierungen: Java auf kleinen Linux-Devices
Beispiel (I) /** * VoleButtonExample: Example using the three Vole button types */ publicclass VoleButtonExample extends Frame { public VoleButtonExample() { // create a simple button and add it to the frame Button simpleButton = new Button("Press me!", 30, 45, 65, 12); this.add(simpleButton); // create a Container with three RadioButtons and a Border around it Container c1 = new Container(); RadioButton rb1 = new RadioButton("Radio 1", 5, 8); RadioButton rb2 = new RadioButton("Radio 2", 5, 18); RadioButton rb3 = new RadioButton("Radio 3", 5, 28); // add the RadioButtons to the Container c1.add(rb1); c1.add(rb2); c1.add(rb3); // add a Border c1.add(new Border("RadioButtons", 0, 0, 60, 40)); // add the Container to the Frame this.add(c1); // create a Container with two CheckBoxes and a Border around it Container c2 = new Container(); CheckBox cb1 = new CheckBox("Check 1", 69, 10); CheckBox cb2 = new CheckBox("Check 2", 69, 23); // add the CheckBoxes to the Container c2.add(cb1); c2.add(cb2); // add a Border c2.add(new Border("CheckBoxes", 64, 0, 60, 40)); // add the second Container to the Frame this.add(c2); } /** * Instantiate and run the VoleButtonExample. */ publicstaticvoid main(String[] args) { VoleButtonExample vbe = new VoleButtonExample(); // make the Frame visible vbe.show(); } } Java auf kleinen Linux-Devices
Beispiel (II) • Hardware-Monitor • Überwachung von PC-Hardware über I²C/SMBus • Menü-Steuerung • Animierte Grafiken zur Visualisierung des Systemzustands • Implementierung mit Vole und JControl • 1 Tag Entwicklungsaufwand inkl. Validierung Java auf kleinen Linux-Devices
Fazit • Vorteile gegenüber rein C-basierten Lösungen: • Kürzere Entwicklungszeiten • Middleware-Aspekt • Alle Vorteile von JAVA enthalten (Garbage Collection, ...) • Effizienzsteigerung • Rapid-Prototyping-Entwicklungsumgebung • Echtes HW-SW-Codesign möglich • Code-Reuse durch Plattformunabhängigkeit Java auf kleinen Linux-Devices
Future Work • RAPS • XUI Java auf kleinen Linux-Devices