TUTOR HOME
  HELP BUY CONTACT ABOUT

TINI Firmware Update 1.02b
(released by Dallas April 30, 2001)

What's New in 1.02b
It looks like 1.02b fixes a large number of significant bugs relating to CAN1, ftp, telnet, random reboots in the TINI network module, etc. The API has not changed in 1.02b, it is just a maintenance release. A complete list of changes is in file tini1.02b/docs/Changes.txt, included in the 1.02b release. It's worth reading - it's far too long to even summarize here.

Assumptions and Tools
I use Windows NT4, Windows 2000 Pro, and Windows 98, JBuilder 4.0, and a variety of STEP and TILT boards, with an 8x1-Wire board too. Our office network uses NT Server and a 10/100 ethernet with DSL to the outside world. At home I have a Windows 98 notebook with a PCMCIA ethernet card, a small 10 MBit ethernet, and DSL with DHCP.

Download the 1.02b files from Dallas
Save the .gz tar file in a temporary folder - but don't install it right now. We have a big folder on our server called "incoming" with sub-folders such as "dallas\tini" where we store such things and keep an untouched copy of all such downloads.
TINI 1.02b files Get the update from Dallas by clicking on the ftp link to the left. Anonymous login is supported. Report bugs to Dallas at www.tini.ibutton.com

Break all references to older versions of TINI firmware. (Very important)

Make all prior versions unreachable by changing the current folder name (in my case this was "tini1.02" which held the 1.02 files) to something like "tini102_obsolete". This breaks all my current paths and classpaths so that I cannot accidentally still be referring to an old version of TINI firmware. This step will save you a lot of very hard-to-solve problems. Incorrect path and classpath references can be very hard to debug and lead to mysterious build- and run- time errors. If you make such references impossible, you have dodged one bullet completely.

Don't delete the 1.02 release folder yet, as you will need to copy some files from it. I usually copy mine to a CDROM and hang onto the hard disk version for several weeks to be sure there's nothing else in it I need.

Install the new TINI firmware

Use WinZIP or something similar to expand the TINI tar file into your system. I install mine on logical drive E: and tell WinZip to use folder information. This creates the folder E:\tini1.02b with sub-folders \bin, \doc, etc, just as they are stored in the tar file. Note: you are NOT installing the new 1.02b release over the top of the same root folder (tini1.02) as the prior 1.02 release.

I'm updating from 1.02p3 to 1.02. Both of these release's tar files have a default folder of "tini1.02". Resist the urge to simply install the new 1.02 over the old 1.02p3. This is why we rename the old 1.02p3 folder first. This way you cannot have a mixture of new and old 1.02 releases in the same root folder. You don't want the old 1.02 files mixed in with the new ones!

Copy some files from 1.02_obsolete to the new 1.02b folder

The loader 0515.hex is not included in the 1.02b release, so copy it into the tini1.02b/bin folder.

Copy over any modified OWAPI dependencies files into the new /bin folder. In my case I have modified it and renamed it to owapi_dep_bab.txt, and I want to retain that file.

If you have any JavaKit or FTP macros, batch files, etc, copy them over. I am not a great typist so typically have a macro for anything I do more than a few times.

Update JBuilder references to the new TINI firmware

Jbuilder's JBuilder.config file, in e:\jbuilder4\bin must have this line in the "addpath" area of the jdk.config file. Note that this is JBuilder.config, this is a different file than was changed in JBuilder4. Only the first portion of the file is shown below in green with the additions in red.

# +-----------------------------------------------------+
# | |
# | This is the configuration file for the JBuilder IDE |
# | |
# | Do NOT make modifications without maintaining a |
# | backup copy. See README.txt for a description of |
# | the recognized directives. |
# | |
# +-----------------------------------------------------+

# Read the shared JDK definition
include jdk.config

# add path to TINI
addpath e:/tini1.02b/bin/tini.jar

# Tune this VM to provide enough headroom to work on large
# applications
vmparam -Xms8m
vmparam -Xmx128m

  • Update the JBuilder "required libraries" in the default paths and also the project paths of any existing projects you will be rebuilding. If you followed the "break all references" instruction above, your obsolete libraries won't be reachable and that will tip you off when you go to rebuild an existing project and try to refer to old version libraries, since you will get compile time errors.
  • The 1.02b tini.jar and tiniclasses.jar are in the same place (\bin) as 1.02, and the OneWire jar owapi_dependencies_TINI_001.jar has not changed.
  • Update your JavaKit.bat file (if you use one) to refer to the correct 1.02b files. Try it to test that JavaKit still works.

Update any Windows System parameters (very helpful, often overlooked tip!)
NT4's System properties (Control Panel->System->Environment) lets you set parameters such as a global classpath and system path. I use this, here's what it looks like:

I also add e:\JBuilder4\jdk1.3\bin; to the beginning of the PATH environment variable, so that from a command prompt, the JDK1.3 java, javac, javadoc, etc are the *first* "java" executables found. This avoids the common mistake of invoking a browser or Windows system "java" executable from the command line.
Win2000 has a similar feature in Settings->Control Panel->System->Advanced->Environment Variables.

Screen captures of JBuilder required library definitions
These are so similar to 1.02, which was so similar to 1.02p3 that I did not repeat them. Please refer to the 1.02p3 screen captures to see what they look like.

Install the new TINI firmware on a TINI module using JavaKit

Save any important files on TINI first, since updating TINI firmware will clear the heap and all TINI files will be lost.

I use a batch file JavaKit.bat to invoke JavaKit. I also create macro files to configure TINI's IP address and options. Here's the macro file, ip45.mac for our "public" TINI demo system. Connect your PC to TINI's serial0 with a straight (not null modem) serial cable. Start JavaKit (I just click on the batch file) and you should be able to select a comm port and reset TINI if JavaKit is properly installed (if not, try here for JavaKit install help).

Now at the TINI loader prompt (your TINI must be the 0515 loader, if not you need to use JavaKit's File->Update Loader command first), use the JavaKit Load file menu and load tini.tbin (from e:\tini1.02b\bin). Then use the same procedure to load slush.tbin (from e:\tini1.02b\bin), this is the TINI command shell which includes ftp and telnet services. Here's a screen shot of that. You will see TINI's D1 LED blink periodically through the loading process.

Still at the loader prompt, clear the heap with a B18 and F0 (that's F'zero', not an uppercase 'O').

Now type E to execute slush. You should see the slush version as 1.02b:
[-= slush Version 1.02b =-]

Now's a good time to load and then run the macro file to set up TINI's IP configuration, since all the ipconfig settings are cleared with the new update. Then I commit to flash memory with an 'ipconfig -C'.

TiniTools
At this time, TiniTools converts only "some" 1.02 .class to a .tini file. But the FTP Put and Telnet portions of TiniTools are usable even if you use a batch file or Ant to do the conversion. (Not familiar with TiniTools?)

Make Shortcuts to the TINI and OneWire JavaDocs

I like to have a folder with my various TINI tools, including shortcuts to pertinent JavaDocs. The JavaDocs are in the same places in 1.02b so the change is simple. TINI JavaDocs are at
E:\tini1.02b\docs\javadocs\firmware\index.html
and the OneWire JavaDocs are at
E:\tini1.02b\docs\javadocs\modules\owapi\index.html

For completeness, the Sun Java2 1.2.2 API JavaDocs are at
http://java.sun.com/products/jdk/1.2/docs/api/index.html

Build, upload and run a TINI Java App - with these steps
  • Build a java program into a .class file in JBuilder or the tool of your choice.
  • Convert the .class file to a .tini file. If you are not using OneWire classes, you can just use TiniConverter. If you are using OneWire classes, 1.02 and later now use BuildDependency, which replaces and extends the functionality of the BuildOneWireProgram. You can also use BuildDependency (which actually invokes TiniConverter) if you are not using OneWire classes, so this is my preferred method. More on this below.
  • Upload to TINI using either TiniTools ftp put, or a separate FTP program. I use both, and use a batch and command file to streamline command-line FTP.
Convert with BuildDependency

Thanks to Kris Ardis at Dallas for a good method of passing a variable number of parameters to BuildDependency. Here's the batch file I use along with an enhanced dependency file. This lets me build with a command line such as:

buildep Flasher4 10 12

...which builds and converts Flasher4.class into Flasher4.tini, adding OneWire containers 10 and 12. Another option is to use TiniAnt (I still haven't tried this yet), from Sean Kelly.