|
24 | 24 | from pyOCD.board import MbedBoard
|
25 | 25 | import argparse
|
26 | 26 |
|
27 |
| -LEVELS={'debug':logging.DEBUG, |
28 |
| - 'info':logging.INFO, |
29 |
| - 'warning':logging.WARNING, |
30 |
| - 'error':logging.ERROR, |
31 |
| - 'critical':logging.CRITICAL |
32 |
| - } |
| 27 | +LEVELS = { |
| 28 | + 'debug': logging.DEBUG, |
| 29 | + 'info': logging.INFO, |
| 30 | + 'warning': logging.WARNING, |
| 31 | + 'error': logging.ERROR, |
| 32 | + 'critical': logging.CRITICAL |
| 33 | +} |
33 | 34 |
|
34 | 35 | supported_targets = pyOCD.target.TARGET.keys()
|
35 | 36 | debug_levels = LEVELS.keys()
|
|
51 | 52 | group = parser.add_mutually_exclusive_group()
|
52 | 53 | group.add_argument("-ce", "--chip_erase", action="store_true",help="Use chip erase when programming.")
|
53 | 54 | group.add_argument("-se", "--sector_erase", action="store_true",help="Use sector erase when programming.")
|
| 55 | +# -Currently "--unlock" does nothing since kinetis parts will automatically get unlocked |
54 | 56 | parser.add_argument("-u", "--unlock", action="store_true", default=False, help="Unlock the device.")
|
55 | 57 | # reserved: "-a", "--address"
|
56 | 58 | # reserved: "-s", "--skip"
|
57 | 59 | parser.add_argument("-hp", "--hide_progress", action="store_true", help = "Don't display programming progress." )
|
58 | 60 | parser.add_argument("-fp", "--fast_program", action="store_true", help = "Use only the CRC of each page to determine if it already has the same data.")
|
59 |
| -args = parser.parse_args() |
60 | 61 |
|
61 |
| -# Notes |
62 |
| -# -Currently "--unlock" does nothing since kinetis parts will automatically get unlocked |
63 | 62 |
|
64 |
| -# Determine programming mode |
65 |
| -chip_erase = None |
66 |
| -if args.chip_erase: |
67 |
| - chip_erase = True |
68 |
| -elif args.sector_erase: |
69 |
| - chip_erase = False |
70 |
| - |
71 |
| -# Set gdb server settings |
72 |
| -gdb_server_settings = { |
73 |
| - 'break_at_hardfault' : args.break_at_hardfault, |
74 |
| - 'step_into_interrupt' : args.step_into_interrupt, |
75 |
| - 'break_on_reset' : args.break_on_reset, |
76 |
| - 'persist' : args.persist, |
77 |
| - 'soft_bkpt_as_hard' : args.soft_bkpt_as_hard, |
78 |
| - 'chip_erase' : chip_erase, |
79 |
| - 'hide_programming_progress' : args.hide_progress, |
80 |
| - 'fast_program' : args.fast_program, |
| 63 | +def get_chip_erase(args): |
| 64 | + # Determine programming mode |
| 65 | + chip_erase = None |
| 66 | + if args.chip_erase: |
| 67 | + chip_erase = True |
| 68 | + elif args.sector_erase: |
| 69 | + chip_erase = False |
| 70 | + return chip_erase |
| 71 | + |
| 72 | + |
| 73 | +def get_gdb_server_settings(args): |
| 74 | + # Set gdb server settings |
| 75 | + return { |
| 76 | + 'break_at_hardfault' : args.break_at_hardfault, |
| 77 | + 'step_into_interrupt' : args.step_into_interrupt, |
| 78 | + 'break_on_reset' : args.break_on_reset, |
| 79 | + 'persist' : args.persist, |
| 80 | + 'soft_bkpt_as_hard' : args.soft_bkpt_as_hard, |
| 81 | + 'chip_erase': get_chip_erase(args), |
| 82 | + 'hide_programming_progress' : args.hide_progress, |
| 83 | + 'fast_program' : args.fast_program, |
81 | 84 | }
|
82 | 85 |
|
83 |
| -gdb = None |
84 |
| -level = LEVELS.get(args.debug_level, logging.NOTSET) |
85 |
| -logging.basicConfig(level=level) |
86 |
| -if args.list_all == True: |
87 |
| - MbedBoard.listConnectedBoards() |
88 |
| -else: |
89 |
| - try: |
90 |
| - board_selected = MbedBoard.chooseBoard(board_id = args.board_id, target_override = args.target_override, frequency = args.frequency) |
91 |
| - with board_selected as board: |
92 |
| - # Boost speed with deferred transfers |
93 |
| - board.transport.setDeferredTransfer(True) |
94 |
| - gdb = GDBServer(board, args.port_number, gdb_server_settings) |
95 |
| - while gdb.isAlive(): |
96 |
| - gdb.join(timeout = 0.5) |
97 |
| - except KeyboardInterrupt: |
98 |
| - if gdb != None: |
99 |
| - gdb.stop() |
100 |
| - except Exception as e: |
101 |
| - print "uncaught exception: %s" % e |
102 |
| - traceback.print_exc() |
103 |
| - if gdb != None: |
104 |
| - gdb.stop() |
| 86 | + |
| 87 | +def setup_logging(args): |
| 88 | + level = LEVELS.get(args.debug_level, logging.NOTSET) |
| 89 | + logging.basicConfig(level=level) |
| 90 | + |
| 91 | + |
| 92 | +def main(): |
| 93 | + args = parser.parse_args() |
| 94 | + gdb_server_settings = get_gdb_server_settings(args) |
| 95 | + setup_logging(args) |
| 96 | + |
| 97 | + gdb = None |
| 98 | + if args.list_all == True: |
| 99 | + MbedBoard.listConnectedBoards() |
| 100 | + else: |
| 101 | + try: |
| 102 | + board_selected = MbedBoard.chooseBoard( |
| 103 | + board_id=args.board_id, |
| 104 | + target_override=args.target_override, |
| 105 | + frequency=args.frequency) |
| 106 | + with board_selected as board: |
| 107 | + # Boost speed with deferred transfers |
| 108 | + board.transport.setDeferredTransfer(True) |
| 109 | + gdb = GDBServer(board, args.port_number, gdb_server_settings) |
| 110 | + while gdb.isAlive(): |
| 111 | + gdb.join(timeout=0.5) |
| 112 | + except KeyboardInterrupt: |
| 113 | + if gdb != None: |
| 114 | + gdb.stop() |
| 115 | + except Exception as e: |
| 116 | + print "uncaught exception: %s" % e |
| 117 | + traceback.print_exc() |
| 118 | + if gdb != None: |
| 119 | + gdb.stop() |
| 120 | + |
| 121 | +if __name__ == '__main__': |
| 122 | + main() |
0 commit comments