comparison python/st-flash.py @ 128:51cc127648e4

Splitup in interface and device
author Windel Bouwman
date Sun, 13 Jan 2013 17:31:35 +0100
parents 90b03bc018cf
children 9e350a7dde98
comparison
equal deleted inserted replaced
127:ec1f2cc04d95 128:51cc127648e4
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 import argparse, sys 3 import argparse, sys
4 import stlink 4 import stlink, stm32
5 5
6 def hex2int(s): 6 def hex2int(s):
7 if s.startswith('0x'): 7 if s.startswith('0x'):
8 s = s[2:] 8 s = s[2:]
9 return int(s, 16) 9 return int(s, 16)
10 return int(s) 10 raise ValueError('Hexadecimal value must begin with 0x')
11 11
12 parser = argparse.ArgumentParser( 12 parser = argparse.ArgumentParser(
13 description='ST-link flash utility by Windel Bouwman') 13 description='ST-link flash utility by Windel Bouwman')
14 subparsers = parser.add_subparsers(title='commands', 14 subparsers = parser.add_subparsers(title='commands',
15 description='possible commands', dest='command') 15 description='possible commands', dest='command')
34 if not args.command: 34 if not args.command:
35 parser.print_usage() 35 parser.print_usage()
36 sys.exit(1) 36 sys.exit(1)
37 37
38 # In any command case, open a device: 38 # In any command case, open a device:
39 stl = stlink.STLink() 39 stl = stlink.STLink2()
40 stl.open() 40 stl.open()
41 41
42 # Enter the right mode: 42 # Enter the right mode:
43 if stl.CurrentMode == stlink.DFU_MODE: 43 if stl.CurrentMode == stlink.DFU_MODE:
44 stl.exitDfuMode() 44 stl.exitDfuMode()
48 48
49 if stl.ChipId != 0x10016413: 49 if stl.ChipId != 0x10016413:
50 print('Only working on stm32f4discovery board for now.') 50 print('Only working on stm32f4discovery board for now.')
51 sys.exit(2) 51 sys.exit(2)
52 52
53 # Retrieve the connected device, if any:
54 dev = stl.getDevice()
55
53 if args.command == 'read': 56 if args.command == 'read':
54 dev_content = stl.readFlash(args.address, args.size) 57 dev_content = dev.readFlash(args.address, args.size)
55 args.filename.write(dev_content) 58 args.filename.write(dev_content)
56 elif args.command == 'write': 59 elif args.command == 'write':
57 content = args.filename.read() 60 content = args.filename.read()
58 stl.writeFlash(args.address, content) 61 dev.writeFlash(args.address, content)
59 elif args.command == 'verify': 62 elif args.command == 'verify':
60 content = args.filename.read() 63 content = args.filename.read()
61 stl.verifyFlash(args.address, content) 64 dev.verifyFlash(args.address, content)
62 elif args.command == 'erase': 65 elif args.command == 'erase':
63 stl.eraseFlash() 66 dev.eraseFlash()
64 else: 67 else:
65 print('unknown command', args.command) 68 print('unknown command', args.command)
66 69
67 stl.exitDebugMode() 70 stl.exitDebugMode()
68 71