LART image

LART pages
Mailing lists
Site map/About

Main board
Kitchen sink board
Ethernet board
Boot loader
Linux port
RAM disk
Compiler tools

LART projects
Clock scaling

LART links
l'Art gallery

Projects - JTAG

JTAG for the LART

Before you can run an operating system on the LART, you have to write a bootloader to the flash. The LART team uses a special external flash board; for most people that's not really a solution because some special hardware is required to (re-)program that board.

Fortunately, Intel has a documented hack to program flash memory through the SA1100 JTAG interface. Nonetheless it took quite some time before everything was ported to Linux and the correct hardware was built.

Nicolas Pitre first ported Intel's Jflash (legal info) utility from Windows to Linux, Steve Wiseman hacked it a bit further so it worked with the LART (Jflash was intended for the Intel Assabet which has an SA1110 CPU). Finally, Holly Gates designed a dongle so you can connect your LART directly to the parallel port.


Some pictures courtesy of Holly Gates.

JTAG pictures
[Click to enlarge] A LART with the JTAG dongle attached.
[Click to enlarge] And a close-up of the dongle.


jtag-lart_schematic.pdf17 Aug 2000 11:27:4811,506 bytes

Holly Gates' schematics for the JTAG dongle (pdf).
jtag-lart_Rev_X1_BOM.txt10 Aug 2000 22:37:31197 bytes

The Bill-of-materials for the JTAG dongle. Supplied by Holly Gates.
jtag-lart_Rev_X1.tar.gz10 Aug 2000 22:37:319,662 bytes

The JTAG dongle hardware distribution from Holly Gates. Contains all gerber files to build your own dongle. (tar, gz)

jflash-linux.tar.gz10 Aug 2000 23:29:3925,453 bytes

The Intel Jflash utility ported to LART and Linux by Nicolas Pitre and Steve Wiseman. Contains source as well as a precompiled binary. (tar, gz)


Using the JTAG programmer is quite easy:

Connect a parallel cable to you computer's printer port, connect the JTAG dongle to the cable. Connect the other end of the JTAG dongle to the LART. Powerup the LART. Have a copy of blob ready, and use the following command (as root):

root@arthur:jflash-linux # ./Jflash-linux blob-1.0.7b 
using printer port at 378
Seems to be a pair of 28F160F3, bottom boot. Good. 

Starting erase for    da5 bytes
Erasing block   0   
Erasing done                                           
Starting programming
Writing flash at hex address      220, 15.57% done    
Writing flash at hex address      4b0, 34.35% done    
Writing flash at hex address      750, 53.59% done    
Writing flash at hex address      9f0, 72.83% done    
Writing flash at hex address      c90, 92.07% done    
Programming done                                            
Starting verify
Verifying flash at hex address      7a2, 55.94% done    
Verification successful!                           
root@arthur:jflash-linux #

In our first experiments, we have measured a throughput of 630 bytes/s. If the download is successful, the LART will immediately reset itself and run blob. If you have a terminal (or terminal emulator) connected to the serial port, you will see blob booting:

Consider yourself LARTed!
Running from internal Flash.
Starting the memory tester...
Zeroing memory...0xD0000000


There is a small chance that the dongle doesn't work. You may get one of the following error messages when using Jflash-linux:

error, failed to read device ID
ACT: 0000 0000000000000000 00000000000 0
EXP: X001 0001000010000100 00000110101 1

failed to read device ID for the SA-1100

error, failed to read device ID
ACT: 1111 1111111111111111 11111111111 1
EXP: X001 0001000010000100 00000110101 1

failed to read device ID for the SA-1100

If that's the case, put a 100 ohm resistor between pins 6 (+3.3V) and 7 (nTRST) on the JTAG connector. In this way nTRST will be pulled to +3.3V so the JTAG bus won't be able to reset itself.


This is an external project. The LART team wishes to thank Nicolas Pitre, Steve Wiseman, and Holly Gates for their efforts.

Valid CSS! Valid HTML 4.01! Powered by PHP3! Powered by Apache! Powered by Linux! Slashdotted! (logo by 21 Dec 2001