通过-D参数控制方向
This commit is contained in:
34
hc32flash.py
34
hc32flash.py
@@ -190,7 +190,7 @@ class TransportError(Exception):
|
|||||||
|
|
||||||
|
|
||||||
class SerialTransport():
|
class SerialTransport():
|
||||||
def __init__(self, port, baud):
|
def __init__(self, port, baud, dir1=False):
|
||||||
if not port:
|
if not port:
|
||||||
_ports = serial.tools.list_ports.comports()
|
_ports = serial.tools.list_ports.comports()
|
||||||
if len(_ports):
|
if len(_ports):
|
||||||
@@ -201,10 +201,13 @@ class SerialTransport():
|
|||||||
except serial.SerialException as e:
|
except serial.SerialException as e:
|
||||||
raise TransportError(str(e)) from None
|
raise TransportError(str(e)) from None
|
||||||
|
|
||||||
self.serial.rts = False
|
self.SET = dir1
|
||||||
self.serial.dtr = False
|
self.RESET = (not dir1)
|
||||||
self.serial.rts = True
|
|
||||||
self.serial.dtr = True
|
self.serial.rts = self.SET
|
||||||
|
self.serial.dtr = self.SET
|
||||||
|
self.serial.rts = self.RESET
|
||||||
|
self.serial.dtr = self.RESET
|
||||||
self.serial.timeout = 1
|
self.serial.timeout = 1
|
||||||
self.serial.write_timeout = None
|
self.serial.write_timeout = None
|
||||||
|
|
||||||
@@ -226,18 +229,18 @@ class SerialTransport():
|
|||||||
self.serial.close()
|
self.serial.close()
|
||||||
|
|
||||||
def goto_bootloader(self):
|
def goto_bootloader(self):
|
||||||
self.serial.rts = True
|
self.serial.rts = self.RESET
|
||||||
self.serial.dtr = True
|
self.serial.dtr = self.RESET
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
self.write(b'\x18\xFF'*100, flush=False)
|
self.write(b'\x18\xFF'*100, flush=False)
|
||||||
self.serial.rts = False
|
self.serial.rts = self.SET
|
||||||
self.serial.dtr = False
|
self.serial.dtr = self.SET
|
||||||
self.write(b'\x18\xFF'*10, flush=False)
|
self.write(b'\x18\xFF'*10, flush=False)
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
if self.serial.in_waiting:
|
if self.serial.in_waiting:
|
||||||
ack = self.read(self.serial.in_waiting)
|
ack = self.read(self.serial.in_waiting)
|
||||||
if ack[-3:] == b'\x11'*3:
|
if ack[-3:] == b'\x11'*3:
|
||||||
time.sleep(3) # clear input buffer
|
time.sleep(2) # clear input buffer
|
||||||
self.serial.flushInput()
|
self.serial.flushInput()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
@@ -327,11 +330,11 @@ class SerialTransport():
|
|||||||
return self.read(9) == ack
|
return self.read(9) == ack
|
||||||
|
|
||||||
def reboot(self):
|
def reboot(self):
|
||||||
self.serial.rts = True
|
self.serial.rts = self.RESET
|
||||||
self.serial.dtr = True
|
self.serial.dtr = self.RESET
|
||||||
time.sleep(0.2)
|
time.sleep(0.2)
|
||||||
self.serial.rts = False
|
self.serial.rts = self.SET
|
||||||
self.serial.dtr = False
|
self.serial.dtr = self.SET
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@@ -346,6 +349,7 @@ if __name__ == '__main__':
|
|||||||
parser.add_argument('-R', '--reboot', action='store_true', help='Reboot device')
|
parser.add_argument('-R', '--reboot', action='store_true', help='Reboot device')
|
||||||
parser.add_argument('-e', '--erase', action='store_true', help='Erase device')
|
parser.add_argument('-e', '--erase', action='store_true', help='Erase device')
|
||||||
parser.add_argument('-G', '--goboot', action='store_true', help='Goto bootloader')
|
parser.add_argument('-G', '--goboot', action='store_true', help='Goto bootloader')
|
||||||
|
parser.add_argument('-D', '--dir1', action='store_true', help='RTS/DTR output 1 for reset')
|
||||||
parser.add_argument('-w', metavar='<filename>', help='Write data from file to device')
|
parser.add_argument('-w', metavar='<filename>', help='Write data from file to device')
|
||||||
parser.add_argument('-r', metavar='<filename>', help='Read data from device to file')
|
parser.add_argument('-r', metavar='<filename>', help='Read data from device to file')
|
||||||
parser.add_argument('-v', metavar='<filename>', help='Verify chksum data in device against file')
|
parser.add_argument('-v', metavar='<filename>', help='Verify chksum data in device against file')
|
||||||
@@ -380,7 +384,7 @@ if __name__ == '__main__':
|
|||||||
sys.stdout.write('RameCode: %s\n' % hc32xx['RamCodeBinFile'])
|
sys.stdout.write('RameCode: %s\n' % hc32xx['RamCodeBinFile'])
|
||||||
sys.stdout.write('\n%s\n' % hc32xx['IspConnection'])
|
sys.stdout.write('\n%s\n' % hc32xx['IspConnection'])
|
||||||
# global vars
|
# global vars
|
||||||
transport = SerialTransport(args.port, hc32xx['BootloaderBaudrate'])
|
transport = SerialTransport(args.port, hc32xx['BootloaderBaudrate'], dir1=args.dir1)
|
||||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
if not args.goboot and args.reboot:
|
if not args.goboot and args.reboot:
|
||||||
|
|||||||
Reference in New Issue
Block a user