Home : Course Map : Chapter 24 :
Programming the Imsys Technologies SNAP Board
JavaTech
Course Map
Chapter 24

IntroEmbeddedJava
In Eng. & Sci
J2ME Overview
Real Time Java
Java Hardware
  Chips
  Cores
  Boards
Javelin Stamp
Javelin Programs
  
   Demo 1
   Listing
   Demo 2  
   Demo 3  

SNAP
   Demo 2
 
Performance
Embed Apps
Exercises

     About JavaTech
     Codes List
     Exercises
     Feedback
     References
     Resources
     Tips
     Topic Index
     Course Guide
     What's New

Javelin Stamp
SNAP SIMM board with the Cjip Java processor. (Photo from Imsys Tech.)

We earlier mentioned the Imsys Tech Cjip Javaprocessor and the company's SNAP (Simple Network Application Platform) card, which follows the TINI specifications (see TINI in Java Boards section). It is in a SIMM (Single Inline Memory Module) form and plugs into carrier cards that provide various optional hardware such as ethernet and serial line connectors to provide communications. See, for example, the photo below of SNAP in one such carrier card.

SNAP SIMM board (vertical green colored board) inserted into a Systronix TILT socket board. The thee connects on the right edge of the TILT are for power, serial line, and ethernet from bottom to top. (Photo from Th. Lindblad)

 

SNAP Software

The procedures to create and run programs on the SNAP are not fundamentally different from that for the PC desktop but they do vary in some practical details. First of all, you must deal with a number of limitations in the API:.

  • Reduced core language classes - only those classes in the following packages are available: java.lang, java.io, java.util, and javax.microedition.io.

  • Missing Core language classes - some classes in the J2SE versions of these packages that you are fond of using may not be available. For example java.lang.StringTokenizer is missing.

  • Missing methods - some classes will have some methods absent. For example, random() is removed from java.lang.Math.

To compensate somewhat for these limitiations, there are some additional packages with classes that assist in developing programs for the device:

  • com.dalsemi.onewire.* and com.dalsemi.system packages are available and are fully compatible with the TINI standard.

  • se.imsys.com, se.imsys.net, se.imsys.ppp, se.imsys.system, and se.imsys.util packages provide lots of useful classes such as HttpServer for building custom servers.

  • org.xm.sax and uk.co.wilson packages provide some tools for XML handling

The Imsys Technologies site provides documentation such as the Java API Specifications.

Compiling SNAP Programs

Source code developed with these classes can be compiled for the SNAP with the J2SE compiler but you must direct it to use these packages. For example, if you install the SNAP software into the c:\SNAP directory, then you compile HelloWorld.java as follows:

c:\> javac -target 1.1 -bootclasspath c:\SNAP\classes HelloWorld.java

The target option tells the compiler to produce bytecode compatible with a Java version 1.1. With the J2SE 5.0 compiler, you must also add the option "-source 1.3" to indicate that the code does not contain assertions and other features added to the language after version 1.3. The bootclasspath option indicates that the core language classes should be taken from the SNAP set of packages rather than the standard J2SE packages.

In the standard J2SE scenario, the class files are loaded by the JVM, which checks that the bytecode conforms to all the standard specifications and doesn't do anything illegal. The CLDC, on the other hand, is intended for platforms with limited resources so it requires that some of this bytecode checking be carried out prior to loading the processor.

The class files are run through a preverification program that checks the code and creates new class files with annotations that the processor recognizes and uses to accelerate its own code checking.

So before the class files are moved to the SNAP, the following preverification step is required:

c:\SNAP\bin\preverify -classpath c:\SNAP\classes;. -nofinalize -d out HelloWorld

The -nofinalize flag is necessary because CLDC platforms don't allow for invoking the finalize() method inherited from Object. The -d flag sends the verified class file to the out\ subdirectory.

Installing and Running SNAP Programs

You can use ftp to place HelloWorld.class on the SNAP. To run the program you can telnet into the Unix style command shell on the SNAP and run the program with

> java -r HelloWorld &

which responds with the output

Hello World!

Here the -r flag tells the system to restart the Java processor in case it is still running an old version of a class file. While not necessary for this simple program, the & flag causes the shell to return to the telnet prompt immediately after it starts the program.. For a long running program like a server, this allows you to log off while the program continues to run.

The Imsys Developer, an Integrated Development Environment (IDE), is now available from Imsys Technologies as an optional purchase for programming SNAP systems. It includes an editor, debugger, and "handles a simultaneous mix of Java, C and assembler code."

In the next section we show the code for a Web server that runs on the SNAP.

References and Web Resources

Latest update: Dec. 15, 2004

  
  Part I Part II Part III
Java Core 1  2  3  4  5  6  7  8  9  10  11  12 13 14 15 16 17
18 19 20
21
22 23 24
Supplements

1  2  3  4  5  6  7  8  9  10  11  12

Tech 1  2  3  4  5  6  7  8  9  10  11  12
Physics 1  2  3  4  5  6  7  8  9  10  11  12

Java is a trademark of Sun Microsystems, Inc.