Industrial Software Technology We embed Java for you! Java embarqué Présentation faite en Java sur un microcontrôleur AVR32 d'atmel Ecole des Mines de Nantes 31 Janvier 2008 fred.rivard@ist-eu.com www.ist-eu.com IST Proprietary Copyright 2005 2008 1
IST Overview Milestones 2002-2004: Company incubation 2004: IST is born 2004-2006: Technology development (more than 30m.y) 2006-2007: MicroJvm on Blackfin, AVR, AVR32, ARM7,... Shareholders ACE Management (Paris) Private investors JEI and R&D lab CIR Management Fred Rivard, PhD CEO & CTO Régis Latawiec Sales Director François You Financial Director Teams France: Headquarters / R&D center UK & Germany: Sales offices & Training center Total headcount: 25 people (increasing) IST Proprietary Copyright 2005 2008 2
Les marchés de l'embarqué Medical Building automation Security Industrial control Telecoms Automotive Handsets Transportation Multimedia Defense Home appliances Avionics Marchés adressés par IST IST Proprietary Copyright 2005 2008 3
Les microcontrôleurs : mcu Marché des MCU en croissance 16-bit & 32-bit MCUs sont les locomotives Les systèmes industriels et temps réels sont très difficiles (chers) à construire/valider 16,000 14,000 12,000 Microcontroller Shipments +13% CAGR Construction / Test Effort versus System Size & Type Real-Time Systems 10,000 Millions of units 8,000 6,000 4,000 (effort) 2,000 0 2006 2007e 2008e 2009e 2010e 4 bits 8 bits 16 bits 32 bits Source: Semico Research Corp. IT Systems Engineering Systems Source: QSM (complexity) Real Time Systems IST Proprietary Copyright 2005 2008 4
Processus standard de fabrication C/asm Technologies logicielles des années 80, principalement C & asm Aucune alternative pour la majorité des produits (85%) Matériels et logiciels sont fortement liés IST Proprietary Copyright 2005 2008 5
Les contraintes de l'embarqué Place : la ressource mémoire RAM : 64 Ko (30.000 fois moins qu'un PC!) Flash / EEPROM /... : 256 Ko Ecrans B&W (128x128 = 2Ko) versus Couleur VGA (640x480 = 1200Ko) Vitesse : la ressource cpu 8MHz 180MHz / Exécution «sur place» Les bus mémoire Consommation : la ressource électrique Appareils sur batteries Coût unitaire Time-to-Market (marges) Effet volume IST Proprietary Copyright 2005 2008 6
Les contraintes de l'embarqué? Briques matérielles Des centaines de milliers de références différentes Des périphériques internes (mcu), multiplexés, externes (sur cartes),... Briques logicielles OS/RTOS (des centaines) Outils de développements IDE, compilateurs C (linkeurs pas compatibles), choix des options de compilations (des dizaines), librairies mal écrites,... Drivers gratuits, BSP, framework middleware, etc... Peu de support sémantique dans le langage C (parfois vu comme un macroassembleur) par d'autres super outils ou langages (automates). Maintenance et évolution Durée de vie des systèmes (en apposition avec le matériel) Modification et évolution de systèmes complexes écrits sans aide IST Proprietary Copyright 2005 2008 7
Explosion de la valeur ajoutée «logiciels» Eric PILAUD, Membre du directoire de Schneider Electric «Assises du Logiciel Embarqué, Paris, mai 2007» Schneider Electric est de plus en plus challengé sur son coeur de métier. Il faut 18 mois à un concurrent pour commercialiser un produit équivalent. Schneider Electric cherche donc à mettre de plus en plus de logiciels dans ses produits car c'est une arme pour de l'innovation intermédiaire. Capacité à ajouter sur site de nouvelles fonctionnalités dans nos équipements, pour préserver notre avance par rapport à la concurrence. Sûreté de fonctionnement Vie humaine en jeux (responsabilité) Gros volumes d'appareils (risques financiers) Certification & logistique DO178B, SIL, CMMi, Preuves formelles,... Composants logiciels OSGi, Fractal,... IST Proprietary Copyright 2005 2008 8
Productivité comparée entre Java et C Language Software complexity Cost Ratio to Java Low High Reduction Java 14 97 1 C++ 29 178 1.9 C++ Java 46% C 9 704 6.4 C Java 84% Source: QSM Function Point Programming Table Productivité C / Java : x6 à x12 dans le monde de l'embarqué Programmeurs Java dans le monde > 3.5 millions 10 8 Programming Language Trends (IEEE software 2005) Plus de 4.000.000.000 JVMs 6 C/C++ Java 4 2 0 1993 1998 2003 2008 IST Proprietary Copyright 2005 2008 9
Concept des machines virtuelles Java Trois niveaux d'abstraction : une plate forme d'exécution Matériel Machine Virtuelle Application logicielle Une machine virtuelle Java, c'est : Un processeur 32-bit (~200 instructions) Un gestionnaire automatique de mémoire Un système d'exploitation Stable depuis 10 ans Même application 1 ➁ ➂ Jvm Jvm Jvm JVM mcu+board IST Proprietary Copyright 2005 2008 10
Java embarqué : un large éco-système J2ME CLDC jcp.org JSRs 139/271/82/228/239/75/226/229/ 180/205/... J2ME MIDP IST Proprietary Copyright 2005 2008 11
Etat de l'art «technique» sur Java embarqué De 50ko à plusieurs Moctects La place mémoire n'est plus un facteur limitant. Java est disponible sur 8-bit, 16-bit, 32-bits et 64-bits multi-coeurs. Tailles des binaires Java plus petites qu'en C (ratio 25% avec code Thumb de ARM7) Java est aussi rapide que du C bien écrit Sémantique beaucoup plus riche (tableaux bornés, receveur à null, initialisation des objets / tableaux, variables globales initialisée (classes init), polymorphisme, etc... Technique d'accélération multiples (JIT, AOT, type Jazelle, IceTea, FPGA, FNI/JNI,...) Certaines JVMs jouent le rôle de l'os/rtos Les temps de démarrage se chiffrent en 50ms à 67Mhz... Une application Java peut être HRT Plusieurs sociétés visent à terme la certification avionique DO178B-levelA Groupe de travail au niveau mondial IST Proprietary Copyright 2005 2008 12
Etat de l'art «technique» sur Java embarqué Adaptation des JVMs au matériel sous jacents Faire appel au vaste éco-système : multiples acteurs (gros, moyens, petits) BootLoader intégré, DMA, MPU, HSB, SPI/USB, DAC,... Tailles des objets (header, monitor, length, hashcode,...) Linkage sur desktop Incohérence du télé-chargement dynamique avec business model. Transformations et optimisations du code binaire Type d'objets Immortels, en flash, etc... Connexion avec le C FNI / JNI C (drivers, bas niveaux), Java (niveau applicatif, haut niveau) IST Proprietary Copyright 2005 2008 13
MicroJvm Benchmarks : speed 32-bit MCU Example (ARM7) Relative performance on real applications compared to C (STR7 ARM7 series) Consider C as the maximum speed on a given platform (Pentium / ARM7) Sun J2SE + JIT* compilation is 75% slower than C MicroJvm + IceTea is just 20% slower than C Perfomance 100% 90% 80% 70% 60% 50% 40% 30% Sun J2SE & MicroJvm Java speed versus C MicroJvm + IceTea Java C (gcc) 20% 10% Time critical code optimization 0% Pentium ARM7 Use acceleration techniques to speed up identified code sections Reach C speed while keeping Java benefits Sun J2SE + JIT * JIT =Just In Time compilation, i.e. acceleration IST Proprietary Copyright 2005 2008 14
MicroJvm Benchmarks : Footprint 32-bit MCU Example (AVR32) VM + Libraries (Atmel AVR32 AP7 series) VM & Natives MicroJvm + CLDC Drivers (LCD,...) MIDP 2.0 TCP/IP Size (max) 65KB 10KB 65KB 23KB Java Libraries Size (max) CLDC 47KB MIDP 2.0 107KB MicroJvm ~ 160KB for a full featured MIDP VM graphic Q-VGA LCD TCP/IP over Ethernet MIDP Graphics & Internet access ~ 320KB to run a complex cellphone game that would required the whole CLDC+MIDP libraries Average ~250KB is enough IST Proprietary Copyright 2005 2008 15
Improve Product Margins Keep high selling prices Add nice features to products using IST ready-to-use Java solutions Same solution inspired from cellphone technologies Use productive design processes and be first on the market High-End Example Cut Bill Of Material cost Access to Java benefits but do not increase the bill of material Low-End Example Minimum System Requirement (32-bit MCU).NET Micro Framework JVM 256KB RAM / 512KB Flash 32KB RAM / 128KB Flash CPU Price ~ $8.20 CPU Price: ~ $3.50 32-bit CPU Price difference is close to 5$ IST Proprietary Copyright 2005 2008 16
Speed-up Revenues Increase productivity Speed-up development Shorten prototyping, qualification and maintenance processes Design more products with less engineers Prefer productivity rather inefficient (offshore) contracting Java is 3x to 9x more productive compare to traditional design means 10 Java is 6x faster to find bugs in programs Slow product introduction 8 Productivity impact Speed-up revenues Improve ROI Fast product introduction 10 8 6 4 2 0 N N+1 N+2 N+3 A B C D Total 6 4 2 0 N N+1 N+2 N+3 Product A Product B Product C Product D Total Shorten product introduction IST Proprietary Copyright 2005 2008 17
Cost Reductions Split hardware and software processes Remove software teams from project critical path Design one software program Use several hardware platforms Cost reduction impacts Reduce development time Capitalize on software investment and improves ROI Reduce impact on software due to hardware changes (for cost reduction, etc.) IST Proprietary Copyright 2005 2008 18
Risk Management No risk to migrate to Java No hardware changes required to use embedded Java Reuse your legacy code when required Existing product New product 30% Java 70% Java 100% Java 100% Java Java trends Java become the preferred language Best engineers' choice IST Proprietary Copyright 2005 2008 19
Risk Management Multi-sourcing Most devices have electronic parts multi-sourced Most the time microprocessors are not multi-sourced Java programs are binary portable across operating systems and microprocessors Java programs are independent from microprocessors Semiconductor supplier management Avoid procurement shortage Maintain pressure on suppliers IST Proprietary Copyright 2005 2008 20
Industrial Software Technology Java embarqué We embed Java for you! Présentation faite en Java sur un microcontrôleur AVR32 d'atmel Ecole des Mines de Nantes 31 Janvier 2008 fred.rivard@ist-eu.com www.ist-eu.com IST Proprietary Copyright 2005 2008 21