JStamp Home


Also please see Charade tips and other JStamp tutorials and debugging information at:
http://jstampu.systronix.com/

Here's a link to the tutorials main page: http://jstampu.systronix.com/tutorials.htm

JStamp FAQ (also generally applies to JStik and SaJe):

What is the purpose of JStamp?
Are you developing other JStamp-like systems with more capabilities?
Can I program JStamp in something other than Java?
How do I load programs into a JStamp?
What computer do I need to interface to JStamp's JTAG pod?
What is JTAG and a JTAG adapter?
Is ethernet available for JStamp?
Is there another way to provide TCP/IP or internet access for JStamp?
Is PPP available for JStamp?
Are you developing ADC, DAC, modem, RF, CAN, 1-Wire, motor control, etc for JStamp?
Does JStamp have floating point math? CLDC doesn't...
Does JStamp have event listeners?
Does JStamp have 1Wire support?
Will JStamp have Character LCD support?
Announcing JStamp 1/4 VGAGraphic LCD and touchscreen support
How many times can flash memory be programmed before wearing out?
Why does my device hang when I close Charade while running a program?
Why don't I see system messages in Charade when I don't first load my program?
How can I used JDK 1.4, 1.5, etc with JemBuilder? What does a 'BIST fail' mean when trying to execute a program?

Q What is the purpose of JStamp?
A
top
It is the physically smallest, simplest, lowest cost, lowest power embedded Java system we could think of that was still very powerful and useful.
Q Are you developing other JStamp-like systems with more capabilities?
A
top
Yes. For example, see SaJe and JStik.
Q Can I program JStamp in something other than Java?
A
top
JStamp can be programmed in any language that has been targeted to the Java Virtual Machine. For an up-to-date list of programming languages for the Java Virtual Machine, please refer to:
http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html. JStamp is fast enough that you could write an interpreter in it and use JStamp to host another language such as BASIC.
Q How do I load programs into a JStamp?
A
top
JStamp has a JTAG interface for programming and debugging. It must be used for program loading.
Q What computer do I need to interface to JStamp's JTAG pod?
A
top
At the moment it must be a Windows 98/NT/2000. There may be support for Linux and other platforms in the future, but at the moment there is not. Do not use Win95. We use and recommend NT or 2000.
Q What is JTAG and a JTAG adapter?
A
top
This is a standardized high speed serial interface, IEEE 1249, widely used for programming and debugging programmable logic and processors. It is non-intrusive, runs regardless of the state of the processor, and gives access to processor registers, memory, and other resources. You can use the Xilinx Parallel III JTAG adapter if you have one, or the Systronix JTAG adapter.
Q Is ethernet available for JStamp?
A
top
No. An ethernet controller and media interface would have made JStamp larger, more power hungry and more expensive. JStik is a new SIMM30 module which has ethernet, as does SaJe. They are both code-compatible with JStamp.
Q Is there another way to provide TCP/IP or internet access for JStamp?
A
top
Yes, we have purchased a software package MondoMini which uses a simple serial interface to a PC, and through the PC provides web browser access to a system such as JStamp. It's possible that some of the emerging TCP/IP-on-a-chip solutions may be adaptable to JStamp, too. Sun used such a chip in their Sumo robots to provide wireless ethernet support for JStamp.
Q Is PPP available for JStamp?
A
top
Not yet, although several developers have stated an interest in working on it. The best source of current information is the SystronixJava discussion group.
Q Are you developing ADC, DAC, modem, RF, CAN, 1-Wire, motor control, etc for JStamp?
A
top
Yes. A whole line of JSimm modules will become available soon. JSimm backpanels (available now) allow use of numerous JSimm and compatible SimmStick modules at the same time. Check the JCX website at http://www.jcx.systronix.com and http://jcx.systronix.com/news as well as the JSimm website at http://www.jsimm.com
Q Does JStamp have floating point math? CLDC doesn't...
A
top
Yes. Even though CLDC doesn't include floats, JStamp does. You can use float primitive types but not float classes.
Q Does JStamp have event listeners?
A
top
Yes. See the CLDC runtime JavaDocs (250 KByte ZIP file download)
Q Does JStamp have 1Wire support?
A
top
JStamp supports 1Wire through a serial port and a DS2480B, similar to how TINI does it. You can also plug one of the Dallas serial-to-1Wire adapters into a JStamp Dev Station serial port. The 1Wire support uses the Dallas 1Wire API classes, using standard javaxcomm serial access. There is an entire 1-Wire package for CLDC.
Q Will JStamp have Character LCD support?
A
top
We are working on aninterface for our tiny 100x32 graphic LCD and also the common parallel interface LCDs such as 20x4, etc, which use the 44780 family. Users have contributed 44780 code in the files area of the JStamp yahoo user group.
Q AnnouncingJStamp 1/4 VGA Graphic LCD and touchscreen support
A
top
Yes! We are pleased to announce JStamp support for 1/4 VGA (320x240) displays and touchscreens from Amulet Technologies. For example, see the LEGO® arm app note here.
Q What JStamp pins are used in Flash programming?
A
top
IOC4/FA0 (JStamp pin 15) and IOC5/FA1 (JStamp pin 14) are used both by the SPI port and flash programming on JStamp. IOC4 is the SPI MOSI signal and IOC5 is the SPI MISO signal. During flash programming IOC4 is Flash Address 0 and IOC5 is Flash Address 1. Since JStamp can never be performing SPI access while it is programming flash, there should be no problem sharing these signals. However, you need to be sure that your external hardware does not drive these signals during flash programming. JStamp pin 31 is the swap mem pin and is used to select Flash or SRAM at location 0 on boot up. Pin 31 needs to be allowed to float high (JStamp has a 10K pullup on pin 31) in order to program flash.
Q How many times can flash memory be programmed before wearing out?
A
top
100,000 writes per sector. Flash is written a sector at a time, so each sector's life is determined by how many times it has been written (not how many times some part of the flash chip has been written). A bit of Flash trivia: For this reason modern solid state flash disks use wear balancing
to spread out the wear evenly to all sectors, rather than always writing first to sector 0.

If you do 50 per day (that would be an awful lot), you'd reach 100,000 in 2000 days or 5.5 years. This assumes you work 7 days per week on the same JStamp/JStik/SaJe.

If you use the Flash class or the flash file system then you need to consider how often you will write to it and estimate the lifetime.

This Flash lifetime issue is the same for Compact Flash cards and flash in MP3 players, cameras, PDAs, etc.

Q When should I use RAM vs Flash builds?
A
top
When to use Flash vs RAM builds? You need to use RAM builds to be able to set breakpoints for debugging. In flash mode if you want to see symbols, you need to manually do a "load JVM0.map" -- this is done automatically for RAM builds. The normal procedure is that you debug in RAM mode and then deploy in Flash. You will want to use a RAM build when using the JSwat source level debugger as well as the Charade byte-code debugger.
Q Why does JStamp hang when I close Charade while running a program?
A
top
Once -- at boot up -- JStik/JStamp/SaJe checks to see if Charade is present.

If JStik/JStamp/SaJe boots up and detects that the Charade/JTAG connection is present then the controller will queue System.out messages into a 256-byte buffer which will be drained by Charade. If you subsequently close Charade, then JStik/JStamp/SaJe is still sending to the buffer and expecting Charade to empty it. If Charade doesn't and the buffer fills then JStik/JStamp/SaJe will wait, so that messages are not lost. It will wait forever, since it has no way of detecting that now the JTAG connection is unresponsive. So don't exit Charade while running a program. Instead, halt the controller, stop Charade, then reset JStik/JStamp/SaJe so that it can start up and detect that JTAG debugging is no longer present. It's best to cycle the power, since the JTAG interface is designed to withstand a hardware reset.

If JStik/JStamp/SaJe boots up and doesn't detect the Charade JTAG connection then all System.out messages are discarded. So Starting Charade won't capture messages from an already-running program, you'd have to halt, reset and restart the device from Charade. If you start Charade without executing the "load.sod" script, be sure to "sw tx on" from the Charade command line -- to "switch text mode on" to tell JStik/JStamp/SaJe to send messages to Charade (this command happens automatically if you use the load.sod file created by JemBuilder).

Q Why don't I see system messages in Charade unless I first "load" my program?
A
top
If you start Charade without executing the "load.sod" script, be sure to "sw tx on" from the Charade command line -- to "switch text mode on" to tell JStik/JStamp/SaJe to send messages to Charade (this command happens automatically if you use the load.sod file created by JemBuilder).
Q How can I use JDK 1.4.X with JStamp/SaJe/JStik?
A
top
JemBuilder currently (aJile tools 3.15 and 3.16) can only process .class files that have a major version of 45 which Sun compilers from 1.0 through 1.3 generate by default. Sun's 1.4 (and later) compiler generates .class files with a major version number of 46 by default but the compiler's "-target" command line switch can be used to force it to generate class files that adhere to previous compiler versions if desired. We recommend you use JDK 1.4.1 or later and use the '-target 1.1' switch.

For example, here is a command line which will have the 1.4.1 compiler generate a class file (with a major version of 45 and a minor version of 03, but you don't need to worry about those hidden details) that can be used by JemBuilder:

c:\j2sdk1.4.1\bin\javac -target 1.1 -bootclasspath
c:\ajile_JStamp\Runtime_cldc\Rts;c:\ajile_JStamp\Runtime_cldc\classes.jar
-classpath . rtjtest/TestBlink.java

(Thanks to Ted Kosan for this tip)
Q What is a BIST failure?
A
top
BIST means "Built In Self Test" which runs every time an aJile system starts up. This error can only occur if 1) there is no valid program to execute or 2) there is an internal error, such as failure of internal RAM or other controller resources. You will always get this error after power cycling in RAM execution mode, since the BIST tests external memory, including RAM, and erases any program there. Note that a reset in RAM mode does not erase a program, just a power cycle. If you have a valid program loaded in flash, you should never see this error (unless there is some internal failure). The only way to know your program is loaded successfully is to perform a VERIFY in Charade. See the beginning instructions here. If you see this error with a valid program loaded and verified,contact us - you may to return your aJile system to use for repair. If you get verify errors, your target in Charade is probably wrong (using JStamp/aJ80 to program JStik/aJ100 and vice versa).