Programming CAN -based Fieldbus Systems using...
Transcript of Programming CAN -based Fieldbus Systems using...
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
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
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.
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."
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java
Solution:
A New Paradigm:Write once, run anywhere
Java
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
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.
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
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
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
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.
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
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
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
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
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
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.
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.
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
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
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
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
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.
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.
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
Java SideC Side
JNI
JNI
Exceptions
Classes
VM
Functions
Libraries
Application
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
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
JNI
Java Libraries
Java Classes
Java VM
Java MethodsC Program
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
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
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
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);
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;
}
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.
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"
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
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)
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
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
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);
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
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
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
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);
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);
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
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
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
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
Fachbereich Informatik und Elektrotechnik
Embedded Internet, © Prof. Dr. Helmut Dispert
The end
Thank you!
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]