<p>Uploading can be achieved via the JTAG port using software such a Jflash and Jflash-linux. Usage for Windows or GNU/Linux host is essentially identical. The examples given here use GNU/Linux syntax.</p> <div class="SECT2"><h2 class="SECT2"><a name="AEN1447">Using JTAG and Jflash-linux</a></h2><p>In order to use the JTAG programmer, you need to connect the parallel port of your computer to the JTAG port of the device you want to program. The details of this vary from device to device - see the relevant install chapter. Ensure the device is powered up. Jflash and Jflash-linux both autosense for available parallel ports so it shouldn't matter where you plug it in.</p><p>You can then issue the following command as root:</p><p class="LITERALLAYOUT"><b class="COMMAND">./Jflash-linux blob-1.0.7b</b></p><p>and you should see something like the following (this example is using the blob-1.08-pre2 binary on the CD on a LART). After uploading the device will reset itself before running Blob.</p><table width="100%" border="0" bgcolor="#e0e0e0"><tbody><tr><td><pre class="SCREEN">using printer port at 378<br />Seems to be a pair of 28F160F3, bottom boot. Good. <br /><br />Starting erase for    c8e bytes<br />Erasing block   0   <br />Erasing done                                           <br />Starting programming<br />Writing flash at hex address      1b0, 13.44% done    <br />Writing flash at hex address      3d0, 30.37% done    <br />Writing flash at hex address      5f0, 47.29% done    <br />Writing flash at hex address      810, 64.22% done    <br />Writing flash at hex address      a30, 81.14% done <br />Writing flash at hex address      c50, 98.07% done <br />Programming done                                            <br />Starting verify<br />Verifying flash at hex address      643, 49.88% done    <br />Verification successful!                           </pre></td></tr></tbody></table><div class="NOTE"><blockquote class="NOTE"><p><b>Note: </b>If something is wrong you will see error messages like the following:</p></blockquote></div><table width="100%" border="0" bgcolor="#e0e0e0"><tbody><tr><td><pre class="SCREEN">error, failed to read device ID<br />ACT: 0000 0000000000000000 00000000000 0<br />EXP: X001 0001000010000100 00000110101 1<br /><br />failed to read device ID for the SA-1100</pre></td></tr></tbody></table><p>or</p><table width="100%" border="0" bgcolor="#e0e0e0"><tbody><tr><td><pre class="SCREEN">error, failed to read device ID<br />ACT: 1111 1111111111111111 11111111111 1<br />EXP: X001 0001000010000100 00000110101 1<br /><br />failed to read device ID for the SA-1100</pre></td></tr></tbody></table><p>or</p><table width="100%" border="0" bgcolor="#e0e0e0"><tbody><tr><td><pre class="SCREEN">error, failed to read device ID<br />ACT: 1001 1010000111001011 01011000111 1<br />EXP: X001 0001000010000100 00000110101 1<br /><br />failed to read device ID for the SA-1100</pre></td></tr></tbody></table><p>There are a number of possible causes. If you get all 1's then you maybe using the wrong parallel port, or the cable or dongle is not plugged in, or the device is not powered up. If you get all zeros then you may be using the wrong version of JFlash-linux, or (on a LART) you may be suffering from the 'JTAG reset problem', see <a href="http://www.aleph1.co.uk../../../armlinux/book/x350.html#LARTJTAGPROB">the section called <i>LART JTAG reset problem</i> in Chapter 3</a>. If you get random numbers some of the time and zeros the rest of the time then you are almost certainly using the wrong version of JFlash-linux.</p></div> 