Multi-Board Flash Programming with VTOS™
It is often desirable when manufacturing circuit boards to program several boards in parallel. This entry describes a process for programming multiple circuit boards in parallel using Kozio’s VTOS Tools™. The goal of this simple example is to program two different files into NOR Flash on multiple circuit boards, with the programming process running independently for each unique circuit board. The first file programmed will vary for each circuit board and the second file will remain the same for all circuit boards. Using VTOS Program™, you can program as many files as you like, this examples only uses two.
The configuration used for this example runs on a PC which is connected to a USB hub. One circuit board is connected through JTAG to a CodeWarrior TAP. That TAP is connected to the PC using a USB connection. This is identified as Fixture 1. A second identical setup is configured for a second circuit board and identified as Fixture 2.
This example uses Kozio’s freely available tool vAccessTest.exe to execute a programming sequence. The call flow is to use a batch file (test.bat) to launch two separate command windows. Each command window in turn runs a batch file (dut1_test.bat and dut2_test.bat) that programs a circuit board attached to its fixture.
There are several possible ways of creating a programming test sequence to program unique data for a circuit board. Unique data in this example is a board’s serial number and two MAC addresses. Here are a couple examples:
- One solution is to store the unique data in a file and then program that file to a specified location in Flash memory. This solution requires that the data file always have the same file name so that the programming script never changes. This method produces a new serial number and overwrites the same data file for each new circuit board.
- Another solution is to create a unique file using a separate process and then generate a programming script file on the fly. This solution provides a way to change the file name of the data file being programmed and capture that information in a log. The process flow is essentially the same for each new circuit board, except the call to program the data file changes each time with the new file name.
For this example, we will demonstrate the first method.
Looking at the flow of the DUT batch file more closely, we will see that the process initializes variables for a serial number and two MAC addresses. A call is then made to another batch file (create-board-sn-file.bat) to create a unique text file using the current serial number and MAC addresses. The name of text file created is always the same, but stored in a separate folder for DUT1 and DUT2. In a real production environment, these values would typically be pulled from a database. Once the unique file is created, a call is made to vAccessTest.exe specifying the fixture number and script file to run. This step performs the steps needed to erase the flash and then program both files.
The call to vAccessTest actually requires several parameters.
- The first parameter is an INI file that defines one or more fixtures along with connection data. This INI file is created and modified using the VTOS Program GUI. Simply launch VTOS Program and click on Connections to modify this file. The Connections dialogue allows you to create one or more connections. These connections are numbered from top to bottom starting at one (1). The first connection is the information needed for Fixture 1, the second connection is the information needed for Fixture 2, etc.
- The second parameter passed to vAccessTest is the numeric fixture number.
- The third parameter passed to vAccessTest is the script file that will be executed to program both files into Flash memory. This script file (multi-board-programming.ksc) is also created with the VTOS Program GUI. Launch VTOS Program and create a new configuration, add a Flash part, add programming operations, and then export the file to a Kozio script file. The script produced for this example erases two separate areas of the Flash memory and runs a Blank Test to verify that they are erased. The data file is then programmed and a call is made to dump out the contents of Flash memory so that a record of the programmed data is logged. A one (1) MiB file is then programmed and a Checksum Test is used to verify the programming. The second file is used to simulate programming the same application image to all circuit boards.
This method was executed for 6 loops and the output files are provided as examples. The process is started from one cmd.exe window by calling “test.bat 6”.
The process creates a unique serial number file (dut1-sn.txt and dut2-sn.txt) in separate DUT folders. Here is a screen capture of one version of this file in a hex editor. Since the programming sequence dumps the bytes in hex and ASCII, its also good to see them in a hex editor.
The output for each fixture is stored as a text file in the same folder that contains the script file. Here is an example of the output for DUT1: multi-board-programming.txt. Below are a couple screen shots of an output file.
Programming multiple circuit boards is fairly straightforward with VTOS Program, vAccess, and vAccessTest. This post provides the files and a description of those files as one example of programming two files into Flash memory and doing so in parallel. If you would like see a live demonstration of this process, or receive further information and the files, please contact us.