180 likes | 285 Views
D1.5: Choice of Platform. Prof. Koen De Bosschere. Platform requirements. Must enable component model Must support (soft) real-time constraints High software productivity Must be well-defined and have stable APIs Support for remote connectivity Support for user interface
E N D
D1.5: Choice of Platform Prof. Koen De Bosschere
Platform requirements • Must enable component model • Must support (soft) real-time constraints • High software productivity • Must be well-defined and have stable APIs • Support for remote connectivity • Support for user interface • Must enable reuse and portability • Must run on off-the-self hardware platform
Our choice: Java • Java is well-defined and has stable APIs • Pure object-oriented language • Many libraries available • Many services are for free (TCP/IP, multithreading, …) • Higher software productivity due to higher abstraction level • Promising technology for embedded systems
Java virtual machine • Shields the underlying hardware architecture • Available for a wide range of hardware platforms: standard edition, enterprise edition, micro edition • Has kernel functionality or can be run on top of a real-time operating system • Allows access to hardware by means of native routines
Design Methodology Goal: evaluate / merge different methodologies suitable for mid-scaled & large-scaled embedded systems • Component Based • Component Reuse • Hardware/Software Co-Design • Co-Evolution • Multi-Site Development
Component Architecture • A component architecture provides • A central component system to glue components • A hardware abstraction layer • A mechanism for integrating existing components through wrappers • Java makes (2) and (3) easier • invoke • native C interfacing • try/catch/throw clauses • Focus can then be on (1)
Debugging • Clear separation between the Java and JVM level • ICE functionality can be implemented in software (instrumented JVM) • Cross compilation on any platform: any JVM can serve as simulator • No pointers, no memory leaks; Java application is “crash free”
User interface • Java has its own GUI-libraries (with adaptable look-and-feel) • Remote user interface (service interface) easy to realize thanks to the internet connectivity
Common prejudices • Java is too slow • Java is not suitable for hard real-time systems • Java requires extra memory • We can do better in C or C++
Java is too slow • Should be ok for our application • Can be improved by • Statically linking the application • Compiling a class file when downloading it • Controlling the garbage collector • Calling low level methods • Calling native C routines where necessary
Not suitable for hard real-time systems • JBED is hard real-time • JVM also runs on top of a standard real-time kernel
Java requires extra memory • Up to 1 MB • But: • There are several alternatives < 200 kB • KVM requires only 40 kB
We can do better in C or C++ • Isn’t this a similar argument to C/ASM debate?
Hardware • Processor Board with Ethernet connectivity, ROM, Flash, RAM Interface to the camera (USB, Video signal?) • 32-bit Processor • Small LCD-display
Reported problem areas • Integration of third party software; JVM yes, class files no problem! • Generation and maintenance of documentation: JavaDoc • Debugging: memory leaks, ISR no pointers, better support for ISR • Lack of multiplatform IDE, tools one platform • Effort estimation techniques (metrics) • Performance estimation techniques (cross development)
Reported problem areas • Hardware problems (easier to trace) • Changing requirements (also: research during development) (OO + CBD) • Lack of qualified personnel (standard language; easier to find) • Serviceability (applets, TCP built-in, security) • Growing complexity of software (OO+CBD) • Low software productivity (higher productivity in Java)
Reported problem areas • Need for rapid prototyping (OO+stubs) • User interface specification is difficult (multi-platform user interfaces) • Testing is time-consuming (white, black box, glass box) • Multi-site development • Versioning of the design • Deadlines
Conclusion • Java will enable us to • Implement our case • Carry out our workplan • Can help the companies in solving some of the reported problems