programming embedded systems - uppsala university · 6/31 real-time java rtsj: real-time...

24
1/31 Programming Embedded Systems Lecture 13 An Intro to Real-time Java Wednesday Feb 22, 2012 Philipp Rümmer Uppsala University [email protected]

Upload: others

Post on 25-Aug-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

1/31

Programming Embedded Systems

Lecture 13An Intro to Real-time Java

Wednesday Feb 22, 2012

Philipp RümmerUppsala University

[email protected]

Page 2: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

2/31

Lecture outline

● Background of real-time Java● Threads, tasks, scheduling, priorities● Monitors, queues● Asynchronous events

Page 3: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

3/31

Why consider Java at all for embedded systems?

● Buffer overflow and underflow● Null object dereference● Uninitialized variable● Inappropriate cast● Memory leaks

● All common problems in low-level languages (C), under control in Java

Page 4: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

4/31

Why consider Java for embedded systems? (2)

● Typically:Implementation less time consuming in Java than in C

● Java can hide hardware/OS specifics→ Applications can be ported more easily

● Java code is normally easier to read, easier to maintain, etc.(than C code)

Page 5: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

5/31

Problems with standard Java for embedded applications

● No real-time features● No access to OS real-time scheduler● No avoidance of priority inversion

● Dynamic class loading, initialisation, compilation

● Garbage collection● Cumbersome access to

low-level hardware● Standard JVMs are too large

Page 6: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

6/31

Real-time Java

● RTSJ: real-time specification for Java● extends other Java frameworks, for

instance Java SE, Java ME, Java EE

● Various implementations● RTS: Sun's/Oracle's RTSJ JVM● Various independent JVMs, JDKs:

e.g., Timesys, IBM, jRate● Available for some micro-controllers:

e.g., AVR ATmega8

● There are further RTSJ-independent real-time solutions based on Java

Page 7: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

7/31

History of RTSJ

● Version 1: JSR 1(approved in Nov 2001)

● Version 1.1: JSR 282(still under development …unclear if ever released)

Page 8: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

8/31

RTSJ features/guarantees

● Real-time-specific thread types● Real-time scheduler● Extended memory management● Inter-thread

synchronisation/communication● Event handling● Clocks, timers● Uniform access to hardware +

RTOS functionality

Page 9: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

9/31

Architecture of standard Java

Java source code

Java bytecode

JVM

Compilation

Interpretation,just-in-time compilation

Libraries, APIs

Page 10: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

10/31

RTSJ architecture

● RTSJ programs are normal Java programs, written using RTSJ library

● RTSJ implementations have two parts:● RTSJ library:

set of real-time-specific classes● Tailor-made JVM:

minimalist, real-time scheduler; often runs without further OS; can be partly implemented in hardware

● Sometimes: Java bytecode is upfront compiled to machine code

Page 11: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

11/31

More information

● http://www.rtsj.org/● Is Java ready for real-time?

Jan Vitek at MVD'10, http://goedel.cs.uiowa.edu/MVD/talks/Vitek.pdf

● Peter C. Dibble, “Real-Time Java Platform Programming”

Page 12: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

12/31

Examples

Page 13: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

13/31

For playing: Timesys

● Provide free reference implementation of RTSJ

● Standard Java compiler +library +tailor-made JVM

● http://www.timesys.com/java/(need to register for download)

Page 14: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

14/31

Explicit feasibility analysis

● Task parameters are provided explicitly in code

● Arrival times, WCET, deadlines

● RTSJ implementations can perform explicit feasibility/schedulability analysis

● However: mostly not implemented

Page 15: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

15/31

Synchronisation,communication

Page 16: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

16/31

Monitors

● Main method for synchronisation in RTSJ → just like in normal Java

● Methods or blocks can be synchronized

● Monitor region; only one thread can enter at a time

● Used to implement mutual exclusion● Also possible: synchronized(obj)

Page 17: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

17/31

Monitors (2)

● wait: temporarily give up monitor, wait until some other threads issue notify

● Be careful: “spurious wake-ups” are possible

● notify: wake up some thread waiting inside a monitor

● notifyAll: wake up all threads waiting

Page 18: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

18/31

MonitorControl

● Extension in RTSJ:It is possible to specify strategy for avoiding priority inversion

● PriorityInheritance● PriorityCeilingEmulation

● Can be set globally, or on per-object basis

Page 19: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

19/31

Queues● WaitFreeReadQueue

● reads are guaranteed not to block(mostly interesting for real-time threads); returns null if queue empty

● multiple readers have to be synchronised by hand!

● WaitFreeWriteQueue● similar; writes are guaranteed not to

block

● WaitFreeDeque(deprecated)

Page 20: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

20/31

Asynchronous events

Page 21: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

21/31

Events

● Encapsulation of internal or external happenings that need to be handled by program

● E.g., timers, key presses, interrupts, etc.

● Captured by class AsyncEvent● Timer is a subclass of AsyncEvent

● Maintains a queue of events, to be handled successively

Page 22: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

22/31

EventHandlers

● AsyncEventHandler: code to be executed when an event occurs

● Very similar to (aperiodic) thread● Parameters like a thread: priority,

release parameters, etc.

● Method handleAsyncEvent is invoked each time an event occurs

● Compare with callbacks or (deferred) interrupt service routines ...

Page 23: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

23/31

Memory management

(next lecture)

Page 24: Programming Embedded Systems - Uppsala University · 6/31 Real-time Java RTSJ: real-time specification for Java extends other Java frameworks, for instance Java SE, Java ME, Java

24/31

Conclusions so far

● Threads; scheduling;synchronisation; events

● RTSJ is a convenient, high-level API for designing real-time applications

● Many of the features should be familiar to you!(from FreeRTOS + micro-controller)

● More in next lecture +on home assignment