Mercurial > avr_jtag
diff py_avrjtag/jtagdev.py @ 13:1ea479d26fce tip
Make sure shifting phase and add bypass.py.
- shifting phase is started after entering SHIFT state
Transition from CAP to SHIFT does not induce shifting.
- shifting phase is stoped after leaving SHIFT state.
Transition from SHIFT to EXIT1 also induce a bit of shifting.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Wed, 25 Feb 2009 20:08:29 +0800 |
parents | 68ecd42850d3 |
children |
line wrap: on
line diff
--- a/py_avrjtag/jtagdev.py Tue Feb 24 18:53:16 2009 +0800 +++ b/py_avrjtag/jtagdev.py Wed Feb 25 20:08:29 2009 +0800 @@ -3,6 +3,14 @@ debug_frame = 0 +def dump_frame(frame): + r = '' + for c in frame: + r = r + ('%02x ' % (ord(c))) + pass + print r + pass + class jtagdev(object): ST_RESET = 0 ST_IDLE = 1 @@ -13,7 +21,7 @@ def __init__(self, fo): self.fo = fo - self.state = self.ST_IDLE + self.state = self.ST_RESET self.seq = 0 pass @@ -58,7 +66,7 @@ if not frame: return None if debug_frame: - print repr(frame) + dump_frame(frame) pass cmd = cmd_proto.cmd() @@ -85,13 +93,14 @@ return if self.state == self.ST_IDLE: - ptn, ptn_nbits = tms_ptns.TMS_CAP_IR - self._send_tms(ptn, ptn_nbits) - elif self.state == self.ST_SHIFT__DR: - ptn, ptn_nbits = tms_ptns.TMS_SHIFT_DR_2_CAP_IR - self._send_tms(ptn, ptn_nbits) + ptn, ptn_nbits = tms_ptns.TMS_SHIFT_IR + elif self.state == self.ST_EXIT1_DR: + ptn, ptn_nbits = tms_ptns.TMS_EXIT1_DR_2_SHIFT_IR + elif self.state == self.ST_EXIT1_IR: + ptn, ptn_nbits = tms_ptns.TMS_EXIT1_IR_2_SHIFT_IR else: raise RuntimeError, 'Transite to shift IR state from invalid state' + self._send_tms(ptn, ptn_nbits) self.state = self.ST_SHIFT_IR pass @@ -100,14 +109,15 @@ return if self.state == self.ST_IDLE: - ptn, ptn_nbits = tms_ptns.TMS_CAP_DR - self._send_tms(ptn, ptn_nbits) - elif self.state == self.ST_SHIFT_IR: - ptn, ptn_nbits = tms_ptns.TMS_SHIFT_IR_2_CAP_DR - self._send_tms(ptn, ptn_nbits) + ptn, ptn_nbits = tms_ptns.TMS_SHIFT_DR + elif self.state == self.ST_EXIT1_IR: + ptn, ptn_nbits = tms_ptns.TMS_EXIT1_IR_2_SHIFT_DR + elif self.state == self.ST_EXIT1_DR: + ptn, ptn_nbits = tms_ptns.TMS_EXIT1_DR_2_SHIFT_DR else: raise RuntimeError, 'Transite to shift DR state from invalid state' pass + self._send_tms(ptn, ptn_nbits) self.state = self.ST_SHIFT_DR pass @@ -171,15 +181,15 @@ return (ord(data[byte_off]) >> bit_off) & 0x1 def identify_components(dev): - dev.go_shift_IR() - reply = dev.wait_reply() - if reply.code != cmd_proto.CPCMD_ACK: - raise RuntimeError, 'invalid reply code 0x%02x' % (reply.code) +# dev.go_shift_IR() +# reply = dev.wait_reply() +# if reply.code != cmd_proto.CPCMD_ACK: +# raise RuntimeError, 'invalid reply code 0x%02x' % (reply.code) - dev.shift_IR('\x02', 4) - reply = dev.wait_reply() - if reply.code != cmd_proto.CPCMD_ACK: - raise RuntimeError, 'invalid reply code 0x%02x' % (reply.code) +# dev.shift_IR('\x04', 4) +# reply = dev.wait_reply() +# if reply.code != cmd_proto.CPCMD_ACK: +# raise RuntimeError, 'invalid reply code 0x%02x' % (reply.code) dev.go_shift_DR() reply = dev.wait_reply()