| 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 |
|
| 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).
|