Mercurial > lcfOS
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 |