I found the Java JTAG API that I was talking about. It is called JavaScan and has been withdrawn. http://www.jcp.org/en/jsr/detail?id=2 (inkludes example source code to program a XC9500) There is a HAL that allows to efficiently send large blocks of data via JTAG http://www-ee.eng.hawaii.edu/~linbai/Java_API/java_native_interface.htm Kolja |
|
Java JTAG API
Started by ●January 12, 2005
Reply by ●January 12, 20052005-01-12
Kolja wrote: > I found the Java JTAG API that I was talking about. > It is called JavaScan and has been withdrawn. > http://www.jcp.org/en/jsr/detail?id=2 > (inkludes example source code to program a XC9500) That's the awful bit-at-a-time one. Just as well that it was withdrawn. > There is a HAL that allows to efficiently send large blocks of data via > JTAG > http://www-ee.eng.hawaii.edu/~linbai/Java_API/java_native_interface.htm That's a much better interface, since you can supply an arbitrary amount of data in one call. I'm willing to write C code providing the underlying transport for that, but someone else will have to deal with wrapping it in JNI. Eric |
|
Reply by ●January 13, 20052005-01-13
Eric Smith wrote: >Kolja wrote: >>I found the Java JTAG API that I was talking about. >>It is called JavaScan and has been withdrawn. >>http://www.jcp.org/en/jsr/detail?id=2 >>(inkludes example source code to program a XC9500) >> >> > >That's the awful bit-at-a-time one. Just as well that it was >withdrawn. > >>There is a HAL that allows to efficiently send large blocks of data via >>JTAG >>http://www-ee.eng.hawaii.edu/~linbai/Java_API/java_native_interface.htm >> >> > >That's a much better interface, since you can supply an arbitrary amount >of data in one call. I'm willing to write C code providing the underlying >transport for that, but someone else will have to deal with wrapping it >in JNI. Unfortunately there are no API documents on that page. But the HAL is designed for the API, so there must be API suport for transferring large blocks of data, even if Xilinx doesn't use it in the example. Kolja Sulimma |
|
Reply by ●January 13, 20052005-01-13
Kolja wrote: > There is a HAL that allows to efficiently send large blocks of data via > JTAG > http://www-ee.eng.hawaii.edu/~linbai/Java_API/java_native_interface.htm I wrote: > That's a much better interface, since you can supply an arbitrary amount > of data in one call. Kolja wrote: > Unfortunately there are no API documents on that page. But the HAL is > designed for the API, so there must be > API suport for transferring large blocks of data, even if Xilinx doesn't > use it in the example. Huh? Most of that page *is* API documentation. I was specifically referring to the interface: public native byte OperateTAP( int bitCount, byte[] TCKbits, byte[] TMSbits, byte[] TDIbits, byte[] TDObits ); which is described in considerable detail. The rest of the API is not too different than the other bit-at-a-time one, but that one OperateTAP call makes it possible to do reasonably efficient remote JTAG for some things. It may still be insufficient, though, because for some devices it may not be possible to blindly send large blocks of data without examining the feedback until the entire block completes. For instance, if you want to program a parallel flash memory device attached to pins that can be controlled by a JTAG scan chain, you want much more of the smarts to be near the device, because you have to shift the entire scan chain every time you change any signal. Eric |
|
Reply by ●January 13, 20052005-01-13
On Thu, 2005-01-13 at 17:49, Eric Smith wrote: > Kolja wrote: > > There is a HAL that allows to efficiently send large blocks of data via > > JTAG > > http://www-ee.eng.hawaii.edu/~linbai/Java_API/java_native_interface.htm > > I wrote: > > That's a much better interface, since you can supply an arbitrary amount > > of data in one call. > > Kolja wrote: > > Unfortunately there are no API documents on that page. But the HAL is > > designed for the API, so there must be > > API suport for transferring large blocks of data, even if Xilinx doesn't > > use it in the example. > > Huh? Most of that page *is* API documentation. I was specifically > referring to the interface: > > public native byte OperateTAP( int bitCount, byte[] TCKbits, > byte[] TMSbits, byte[] TDIbits, byte[] TDObits ); > > which is described in considerable detail. > > The rest of the API is not too different than the other bit-at-a-time > one, but that one OperateTAP call makes it possible to do reasonably > efficient remote JTAG for some things. That's a misunderstanding because the nomenclature is not clear. The first link I posted refers to a standardization approach for a Java JTAG API, that's what I refered to as API. The second link is a hardware abstraction layer (HAL) for the very same API. Of course this a an API, too, but to differentiate I refered to it as HAL. What I ment is, from the HAL you can infer that the original Java API also had a method to send long strings od bits. > It may still be insufficient, though, because for some devices it may > not be possible to blindly send large blocks of data without examining > the feedback until the entire block completes. > For instance, if you want to program a parallel flash memory device > attached to pins that can be controlled by a JTAG scan chain, you > want much more of the smarts to be near the device, because you have > to shift the entire scan chain every time you change any signal. I agree. Kolja |
Reply by ●January 13, 20052005-01-13
On Thu, 13 Jan 2005, Eric Smith wrote: > > Kolja wrote: > > There is a HAL that allows to efficiently send large blocks of data via > > JTAG > > http://www-ee.eng.hawaii.edu/~linbai/Java_API/java_native_interface.htm > > I wrote: > > That's a much better interface, since you can supply an arbitrary amount > > of data in one call. > > Kolja wrote: > > Unfortunately there are no API documents on that page. But the HAL is > > designed for the API, so there must be > > API suport for transferring large blocks of data, even if Xilinx doesn't > > use it in the example. > > Huh? Most of that page *is* API documentation. I was specifically > referring to the interface: > > public native byte OperateTAP( int bitCount, byte[] TCKbits, > byte[] TMSbits, byte[] TDIbits, byte[] TDObits ); > > which is described in considerable detail. > > The rest of the API is not too different than the other bit-at-a-time > one, but that one OperateTAP call makes it possible to do reasonably > efficient remote JTAG for some things. > > It may still be insufficient, though, because for some devices it may > not be possible to blindly send large blocks of data without examining > the feedback until the entire block completes. > > For instance, if you want to program a parallel flash memory device > attached to pins that can be controlled by a JTAG scan chain, you > want much more of the smarts to be near the device, because you have > to shift the entire scan chain every time you change any signal. If the hardware designer is nice and brings out the CS, OE, and WE pins, you can save quite a few scan chain shifts. The SVF file format supports messing with IO bits to do this. > > Eric > > To post a message, send it to: > To unsubscribe, send a blank message to: > Yahoo! Groups Links > > Peter Wallace Mesa Electronics |