X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=pyfrprog.git;a=blobdiff_plain;f=pkernel%2Fkernel.py;fp=pkernel%2Fkernel.py;h=576c6807fa11f95d6c52418985579da38ec19eb0;hp=3ebda56f3ad0952f12990f1d951df6ce1532b488;hb=97455c66228fca7dfc8d0b1f397e01e98f1e3b6c;hpb=c380c7da56e97c4430481fe7ccecb98330268726 diff --git a/pkernel/kernel.py b/pkernel/kernel.py index 3ebda56..576c680 100755 --- a/pkernel/kernel.py +++ b/pkernel/kernel.py @@ -14,6 +14,22 @@ def recvByte(): i = tty.read() return ord(i) +def recvByteTO(b): #with timeout + j = 0 + i = tty.read() + while len(i)==0 and j < 400: + time.sleep(0.03) + i = tty.read() + j = j + 1 + if j == 400: + print "ack it!" + sendByte(0x23) + if(recvByte() != 0xaa): + raise Exception #ok, something really failed + else: + if(ord(i) != b): + raise Exception + def sendByte(byte): time.sleep(0.005) # just to get sure, wait 5ms tty.write(chr(byte)) @@ -53,28 +69,16 @@ def pkernWRITE(address, size, data): print "address:", hex(address), "size:", size # send WRITE command sendByte(0x13) - if (recvByte() != 0x37): - raise Exception + recvByteTO(0x37) + # tell desired address and size sendDWord(address) sendWord(size) - if (recvByte() != 0x04): - raise Exception - print "Received Metadata." - # write binary stream of data for i in range(0, size): sendByte(data[i]) - if (recvByte() != 0x08): - raise Exception - print "Received Data." - - if (recvByte() != 0x28): - raise Exception - print "Flashing done." - class FlashSequence(object): def __init__(self, address, data): @@ -147,6 +151,8 @@ for seq in flashseqs: print "Flashing", len(seq.data), "bytes at address", hex(seq.address) pkernWRITE(seq.address, len(seq.data), seq.data) -sendByte(0x99); +#sendByte(0x99); #exit and wait +#print "Reset your board now to run code from Flash" + -print "Reset your board now to run code from Flash" +sendByte(0x97); #exit and restart