1#!/usr/bin/env python3
2from pyocd.core.helpers import ConnectHelper
3from pyocd.flash.file_programmer import FileProgrammer
4from pyocd.debug.elf.symbols import ELFSymbolProvider
5from pyocd.core.target import Target
6from pyocd.debug.elf.elf  import ELFBinaryFile
7from pyocd.flash.loader import MemoryLoader
8import getserial
9
10import time
11import os.path
12
13import serial
14import re
15import io
16
17import logging
18logging.basicConfig(level=logging.ERROR)
19
20
21
22def run_out(exe_path,uuid):
23    lines= ""
24
25    with ConnectHelper.session_with_chosen_probe(unique_id = uuid) as session:
26        print("Connecting")
27        board = session.board
28        target = board.target
29        #flash = target.memory_map.get_boot_memory()
30
31        # Load firmware into device.
32        FileProgrammer(session).program(exe_path)
33
34        #target.elf = elf_path
35
36
37        #provider = ELFSymbolProvider(target.elf)
38        #main_addr = provider.get_symbol_value("main")
39        #print("main() address: 0x%X" % main_addr)
40
41        ## Set breakpoint.
42        #target.set_breakpoint(main_addr)
43
44        #target.reset()
45        lines = getserial.read_stdout(target)
46        return("".join(lines))
47        #target.resume()
48        ##
49        ##
50        #target.reset()
51        ##
52        ### Wait until breakpoint is hit.
53        #while target.get_state() != Target.State.HALTED:
54        #    pass
55        ##
56        #pc = target.read_core_register("pc")
57        #print("pc: 0x%X" % pc)
58    #
59        #target.remove_breakpoint()
60    #
61        #target.resume()
62
63if __name__ == "__main__":
64   path = "."
65   out = "cprj/out/test/MPS3-Corstone-300"
66   bin = "Release/test.axf"
67
68   axf_path = os.path.join(path,out,bin)
69
70   #axf=ELFBinaryFile(axf_path)
71   #axf.close()
72
73   lines = run_out(axf_path,"L85986697A")
74
75
76   print(lines)
77
78