diff options
Diffstat (limited to 'demos/ARMCM0P-LPC812-LPCXPRESSO/lpc8xx_isp.py')
-rwxr-xr-x | demos/ARMCM0P-LPC812-LPCXPRESSO/lpc8xx_isp.py | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/demos/ARMCM0P-LPC812-LPCXPRESSO/lpc8xx_isp.py b/demos/ARMCM0P-LPC812-LPCXPRESSO/lpc8xx_isp.py deleted file mode 100755 index 13f976bf9..000000000 --- a/demos/ARMCM0P-LPC812-LPCXPRESSO/lpc8xx_isp.py +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env python -import serial -import array - -#========================================================= -PORT = '/dev/ttyUSB1' -FILE = 'build/ch.bin' - -RAM_ADDR = 0x10000300 -PAGE_SIZE = 0x40 -SECTOR_SIZE = 0x400 -FLASH_SIZE = 0x4000 - -#========================================================= -ser = serial.Serial( PORT, 115200, timeout=1) - -data = array.array('B') -f = file( FILE, 'rb') -try: - data.fromfile(f, FLASH_SIZE) -except: - pass -f.close() - -## pad out to next whole page -data.fromstring( chr(0xff)*(PAGE_SIZE - (data.buffer_info()[1]%PAGE_SIZE)) ) - -#========================================================= -## fix-up LPC boot checksum -csum = 0; -for i in range(7): - csum = csum + \ - (data[(i*4)] ) + \ - (data[(i*4)+1]<<8 ) + \ - (data[(i*4)+2]<<16) + \ - (data[(i*4)+3]<<24); \ - -csum = -csum -data[28] = csum & 0xff -data[29] = csum>>8 & 0xff -data[30] = csum>>16 & 0xff -data[31] = csum>>24 & 0xff - -#========================================================= -## -ser.write('?') -resp = ser.readline() -if resp.strip() <> 'Synchronized': - print 'No Response "?"' - exit(1) - -ser.write('Synchronized\r\n') -resp = ser.readline() -resp = ser.readline() -if resp.strip() <> 'OK': - print 'Not Synchronized' - exit(1) - -ser.write('12000\r\n') -resp = ser.readline() -resp = ser.readline() -if resp.strip() <> 'OK': - print 'No Response "12000"' - exit(1) - -ser.write('A 0\r\n') -resp = ser.readline() -resp = ser.readline() -if resp.strip() <> '0': - print 'Error Response "A"', resp - exit(1) - -ser.write('J\r\n') -resp = ser.readline() -if resp.strip() <> '0': - print 'Error Response "J"', resp - exit(1) -resp = ser.readline() -print 'Device ID: ', hex(int(resp)) - -ser.write('U 23130\r\n') -resp = ser.readline() -if resp.strip() <> '0': - print 'Error Response "U"', resp - exit(1) - - -## Erase whole device -ser.write('P 0 7\r\n') -resp = ser.readline() -if resp.strip() <> '0': - print 'Error Response "P"', resp - exit(1) - -ser.write('E 0 7\r\n') -resp = ser.readline() -if resp.strip() <> '0': - print 'Error Response "P"', resp - exit(1) - - -#========================================================= -address = 0 - -while data.buffer_info()[1]: - - ser.write( "W %d %d\r\n"%(RAM_ADDR, PAGE_SIZE) ) - resp = ser.readline() - if resp.strip() <> '0': - print 'Error Response "W"', resp - exit(1) - - for i in range(PAGE_SIZE): - ser.write( chr(data.pop(0)) ) - - #print('P %x %x\r\n'%( address/SECTOR_SIZE, address/SECTOR_SIZE )) - #print('C %x %x 0xff\r\n'%( address, RAM_ADDR )) - - ## Program page - ser.write('P %d %d\r\n'%( address/SECTOR_SIZE, address/SECTOR_SIZE )) - resp = ser.readline() - if resp.strip() <> '0': - print 'Error Response "P"', resp - exit(1) - - ser.write( 'C %d %d %d\r\n'%(address, RAM_ADDR, PAGE_SIZE) ) - resp = ser.readline() - if resp.strip() <> '0': - print 'Error Response "C"', resp - exit(1) - - print '.', - address = address + PAGE_SIZE - if (address%SECTOR_SIZE) == 0: - print '' - -#========================================================= -#========================================================= - - - |