programming can -based fieldbus systems using...
TRANSCRIPT
![Page 1: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/1.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Title
ProgrammingCAN-based Fieldbus Systems using Java
Manuel Joaquim Pereira dos Santos,Ricardo José Caetano LoureiroUniversidade de Aveiro, Aveiro, Portugal,
Helmut DispertDepartment of Computer Science and Electrical Engineering,Kiel University of Applied Sciences, Kiel, Germany
![Page 2: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/2.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Contents
1. Introduction:Embedded Intelligent Devices
2. Java in Embedded Control:e.g.: Java Servlet Technology (the Embedded Java Controller - EJC)
3. Java and Native Code
![Page 3: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/3.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Evolution
The evolution of embedded intelligent devices is driven by technological advancements:Ø low cost microprocessors and peripheral
devicesØ InternetØ Java programming language
Examples:Ønew hardware platforms (e.g. Strong ARM
architecture)Ø Internet and the HTTP to access devicesØDevelopment of robust and reliable software
using Java.
![Page 4: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/4.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Opportunities
Sun Microsystems, Inc.:
"Combining the strengths of these (new) technologies, there is a huge market opportunity for companies that discover how to leverage the benefits of Java technology on embedded devices."
![Page 5: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/5.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java
Solution:
A New Paradigm:Write once, run anywhere
Java
![Page 6: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/6.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java
History of Java (true story)Ø 1990:
A small group is formed at Sun Microsystems with the task to think about the future of multimedia in private households.Group Member: James Gosling
Ø Idea:develop a generic and simple programming language to implement intelligent electronic devices (household).
⇒⇒ Embedded Programming
![Page 7: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/7.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java
Why Java?
Ø Object-oriented(encapsulation, polymorphism, inheritance),
Ø No multiple inheritance,Ø Platform independent bytecode,Ø Java primitive data types have fixed sizes,Ø Automatic run-time bounds-checking,Ø True Boolean type,Ø No pointer programming,Ø Automatic garbage collection,Ø Language support for multithreaded applications.
![Page 8: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/8.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java in Embedded Systems
Java Usage Models:
The proposed Java usage models fall into one of four categories:
Ø No Java
Ø Embedded Web Server Java
Ø Embedded Applet Java
Ø Application Java
![Page 9: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/9.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java in Embedded Systems
These models are distinguished by two binary variables:Ø location of the stored Java bytecodesØ the processor on which the bytecodes are
executed
These variables can take one of two values:Ø target (the embedded system)Ø host (a general-purpose computer attached to
the embedded system)
Ref.: Michael Barr
![Page 10: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/10.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java in Embedded Systems
Ref.: Michael Barr
Target
Host
Java
No Java
Target
Host
Java
Application
Target
Host
Java
EmbeddedWeb Server
Target
Host
Java
EmbeddedApplet
![Page 11: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/11.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java 2 Platform
Java 2Enterprise
Edition(J2EE)
Core APIs
Java 2Enterprise
Edition(J2EE)
Core APIs
Java 2StandardEdition(J2SE)
Core APIs
Java 2StandardEdition(J2SE)
Core APIs
Java Programming LanguageJava Programming Language
Java HotSpotJava HotSpot Java Virtual Maschine (JVM)Java Virtual Maschine (JVM) KVMKVM Card VMCard VM
Java 2 Micro Edition Core APIsJava 2 Micro Edition Core APIs
TVProfileTV
Profile ScreenPhoneProfile
ScreenPhoneProfile
CarProfileCar
Profile
PersonalProfile
PersonalProfile Mobile Information
Device Profile
Mobile InformationDevice Profile
SmartCard
Profile
SmartCard
Profile
ProfileProfileProfileProfile
ProfileProfileProfileProfile Java 2 Platform, Micro Edition(J2ME) encompasses VMs and coreAPIs specified via Configurations aswell as vertical – or market-specificAPIs specified in Profiles.
![Page 12: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/12.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java Application Environments
JavaAE
Desktop OSEnterprise ServersMainframes
PersonalJavaAE
RTOS VendorsSet-top boxesPDAsScreenPhonesHi-end mobile phonesInternet TVCar navigation
EmbeddedJavaAE
Industrial ControllersIntrumentationAutomotivePrintersHi-end PagersMid-range Phones
JavaCard
SmartCardsJava Ring
![Page 13: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/13.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java 2 Platform Editions
WorkgroupServer
Java TechnologyEnabled Desktop
MicroEdition
StandardEdition
EnterpriseEdition
High-EndServer
Java TechnologyEnabled Devices
JavaCard
![Page 14: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/14.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java
Application Portability:1. mechanism for executing Java bytecodes on
any processor
2. common set of class libraries
![Page 15: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/15.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java Development Cycle
JavaSource(.java)
JavaBytecode(.class)
JavaCompiler
Compile-timeEnvironment
Class LoaderBytecode Verifier
Run-Time Environment(Java Platform)Environment
JavaInterpreter
Just-in-TimeCompiler
Run-Time System
Operating System
Hardware
VirtualJava Machine
VM
Java ClassesLibraries
![Page 16: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/16.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java Architecture
Java Runtime System
Compiled Byte Code
VirtualMachine
JavaAPI
Operating System
Computer Hardware
Java ProgrammingLanguage
The Java Architecture
1. Programming Language2. Virtual Machine (VM)3. API
![Page 17: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/17.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Access Hardware using Java
Problem àà Basic Properties of Java:ØPlatform independent bytecode,ØNo pointer programming,ØAutomatic garbage collection,
The basic idea of embedded control is to directly access hardware level properties:
ØRegisters, I/O-interfaces, sensors, actuators, etc.
![Page 18: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/18.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Access Hardware using Java
Solutions:ØUse dedicated hardware platform, dedicated
OS and dedicated Java VM.Example:
Snijder Embedded Java Controller (EJC).
see: 1st Int. Workshop, Vaasa, 2002
ØUse native languages that allow access to
hardware level functions.
![Page 19: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/19.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java - Jbed
Hardware
OS
Browser
Glue Code
VM
Java in aWWW
browser
Hardware
OS
Glue Code
VM
Java on adesktop
OS
Hardware
RTOS
Glue Code
VM
Java on aRTOS
Hardware
OSandVM
Java on thebaremetal
![Page 20: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/20.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
EJC - Embedded Java Controller
I2C
RS485
COM 1
COM 0
ETH.Digital
I/OLCD 1-Wire
Sys
tem
Bu
s
EJC
I2C
RS485
COM 1 (RS232)
COM 0 (TTL)
Ethernet
LCD 1-WireDigital I/O
Switch Input LED Output Boot Flash
Bo
ot
Fla
sh
PWR
EJC-SK1 carrier board block diagram
![Page 21: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/21.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
EJC - EW1A block diagram
CPUARM7TDMI
E2PROM
Temp.Sensor
DRAM
Flash
ISA-like +memory
bus
DIMM connector
COM 2RS232
RS485I2C
masterDigital
I/OLCD Ethern.
COM 1TTL
Embedded Java Controller block diagram
![Page 22: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/22.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
User applicationsand servlets
EJC
Overview of the EJC software architecture.
Serial Ethernet I2C Dig I/O Flash NV RAM • • • LCD
Elate RTOS kernel + low-level libraries(TCP/IP, file system architecture, graphic subsystem, etc.)
Intent JVM + PJAE + javax.comm EJC middleware andsystem software
EJC class library + servlet framework
• • •HTTP server
FTP server
Telnet server
Drivers
Kernel
JVM
JavaLevel
![Page 23: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/23.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
EJC - Native Code
Access to hardware or peripherals throughnative code:
Special feature of the EJC (the intent JVM):
Java classes can be directly written in VP assembler. VP assembler is a high-level assembler language which is targeted at a special Virtual Processor, and that is translated to native code either statically, at sysgen-time, or dynamically, when a class is loaded by the device (happens automatically).
⇒⇒ Access to hardware is possible without the runtime overhead of JNI or other similar mechanisms.
![Page 24: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/24.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI
JNI - The Java Native Interface
Advantages:ØSupport platform-dependent features.
Ø Integration: Make existing libraries or
applications written in another programming
language available to Java.
ØSpeed: Implement time-critical code.
![Page 25: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/25.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java SideC Side
JNI
JNI
Exceptions
Classes
VM
Functions
Libraries
Application
![Page 26: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/26.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI
JNI allows interaction in two directions:
ØJava programs can use native methods written in other languages
ØNative methods can use Java objects and methods out of Java applications
![Page 27: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/27.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI
Java Libraries
Java Classes
Java VM
Java MethodsC Program
![Page 28: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/28.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI
C Routines
C++ Classes
C Debugger
Assembly Rout.
Java Program
Exception Handler
C RuntimeTypeChecker
![Page 29: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/29.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI-Example
class HelloWorld
{
public native void displayHelloWorld();
static
{
System.loadLibrary("hello");
}
public static void main(String[] args)
{
new HelloWorld().displayHelloWorld();
}
}
Java-File: HelloWorld.java
![Page 30: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/30.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI-Example
Java Code Compilation:
javac HelloWorld.java
Creating the C header file:
javah –jni HelloWorld
![Page 31: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/31.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI-Example
Name of native language function that implements the native methods:
ââ ââ ââ
prefix class name method name+ + +_
ââ
java_ HelloWorld displayHelloWorld+ + +_
JNIEXPORT void JNICALLJava_HelloWorld_displayHelloWorld(JNIEnv *, jobject);
![Page 32: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/32.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI-Example
Native Methods (C code):
#include <jni.h>
#include "HelloWorld.h“#include <stdio.h>
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld
(JNIEnv *env, jobject obj){
printf("Hello World!\n");
return;
}
![Page 33: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/33.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI-Example
HelloWorldImp.c contains three header files:
1.jni.hThis file contains information needed by the native language to exchange data with the Java runtime system.
2.HelloWorld.hThe generated header file.
3.stdio.hContains the printf function.
![Page 34: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/34.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI-Example
1.Write Java Code
HelloWorld.java
2.Compile with javac
HelloWorld.class
3.Generate header file
with javah
HelloWorld.h
jni.h4.Write implementation
of native method
HelloWorldImp.c
5.Compile native code,load shared library
hello.dll
stdio.h
6.Run program using
java interpreter "Hello World"
![Page 35: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/35.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java in Embedded Systems
Why Embedded Java?
Ø Hardware Independence (greater than with C/C++)
Ø Downloading capabilities:Software downloaded into device
Ø Internet Connectivity
Ø Security
Ø Better Productivity
![Page 36: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/36.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Application: CAN-Bus
CAN-Bus⇒⇒ Controller Area Network
Serial 2-wire bus systemaimed at autombile applications,developed by Bosch.International Standard (ISO 11898)
![Page 37: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/37.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Field Bus Systems
Field Bus Systems
Sensor/Actuator Bus Process Bus
ASIINTERBUS-S
PROFIBUS DPCAN
DIN-BusBITBUS
PROFIBUS FMSP-NET
Field Bus Organizations
![Page 38: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/38.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Field Bus Systems
ControlFunctions
Virtual CAN Interface
Virtual CAN Interface
MonitorFunctions
CANAnalyzer
UserApplication
CAN
PCI-card PortAdapter USB-CAN
![Page 39: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/39.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java based CAN Program
class: VCIJNI.java** Function: VCI2_PrepareBoard
** Native method declaration
public native int VCI2_PrepareBoard(CAN_Analyser myApp,
int board_type,
short board_no,
String AddInfo,
byte AddInfoLength,
JCallback receive,
byte [] m_callback_databytes);
![Page 40: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/40.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Dynamic Link Libraries
.dylibMac OS X
.soUnix
.dllWindows
ExtensionOperating System
** JNI-function** for loading of the VCIJNI.DLL
static {System.loadLibrary("VCIJNI");
}public VCIJNI() {}
Code in class VCIJNI.javato load DLL (VCIJNI.dll)into memory
![Page 41: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/41.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Dynamic Link Libraries
Java Code Compilation:
javac VCIJNI.java
Creating the C header file:
javah –jni VCIJNI
![Page 42: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/42.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Dynamic Link Libraries
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class IXXAT_VCIJNI */
#ifndef _Included_IXXAT_VCIJNI#define _Included_IXXAT_VCIJNI#ifdef __cplusplusextern "C" {#endif/** Class: IXXAT_VCIJNI* Method: VCI2_PrepareBoard* Signature: (LIXXAT/CAN_Analyser;ISLjava/lang/String;BLIXXAT/JCallback;[B)I*/JNIEXPORT jint JNICALL Java_IXXAT_VCIJNI_VCI2_1PrepareBoardJNIEnv *, jobject, jobject, jint, jshort, jstring, jbyte,
jobject, jbyteArray);
Generated Header File IXXAT_VCIJNI.h
![Page 43: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/43.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Dynamic Link Libraries
File VCIJNI.cpp implementeing the native code for function Java_IXXAT_VCIJNI_VCI2_1PrepareBoard
JNIEXPORT jint JNICALL Java_IXXAT_VCIJNI_VCI2_1PrepareBoard( JNIEnv * env,
jobject jObj,jobject myApp,jint board_type,jshort board_no,jstring AddInfo,jbyte AddInfoLength,jobject JReceiveCallback,jbyteArray callback_databytes)
{int i_test;jboolean *isCopy = NULL;
//Produce a new global reference to Object " JReceiveCallback " g_JObj_JCallback = env->NewGlobalRef(JReceiveCallback);
![Page 44: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/44.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Dynamic Link Libraries
Create Object:
// Object with the Java Native Interfacestatic VCIJNI vci = new VCIJNI();
// prepare board for further configurationi_test = vci.VCI2_PrepareBoard(
myApp,BoardConfStruct.board_type,BoardConfStruct.board_no, AddInfo,AddInfoLength,JReceiveCallback, JReceiveCallback.m_a_data);
![Page 45: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/45.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java/CAN - demo
a) CAN Interface:
USB-to-CAN Module
Intelligent CAN modulefor the USB-Port
![Page 46: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/46.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java/CAN - demo
b) Connected Device:
Absolute Rotary Encoders
Allows a direct read-outof the angular position
![Page 47: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/47.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java/CAN - demo
Program Code: JavaCAN Code: C++GUI: Java Swing
Future Expansion:Internet Connectivity: Java
![Page 48: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/48.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Using Java to Control CAN
Some more important applications
OFFONCANDevice
CAN Bus
CANDevice
Summer Cottagein Vaasa
![Page 49: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/49.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
The end
Thank you!
![Page 50: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira](https://reader034.vdocument.in/reader034/viewer/2022042201/5ea165a4fbff0f556b12522d/html5/thumbnails/50.jpg)
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
The End
Contact:Prof. Dr. Helmut DispertUniversity of Applied Sciences KielFaculty ofComputer Science and Electrical EngineeringGrenzstr. 324149 Kiel, GermanyTel.: +49-431-210-4114/4123Fax.: +49-431-210-64114E-Mail: [email protected]