#include <string.h>
#include <unistd.h>
+unsigned int dump_swit;
/* Example ITM trace word (0xWWXXYYZZ) parsing for task events, sent
* on port 31 (Reserved for "the" RTOS in CMSIS v1.30)
unsigned code = data >> 16;
char buf[16];
+ if (dump_swit)
+ return;
+
switch (code) {
case 0:
strcpy(buf, "run");
{
unsigned i;
+ if (dump_swit)
+ return;
+
printf("%s - %#02x", label, c);
for (i = 0; (c & 0x80) && i < 4; i++) {
unsigned value;
char *label;
+ if (dump_swit)
+ return;
+
printf("DWT - ");
if (!read_varlen(f, c, &value))
unsigned value = 0;
unsigned i;
- printf("SWIT %u - ", port);
+ if (port + 1 == dump_swit) {
+ if (!read_varlen(f, c, &value))
+ return;
+ printf("%c", value);
+ return;
+ }
if (!read_varlen(f, c, &value))
return;
+
+ if (dump_swit)
+ return;
+
+ printf("SWIT %u - ", port);
+
printf("%#08x", value);
for (i = 0; i < sizeof(format) / sizeof(format[0]); i++) {
char *label = "";
bool delayed = false;
+ if (dump_swit)
+ return;
+
printf("TIMESTAMP - ");
/* Format 2: header only */
}
/* Format 1: one to four bytes of data too */
- switch (c) {
+ switch (c >> 4) {
default:
label = ", reserved control\n";
break;
int c;
/* parse arguments */
- while ((c = getopt(argc, argv, "f:")) != EOF) {
+ while ((c = getopt(argc, argv, "f:d:")) != EOF) {
switch (c) {
case 'f':
/* e.g. from UART connected to /dev/ttyUSB0 */
return 1;
}
break;
+ case 'd':
+ dump_swit = atoi(optarg);
+ break;
default:
fprintf(stderr, "usage: %s [-f input]",
basename(argv[0]));