-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlink.py
77 lines (65 loc) · 2.49 KB
/
link.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from platformio.managers.platform import PlatformBase
class P71Platform(PlatformBase):
def get_boards(self, id_=None):
result = PlatformBase.get_boards(self, id_)
if not result:
return result
if id_:
return self._add_dynamic_options(result)
else:
for key, value in result.items():
result[key] = self._add_dynamic_options(result[key])
return result
def _add_dynamic_options(self, board):
# upload protocols
if not board.get("upload.protocols", []):
board.manifest['upload']['protocols'] = ["kflash"]
if not board.get("upload.protocol", ""):
board.manifest['upload']['protocol'] = "kflash"
# debug tools
debug = board.manifest.get("debug", {})
non_debug_protocols = ["kflash"]
supported_debug_tools = [
"jlink",
"minimodule",
"olimex-arm-usb-tiny-h",
"olimex-arm-usb-ocd-h",
"olimex-arm-usb-ocd",
"olimex-jtag-tiny",
"iot-bus-jtag",
"tumpa",
"sipeed-rv-debugger"
]
upload_protocol = board.manifest.get("upload", {}).get("protocol")
upload_protocols = board.manifest.get("upload", {}).get(
"protocols", [])
upload_protocols.extend(supported_debug_tools)
if upload_protocol and upload_protocol not in upload_protocols:
upload_protocols.append(upload_protocol)
board.manifest['upload']['protocols'] = upload_protocols
if "tools" not in debug:
debug['tools'] = {}
# Only FTDI based debug probes
for link in upload_protocols:
if link in non_debug_protocols or link in debug['tools']:
continue
if link == "jlink":
openocd_interface = link
else:
openocd_interface = "ftdi/" + link
server_args = [
"-s", "$PACKAGE_DIR/share/openocd/scripts",
"-f", "interface/%s.cfg" % openocd_interface,
"-c", "adapter_khz 1000",
"-f", "target/kendryte210.cfg",
"-m", "0"
]
debug['tools'][link] = {
"server": {
"package": "tool-openocd-kendryte",
"executable": "bin/openocd",
"arguments": server_args
}
}
board.manifest['debug'] = debug
return board