Can some folks do a quick comparisons of the two tables and tell me which patch (minimal or w/ optimization) brings the private table closer in alignment with the main table?
At minimum, it seems like we should take the minimal patch for 0.2.0; however, the additional optimization should be included too, if that change makes the private table match the table used by other interfaces. Cheers, Zach On Sun, 2009-07-05 at 13:26 +0200, Ferdinand Postema wrote: > Sorry, I was not aware of a standard state transistion table. I was > trying to get my interface working properly and I only looked at the > code of the amt_jtagaccel interface. I also considdered the minimal > change. That will also fix the problem. > > The reason why this interface has its own state transition table is > because the jtagaccel interface has two command to initiate a TMS scan > (I think). One TMS scan command always sends 5 bits. The other command > can send 1 to 4 bits. The programmer made his own state transition table > so that he only has to use the command to send out 5 (or 10 bits). > > I think, it is a good thing to change the code to use the standard > table. I was already planning to change it, because I didn't like the > way this was made. Now that I am aware of a standard state transition > table, it is an extra reason to do it. > > > Peter Denison schreef: > > On Sat, 4 Jul 2009, Ferdinand Postema wrote: > > > >> I understand that you do not want to make any changes so close to the > >> release of a new version. No problem. > >> > >> I made 3 changes in the table amt_jtagaccel_tap_move. This table defines > >> how to move from one state to the other. It consists of two bytes per > >> state move. The five LSB of the first byte will be shifted out to the > >> right to the TMS-line. If you need an other 5 bytes to reach the desired > >> state, you have to OR the first word with 0x80 and supply the next 5 > >> bits in the second word (5 LSB). > >> > >> The first change is the neccesary one to correct the problem. This is > >> the sequence to go from state RESET to state DRSHIFT. The value of these > >> 2 bytes were 0x8a and 0x04. This means that the bitstream to do this > >> transition is 0b 00100 01010 (send LSB first). This will bring you from > >> the reset state to the shift state, but you enter the shift-state twice, > >> which explains why the ID-CODE that will be read next is already shifted > >> 1 bit. I corrected this to 0x05 and 0x00. This will send te bitstream > >> 0b00101 (send LSB first). This will bring you from the RESET state to > >> the DRSHIFT state more directly and without entering the DRSHIFT state > >> twice. > >> > >> After checking the whole table, I found two other transitions that were > >> correct, but could be optimized (5 bits in stead of 10 bits). > >> Summary off all changes: > >> From To Old values Old Bitstream New values New > >> Bitstream Remark > >> ---- ------- ---------- ------------- ---------- > >> ------------- ------ > >> RESET DRSHIFT 0x8a 0x04 0b00100 01010 0x05 0x00 > >> 0b00101 To Correct the error (and optimization) > >> IDLE DRSHIFT 0x85 0x08 0b01000 00101 0x04 0x00 0b00100 > >> Optimization > >> IDLE IRSHIFT 0x8b 0x08 0b01000 01011 0x06 0x00 > >> 0b00110 Optimization > >> > >> Hopefully, this explanation helps. > > > > Good explanation. > > > > Duane Ellis wrote: > >> (Forgive me, I have not followed your list of changes and so forth and I > >> am entering the conversation late). > >> > >> One thing we *DO*NOT* want - is one "dongle" - (amt-jtagaccel) to act > >> differently then some other tap because dongle (A) uses sequence (A), > >> and another dongle (B) uses sequence (B) for the *exact*same*thing*. > >> > >> Please don't mis-understand 'fixing a bug is a correct and good > >> thing' however optimizing things can introduce bugs. > > > > The minimal change that fixes the bug is to just change the RESET to > > DRSHIFT transition without optimising anything, just changing 0x8a, > > 0x04 to 0x8a, 0x08. That way the same state transitions are followed, > > and no optimisation is done. At a later date, perhaps we could look at > > why this adapter has its own jtag state table... > > > > Index: src/jtag/amt_jtagaccel.c > > =================================================================== > > --- src/jtag/amt_jtagaccel.c (revision 2461) > > +++ src/jtag/amt_jtagaccel.c (working copy) > > @@ -92,7 +92,7 @@ > > static uint8_t amt_jtagaccel_tap_move[6][6][2] = > > { > > /* RESET IDLE DRSHIFT DRPAUSE > > IRSHIFT IRPAUSE */ > > - {{0x1f, 0x00}, {0x0f, 0x00}, {0x8a, 0x04}, {0x0a, 0x00}, {0x06, > > 0x00}, {0x96, 0x00}}, /* RESET */ > > + {{0x1f, 0x00}, {0x0f, 0x00}, {0x8a, 0x08}, {0x0a, 0x00}, {0x06, > > 0x00}, {0x96, 0x00}}, /* RESET */ > > {{0x1f, 0x00}, {0x00, 0x00}, {0x85, 0x08}, {0x05, 0x00}, {0x8b, > > 0x08}, {0x0b, 0x00}}, /* IDLE */ > > {{0x1f, 0x00}, {0x0d, 0x00}, {0x00, 0x00}, {0x01, 0x00}, {0x8f, > > 0x09}, {0x8f, 0x01}}, /* DRSHIFT */ > > {{0x1f, 0x00}, {0x0c, 0x00}, {0x08, 0x00}, {0x00, 0x00}, {0x8f, > > 0x09}, {0x8f, 0x01}}, /* DRPAUSE */ > > > _______________________________________________ > Openocd-development mailing list > Openocd-development@lists.berlios.de > https://lists.berlios.de/mailman/listinfo/openocd-development _______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development