JTAG interface for flash programming
28 March, 2008 - By using JTAG interface it is possible to manage other TAP states machines
than standard IEEE1149 normally used for boundary scan test and external flash programming.
Most microcontrollers include state machines with special instructions which allows to read/write
internal registers and memory and to program internal flash memory. Just to make a couple of examples,
ST Microelectronics ARM microcontrollers and Freescale PowerPC devices.
As long as documentation is available about
the use of the custom state machine, it's quite simple to implement a software that allows at least to
program internal flash memory and read status of main registers. Another approach normally used to
program internal flash memories of MCUs is to load a firmware in the internal RAM, and let it run.
This firmware should only implement routines to initialize some interfaces, like serial
port or ethernet, get the binary image and store it to the flash.
Debug capabilities can be implemented
also, but normally this require a more complicated approach and the ability to disassemble
the binary image. I'll investigate this aspect but since it's strictly related to the microcontroller
architecture it's out of topic for this project.
Just for play, i try to implement the feature to program internal flash memory of STM microcontroller
STR912FAW44X6. Stay tuned!
1 February, 2008 - Hi, i've setup this page because i'm currently developing an hw interface and
a software running on a Windows based host pc that allows to program flash memories
embedded in electronic boards and connected to a microcontroller with the
JTAG interface available on a connector.
I want to know if someone (other than me!) is interested in this project and which
features it should have in order to make it a good product to be sold.
Of course this should be a very low cost product compared to
other tools that have a lot more features but cost also a lot. Think that a
complete JTAG/boundary scan system can cost more than 40000 (40 thousands!) euros (hw + sw),
this is not so much if you consider that this kind of enviroment do all the
job automatically (i mean, it can import netlist files from tens of different
CAD formats, build test patterns, perform flash/cpld programming etc.)
My target is to build a more simple product but which is affordable by everyone,
from electronic hobbiest to small electronic companies.
I've found on the internet some of these tools but they are very specific to
a microprocessor/flash model or board configurations, while i want to
develop something which is general purpose (uC/flash independent). This requires
the ability from the user to provide some sort of description of the system to be
programmed, the uC BSDL file, how the flash device is connected, and how the flash
So, as a first step, the following features will be implemented:
- programming of flash memories connected to a single JTAG compliant device (e.g. a
- BSDL file import (BSDL files are availables for free from uC manufacturer
- manual description of flash interconnections with uC through an easy to
- manual description of flash signals handshake in order to perform actions like
write/read/erase commands (these informations can be found in flash datasheets)
- an HW interface, it can be either the PC parallel port or a more "clever" device
that use a serial RS-232 or USB connection.
If you're interested in this project please let me know! My e-mail address is
Electronic Eng. Simone Pedruzzi
u-boot-1.3.1.tar.bz2 (6.919.821 bytes)