From 63b72b910500c542fed0ffce7d0fc651fed13b7b Mon Sep 17 00:00:00 2001 From: "Evgeni (Rush) Nepomniashchi" Date: Wed, 28 Nov 2012 11:18:18 +0400 Subject: [PATCH] we can readback preloader version --- src/readback/readback | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 src/readback/readback diff --git a/src/readback/readback b/src/readback/readback new file mode 100755 index 0000000..971773b --- /dev/null +++ b/src/readback/readback @@ -0,0 +1,56 @@ +#!/usr/bin/env python + +import sys +import serial +import os.path +import time +from struct import pack, unpack +from socket import ntohs + +class MTKSerial(serial.Serial): + + def echo(self, command): + self.flushInput() + self.write(command) + self.flush() + return port.read(len(command)) + +if __name__ == '__main__': + + print 'waiting device connected' + while not os.path.exists('/dev/ttyACM0'): + time.sleep(1) + print '.', + print + + port = None + connected = False + while not connected: + print 'opening port' + try: + port = MTKSerial('/dev/ttyACM0', 921600, timeout = 1 ) + connected = True + except serial.serialutil.SerialException: + print 'port is busy' + + print 'reading startup sequence' + echo = port.read(10) + if 'READY' not in echo: + raise Exception('device not ready') + + print 'device ready, trying to be master' + + mastered = False + while not mastered: + mastered = port.echo("\xA0") == "\x5F" + + print 'device agreed to be slave, completing sequence' + assert port.echo("\x0A") == "\xF5" + assert port.echo("\x50") == "\xAF" + assert port.echo("\x05") == "\xFA" + + print 'device communication channel is ok, asking preloader version' + assert port.echo("\xFD") == "\xFD" + version, status = unpack('hh', port.read(4)) + print 'status:', ntohs(status) + print 'preloader version reported:', hex(ntohs(version))