In-System Programming Advances and Innovations
I remember my first experience programming a flash part. As a developer of software for embedded systems, I would remove the flash part from the circuit board for which I was writing software. I would walk the part over to the flash programming station, insert the part into the programming station’s socket, and program the part with the latest revision of my software. As you can see, the process was time consuming, but did force you to spend more time reviewing your code before re-programming the part.
The next advancement in flash programming came with in-system programming. “In-System Programming (ISP) is the ability of some programmable logic devices, microcontrollers, and other embedded devices to be programmed while installed in a complete system, rather than requiring the chip to be programmed prior to installing it into the system,” as quoted from Wikipedia.
There are two common methods of programming a device while fully installed. The first is to use JTAG and the second is to use software running on the processor of the embedded device.
Many years ago microcontroller and processor manufacturers added JTAG to their processors allowing an external programmer to use the JTAG connection to program the flash directly from their PC. This setup requires a “JTAG box” which bridges a standard PC connection such as Ethernet or USB to the JTAG connection on the embedded device. This method is in use today for device programming but is not the fastest method of flash programming when a microcontroller or processor is involved because of the slow programming times and slow data transfers over the JTAG connection.
For high-volume and fast flash programming, the solution used today is software running on the embedded device. The software can be configured to run out of the fastest memory available and program the device at the fastest possible speeds. The other advantage of using software running on the processor is that large data files can be transferred over the fastest connections available, such as Ethernet, USB, or LAN. This solution provides exceptional benefits, but typically requires porting software to support every board design and programmable device.
Kozio’s Flash Memory Programming Solution
Kozio came up with an extensible solution that is both fast and easy to configure. Our engineering team came up with a device programming solution that uses a generic executable that will run on any circuit board using a supported family of processors, and CFI compliant drivers; thereby providing a solution that is easy to use. Instead of porting or modifying software, the Kozio solution allows the user to download a firmware image and begin flash programming.
The process is as as easy as follows (this example uses an NXP QorIQ processor):
- Launch VTOS Program.
- Create a new project.
- Configure your connection and click Connect to automatically load and run VTOS firmware.
- Add a new NOR Flash device to the correct local bus.
- Double-click on the new device to install it.
- Add an Erase, Program, and Verify operation under Program Operations.
- Double-click on each step to test and then use the main menu Run option to run them all.
In summary, VTOS Program provides a fast and flexible way of programming any flash device on your embedded system device.