Skip to content

Commit 08a1854

Browse files
committed
Book: section on logging checksum and RCS "ident" strings on upload; trouble-shooting TRACESWO, plus minor edits.
BMDebug: "info svd" command for peripheral and register documentation. BMFlash: add log-file option for successful downloads. Clean-up/refactor code of the utilities.
1 parent 66be2d5 commit 08a1854

30 files changed

+5623
-3653
lines changed

‎BlackMagicProbe.pdf‎

17.3 KB
Binary file not shown.

‎doc/BlackMagicProbe.odt‎

6.64 KB
Binary file not shown.

‎doc/blackmagicprobe_bottom2.jpg‎

200 KB
Loading

‎source/Makefile.linux‎

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,26 +73,26 @@ endif
7373
# Project
7474
# -------------------------------------------------------------
7575

76-
OBJLIST_BMDEBUG = bmdebug.o bmp-scan.o bmp-script.o dwarf.o elf.o \
76+
OBJLIST_BMDEBUG = bmdebug.o bmcommon.o bmp-scan.o bmp-script.o dwarf.o elf.o \
7777
guidriver.o memdump.o minIni.o nuklear_mousepointer.o \
78-
nuklear_style.o nuklear_tooltip.o rs232.o serialmon.o \
79-
specialfolder.o svd-support.o swotrace.o tcpip.o \
80-
xmltractor.o decodectf.o parsetsdl.o \
78+
nuklear_splitter.o nuklear_style.o nuklear_tooltip.o \
79+
rs232.o serialmon.o specialfolder.o svd-support.o \
80+
swotrace.o tcpip.o xmltractor.o decodectf.o parsetsdl.o \
8181
nuklear.o nuklear_glfw_gl2.o noc_file_dialog.o \
8282
findfont.o lodepng.o
8383

84-
OBJLIST_BMFLASH = bmflash.o bmp-scan.o bmp-script.o bmp-support.o crc32.o \
85-
elf.o gdb-rsp.o guidriver.o minIni.o nuklear_mousepointer.o \
86-
nuklear_style.o nuklear_tooltip.o picoro.o rs232.o \
87-
specialfolder.o tcpip.o xmltractor.o \
84+
OBJLIST_BMFLASH = bmflash.o bmcommon.o bmp-scan.o bmp-script.o bmp-support.o \
85+
cksum.o crc32.o elf.o gdb-rsp.o guidriver.o ident.o minIni.o \
86+
nuklear_mousepointer.o nuklear_style.o nuklear_tooltip.o \
87+
picoro.o rs232.o specialfolder.o tcpip.o xmltractor.o \
8888
nuklear.o nuklear_glfw_gl2.o noc_file_dialog.o \
8989
findfont.o lodepng.o
9090

91-
OBJLIST_BMTRACE = bmtrace.o bmp-scan.o bmp-script.o bmp-support.o crc32.o \
92-
dwarf.o elf.o gdb-rsp.o guidriver.o minIni.o \
93-
nuklear_style.o nuklear_mousepointer.o nuklear_tooltip.o \
94-
picoro.o rs232.o specialfolder.o swotrace.o tcpip.o \
95-
xmltractor.o decodectf.o parsetsdl.o \
91+
OBJLIST_BMTRACE = bmtrace.o bmcommon.o bmp-scan.o bmp-script.o bmp-support.o \
92+
crc32.o dwarf.o elf.o gdb-rsp.o guidriver.o minIni.o \
93+
nuklear_splitter.o nuklear_style.o nuklear_mousepointer.o \
94+
nuklear_tooltip.o picoro.o rs232.o specialfolder.o swotrace.o \
95+
tcpip.o xmltractor.o decodectf.o parsetsdl.o \
9696
nuklear.o nuklear_glfw_gl2.o noc_file_dialog.o \
9797
findfont.o lodepng.o
9898

@@ -113,6 +113,8 @@ depend :
113113

114114
##### C files #####
115115

116+
bmcommon.o : bmcommon.c
117+
116118
bmdebug.o : bmdebug.c
117119

118120
bmflash.o : bmflash.c
@@ -127,6 +129,8 @@ bmp-script.o : bmp-script.c
127129

128130
bmp-support.o : bmp-support.c
129131

132+
cksum.o : cksum.c
133+
130134
crc32.o : crc32.c
131135

132136
decodectf.ob : decodectf.c
@@ -143,6 +147,8 @@ gdb-rsp.o : gdb-rsp.c
143147

144148
guidriver.o : guidriver.c
145149

150+
ident.o : ident.c
151+
146152
lodepng.o : lodepng.c
147153

148154
memdump.o : memdump.c
@@ -155,6 +161,8 @@ noc_file_dialog.o : noc_file_dialog.c
155161

156162
nuklear_mousepointer.o : nuklear_mousepointer.c
157163

164+
nuklear_splitter.o : nuklear_splitter.c
165+
158166
nuklear_style.o : nuklear_style.c
159167

160168
nuklear_tooltip.o : nuklear_tooltip.c

‎source/Makefile.mingw‎

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,24 +69,24 @@ endif
6969
# Project
7070
# -------------------------------------------------------------
7171

72-
OBJLIST_BMDEBUG = bmdebug.o bmp-scan.o bmp-script.o dwarf.o elf.o \
72+
OBJLIST_BMDEBUG = bmdebug.o bmcommon.o bmp-scan.o bmp-script.o dwarf.o elf.o \
7373
guidriver.o memdump.o minIni.o nuklear_mousepointer.o \
74-
nuklear_style.o nuklear_tooltip.o rs232.o serialmon.o \
75-
specialfolder.o strlcpy.o svd-support.o swotrace.o tcpip.o \
76-
usb-support.o xmltractor.o decodectf.o parsetsdl.o \
74+
nuklear_splitter.o nuklear_style.o nuklear_tooltip.o rs232.o \
75+
serialmon.o specialfolder.o strlcpy.o svd-support.o swotrace.o \
76+
tcpip.o usb-support.o xmltractor.o decodectf.o parsetsdl.o \
7777
nuklear.o nuklear_gdip.o noc_file_dialog.o
7878

79-
OBJLIST_BMFLASH = bmflash.o bmp-scan.o bmp-script.o bmp-support.o crc32.o \
80-
elf.o gdb-rsp.o guidriver.o minIni.o nuklear_mousepointer.o \
81-
nuklear_style.o nuklear_tooltip.o picoro.o rs232.o \
82-
specialfolder.o strlcpy.o tcpip.o xmltractor.o \
79+
OBJLIST_BMFLASH = bmflash.o bmcommon.o bmp-scan.o bmp-script.o bmp-support.o \
80+
cksum.o crc32.o elf.o gdb-rsp.o guidriver.o ident.o minIni.o \
81+
nuklear_mousepointer.o nuklear_style.o nuklear_tooltip.o \
82+
picoro.o rs232.o specialfolder.o strlcpy.o tcpip.o xmltractor.o \
8383
nuklear.o nuklear_gdip.o noc_file_dialog.o
8484

85-
OBJLIST_BMTRACE = bmtrace.o bmp-scan.o bmp-script.o bmp-support.o crc32.o \
85+
OBJLIST_BMTRACE = bmtrace.o bmcommon.o bmp-scan.o bmp-script.o bmp-support.o crc32.o \
8686
dwarf.o elf.o gdb-rsp.o guidriver.o minIni.o \
87-
nuklear_mousepointer.o nuklear_style.o nuklear_tooltip.o \
88-
picoro.o rs232.o specialfolder.o swotrace.o strlcpy.o \
89-
tcpip.o usb-support.o xmltractor.o decodectf.o parsetsdl.o \
87+
nuklear_mousepointer.o nuklear_splitter.o nuklear_style.o \
88+
nuklear_tooltip.o picoro.o rs232.o specialfolder.o swotrace.o \
89+
strlcpy.o tcpip.o usb-support.o xmltractor.o decodectf.o parsetsdl.o \
9090
nuklear.o nuklear_gdip.o noc_file_dialog.o
9191

9292
OBJLIST_BMSCAN = bmscan.o bmp-scan.o tcpip.o
@@ -106,6 +106,8 @@ depend :
106106

107107
##### C files #####
108108

109+
bmcommon.o : bmcommon.c
110+
109111
bmdebug.o : bmdebug.c
110112

111113
bmflash.o : bmflash.c
@@ -120,6 +122,8 @@ bmp-script.o : bmp-script.c
120122

121123
bmp-support.o : bmp-support.c
122124

125+
cksum.o : cksum.c
126+
123127
crc32.o : crc32.c
124128

125129
decodectf.ob : decodectf.c
@@ -134,6 +138,8 @@ gdb-rsp.o : gdb-rsp.c
134138

135139
guidriver.o : guidriver.c
136140

141+
ident.o :ident.c
142+
137143
memdump.o : memdump.c
138144

139145
minIni.o : minIni.c
@@ -143,6 +149,8 @@ noc_file_dialog.o : noc_file_dialog.c
143149

144150
nuklear_mousepointer.o : nuklear_mousepointer.c
145151

152+
nuklear_splitter.o : nuklear_splitter.c
153+
146154
nuklear_style.o : nuklear_style.c
147155

148156
nuklear_tooltip.o : nuklear_tooltip.c

‎source/Makefile.msvc‎

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,25 +63,27 @@ LFLAGS_C = $(L_DEBUG) /NOLOGO /SUBSYSTEM:console
6363
# Project
6464
# -------------------------------------------------------------
6565

66-
OBJLIST_BMDEBUG = bmdebug.obj bmp-scan.obj bmp-script.obj dirent.obj dwarf.obj \
67-
elf.obj guidriver.obj memdump.obj minIni.obj \
68-
nuklear_mousepointer.obj nuklear_style.obj nuklear_tooltip.obj \
69-
rs232.obj serialmon.obj specialfolder.obj strlcpy.obj \
70-
svd-support.obj swotrace.obj tcpip.obj usb-support.obj \
66+
OBJLIST_BMDEBUG = bmdebug.obj bmcommon.obj bmp-scan.obj bmp-script.obj dirent.obj \
67+
dwarf.obj elf.obj guidriver.obj memdump.obj minIni.obj \
68+
nuklear_mousepointer.obj nuklear_splitter.obj nuklear_style.obj \
69+
nuklear_tooltip.obj rs232.obj serialmon.obj specialfolder.obj \
70+
strlcpy.obj svd-support.obj swotrace.obj tcpip.obj usb-support.obj \
7171
xmltractor.obj decodectf.obj parsetsdl.obj \
7272
nuklear.obj nuklear_gdip.obj noc_file_dialog.obj
7373

74-
OBJLIST_BMFLASH = bmflash.obj bmp-scan.obj bmp-script.obj bmp-support.obj crc32.obj \
75-
elf.obj gdb-rsp.obj guidriver.obj minIni.obj nuklear_mousepointer.obj \
76-
nuklear_style.obj nuklear_tooltip.obj picoro.obj rs232.obj \
77-
specialfolder.obj strlcpy.obj tcpip.obj xmltractor.obj \
74+
OBJLIST_BMFLASH = bmflash.obj bmcommon.obj bmp-scan.obj bmp-script.obj bmp-support.obj \
75+
cksum.obj crc32.obj elf.obj gdb-rsp.obj guidriver.obj ident.obj \
76+
minIni.obj nuklear_mousepointer.obj nuklear_style.obj nuklear_tooltip.obj \
77+
picoro.obj rs232.obj specialfolder.obj strlcpy.obj tcpip.obj \
78+
xmltractor.obj \
7879
nuklear.obj nuklear_gdip.obj noc_file_dialog.obj
7980

80-
OBJLIST_BMTRACE = bmtrace.obj bmp-scan.obj bmp-script.obj bmp-support.obj crc32.obj \
81-
dwarf.obj elf.obj gdb-rsp.obj guidriver.obj minIni.obj \
82-
nuklear_mousepointer.obj nuklear_style.obj nuklear_tooltip.obj \
83-
picoro.obj rs232.obj specialfolder.obj swotrace.obj strlcpy.obj \
84-
tcpip.obj usb-support.obj xmltractor.obj decodectf.obj parsetsdl.obj \
81+
OBJLIST_BMTRACE = bmtrace.obj bmcommon.obj bmp-scan.obj bmp-script.obj bmp-support.obj \
82+
crc32.obj dwarf.obj elf.obj gdb-rsp.obj guidriver.obj minIni.obj \
83+
nuklear_mousepointer.obj nuklear_splitter.obj nuklear_style.obj \
84+
nuklear_tooltip.obj picoro.obj rs232.obj specialfolder.obj swotrace.obj \
85+
strlcpy.obj tcpip.obj usb-support.obj xmltractor.obj decodectf.obj \
86+
parsetsdl.obj \
8587
nuklear.obj nuklear_gdip.obj noc_file_dialog.obj
8688

8789
OBJLIST_BMSCAN = bmscan.obj bmp-scan.obj tcpip.obj
@@ -101,6 +103,8 @@ depend :
101103

102104
##### C files #####
103105

106+
bmcommon.obj : bmcommon.c
107+
104108
bmdebug.obj : bmdebug.c
105109

106110
bmflash.obj : bmflash.c
@@ -115,6 +119,8 @@ bmp-script.obj : bmp-script.c
115119

116120
bmp-support.obj : bmp-support.c
117121

122+
cksum.obj : cksum.c
123+
118124
crc32.obj : crc32.c
119125

120126
decodectf.obj : decodectf.c
@@ -131,6 +137,8 @@ gdb-rsp.obj : gdb-rsp.c
131137

132138
guidriver.obj : guidriver.c
133139

140+
ident.obj : ident.c
141+
134142
memdump.obj : memdump.c
135143

136144
minIni.obj : minIni.c
@@ -139,6 +147,8 @@ noc_file_dialog.obj : noc_file_dialog.c
139147

140148
nuklear_mousepointer.obj : nuklear_mousepointer.c
141149

150+
nuklear_splitter.obj : nuklear_splitter.c
151+
142152
nuklear_style.obj : nuklear_style.c
143153

144154
nuklear_tooltip.obj : nuklear_tooltip.c

‎source/bmcommon.c‎

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/*
2+
* Common functions for bmdebug, bmflash and bmtrace.
3+
*
4+
* Copyright 2021 CompuPhase
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
#include <assert.h>
19+
#include <stdlib.h>
20+
#include <string.h>
21+
#if defined WIN32 || defined _WIN32
22+
#include <direct.h>
23+
#if defined __MINGW32__ || defined __MINGW64__ || defined _MSC_VER
24+
#include "strlcpy.h"
25+
#endif
26+
#elif defined __linux__
27+
#include <bsd/string.h>
28+
#include <sys/stat.h>
29+
#include <sys/types.h>
30+
#endif
31+
#include "bmcommon.h"
32+
#include "bmp-scan.h"
33+
#include "specialfolder.h"
34+
35+
#if !defined sizearray
36+
# define sizearray(e) (sizeof(e) / sizeof((e)[0]))
37+
#endif
38+
39+
const char **get_probelist(int *probe, int *netprobe)
40+
{
41+
int usbprobes = get_bmp_count();
42+
assert(netprobe != NULL);
43+
*netprobe = (usbprobes > 0) ? usbprobes : 1;
44+
45+
const char **probelist = malloc((*netprobe+1)*sizeof(char*));
46+
if (probelist != NULL) {
47+
if (usbprobes == 0) {
48+
probelist[0] = strdup("-");
49+
} else {
50+
char portname[64];
51+
int idx;
52+
for (idx = 0; idx < usbprobes; idx++) {
53+
find_bmp(idx, BMP_IF_GDB, portname, sizearray(portname));
54+
probelist[idx] = strdup(portname);
55+
}
56+
}
57+
probelist[*netprobe] = strdup("TCP/IP");
58+
}
59+
60+
assert(probe != NULL);
61+
if (*probe == 99)
62+
*probe = *netprobe;
63+
else if (*probe > usbprobes)
64+
*probe = 0;
65+
66+
return probelist;
67+
}
68+
69+
void clear_probelist(const char **probelist, int netprobe)
70+
{
71+
if (probelist != NULL) {
72+
int idx;
73+
for (idx = 0; idx < netprobe + 1; idx++)
74+
free((void*)probelist[idx]);
75+
free((void*)probelist);
76+
}
77+
}
78+
79+
int get_configfile(char *filename, size_t maxsize, const char *basename)
80+
{
81+
assert(filename != NULL);
82+
assert(maxsize > 0);
83+
*filename = '\0';
84+
if (!folder_AppConfig(filename, maxsize))
85+
return 0;
86+
87+
strlcat(filename, DIR_SEPARATOR "BlackMagic", maxsize);
88+
#if defined _WIN32
89+
mkdir(filename);
90+
#else
91+
mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
92+
#endif
93+
strlcat(filename, DIR_SEPARATOR, maxsize);
94+
strlcat(filename, basename, maxsize);
95+
return 1;
96+
}
97+

‎source/bmcommon.h‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Common functions for bmdebug, bmflash and bmtrace.
3+
*
4+
* Copyright 2021 CompuPhase
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
#ifndef _BMCOMMON_H
19+
#define _BMCOMMON_H
20+
21+
const char **get_probelist(int *probe, int *netprobe);
22+
void clear_probelist(const char **probelist, int netprobe);
23+
24+
int get_configfile(char *filename, size_t maxsize, const char *basename);
25+
26+
#endif /* _BMCOMMON_H */

0 commit comments

Comments
 (0)