Import xPack OpenOCD 0.12.0-7 and GNU Make 4.4.1 from x86_64-w64-mingw32.
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# Copy this file to /etc/udev/rules.d/
|
||||
# If rules fail to reload automatically, you can refresh udev rules
|
||||
# with the command "udevadm control --reload"
|
||||
|
||||
ACTION!="add|change", GOTO="openocd_rules_end"
|
||||
|
||||
SUBSYSTEM=="gpio", MODE="0660", GROUP="plugdev", TAG+="uaccess"
|
||||
|
||||
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"
|
||||
|
||||
# Please keep this list sorted by VID:PID
|
||||
|
||||
# opendous and estick
|
||||
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204f", MODE="666"
|
||||
|
||||
# Original FT232/FT245 VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="666"
|
||||
|
||||
# Original FT2232 VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="666"
|
||||
|
||||
# Original FT4232 VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="666"
|
||||
|
||||
# Original FT232H VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="666"
|
||||
# Original FT231XQ VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="666"
|
||||
|
||||
# Original FT2233HP VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6040", MODE="666"
|
||||
|
||||
# Original FT4233HP VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6041", MODE="666"
|
||||
|
||||
# Original FT2232HP VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6042", MODE="666"
|
||||
|
||||
# Original FT4232HP VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6043", MODE="666"
|
||||
|
||||
# Original FT233HP VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6044", MODE="666"
|
||||
|
||||
# Original FT232HP VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6045", MODE="666"
|
||||
|
||||
# Original FT4232HA VID:PID
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6048", MODE="666"
|
||||
|
||||
# DISTORTEC JTAG-lock-pick Tiny 2
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8220", MODE="666"
|
||||
|
||||
# TUMPA, TUMPA Lite
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="666"
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a99", MODE="666"
|
||||
|
||||
# Marvell OpenRD JTAGKey FT2232D B
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="9e90", MODE="666"
|
||||
|
||||
# XDS100v2
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", MODE="666"
|
||||
# XDS100v3
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d1", MODE="666"
|
||||
|
||||
# OOCDLink
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="baf8", MODE="666"
|
||||
|
||||
# Kristech KT-Link
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bbe2", MODE="666"
|
||||
|
||||
# Xverve Signalyzer Tool (DT-USB-ST), Signalyzer LITE (DT-USB-SLITE)
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca0", MODE="666"
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca1", MODE="666"
|
||||
|
||||
# TI/Luminary Stellaris Evaluation Board FTDI (several)
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcd9", MODE="666"
|
||||
|
||||
# TI/Luminary Stellaris In-Circuit Debug Interface FTDI (ICDI) Board
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcda", MODE="666"
|
||||
|
||||
# egnite Turtelizer 2
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bdc8", MODE="666"
|
||||
|
||||
# Section5 ICEbear
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c140", MODE="666"
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c141", MODE="666"
|
||||
|
||||
# Amontec JTAGkey and JTAGkey-tiny
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="666"
|
||||
|
||||
# ASIX Presto programmer
|
||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="f1a0", MODE="666"
|
||||
|
||||
# Nuvoton NuLink
|
||||
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="511b", MODE="666"
|
||||
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="511c", MODE="666"
|
||||
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="511d", MODE="666"
|
||||
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5200", MODE="666"
|
||||
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5201", MODE="666"
|
||||
|
||||
# TI ICDI
|
||||
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="c32a", MODE="666"
|
||||
|
||||
# STMicroelectronics ST-LINK V1
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", MODE="666"
|
||||
|
||||
# STMicroelectronics ST-LINK/V2
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="666"
|
||||
|
||||
# STMicroelectronics ST-LINK/V2.1
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="666"
|
||||
|
||||
# STMicroelectronics STLINK-V3
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3754", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3755", MODE="666"
|
||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3757", MODE="666"
|
||||
|
||||
# Cypress SuperSpeed Explorer Kit
|
||||
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="0007", MODE="666"
|
||||
|
||||
# Cypress KitProg in KitProg mode
|
||||
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="f139", MODE="666"
|
||||
|
||||
# Cypress KitProg in CMSIS-DAP mode
|
||||
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="f138", MODE="666"
|
||||
|
||||
# Infineon DAP miniWiggler v3
|
||||
ATTRS{idVendor}=="058b", ATTRS{idProduct}=="0043", MODE="666"
|
||||
|
||||
# Hitex LPC1768-Stick
|
||||
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="0026", MODE="666"
|
||||
|
||||
# Hilscher NXHX Boards
|
||||
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="0028", MODE="666"
|
||||
|
||||
# Hitex STR9-comStick
|
||||
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="002c", MODE="666"
|
||||
|
||||
# Hitex STM32-PerformanceStick
|
||||
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="002d", MODE="666"
|
||||
|
||||
# Hitex Cortino
|
||||
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="0032", MODE="666"
|
||||
|
||||
# Altera USB Blaster
|
||||
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="666"
|
||||
# Altera USB Blaster2
|
||||
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE="666"
|
||||
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE="666"
|
||||
|
||||
# Ashling Opella-LD
|
||||
ATTRS{idVendor}=="0B6B", ATTRS{idProduct}=="0040", MODE="666"
|
||||
|
||||
# Amontec JTAGkey-HiSpeed
|
||||
ATTRS{idVendor}=="0fbb", ATTRS{idProduct}=="1000", MODE="666"
|
||||
|
||||
# SEGGER J-Link
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0102", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0103", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0104", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0105", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0107", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0108", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1010", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1011", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1012", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1013", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1014", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1015", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1016", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1017", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1018", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1020", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1051", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1055", MODE="666"
|
||||
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1061", MODE="666"
|
||||
|
||||
# Raisonance RLink
|
||||
ATTRS{idVendor}=="138e", ATTRS{idProduct}=="9000", MODE="666"
|
||||
|
||||
# Debug Board for Neo1973
|
||||
ATTRS{idVendor}=="1457", ATTRS{idProduct}=="5118", MODE="666"
|
||||
|
||||
# Microchip RISC-V Debug
|
||||
ATTRS{idVendor}=="1514", ATTRS{idProduct}=="2008", MODE="666"
|
||||
ATTRS{idVendor}=="1514", ATTRS{idProduct}=="200a", MODE="666"
|
||||
|
||||
# OSBDM
|
||||
ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0042", MODE="666"
|
||||
ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0058", MODE="666"
|
||||
ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="005e", MODE="666"
|
||||
|
||||
# Olimex ARM-USB-OCD
|
||||
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="666"
|
||||
|
||||
# Olimex ARM-USB-OCD-TINY
|
||||
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0004", MODE="666"
|
||||
|
||||
# Olimex ARM-JTAG-EW
|
||||
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="001e", MODE="666"
|
||||
|
||||
# Olimex ARM-USB-OCD-TINY-H
|
||||
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="666"
|
||||
|
||||
# Olimex ARM-USB-OCD-H
|
||||
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002b", MODE="666"
|
||||
|
||||
# ixo-usb-jtag - Emulation of a Altera Bus Blaster I on a Cypress FX2 IC
|
||||
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="06ad", MODE="666"
|
||||
|
||||
# USBprog with OpenOCD firmware
|
||||
ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c63", MODE="666"
|
||||
|
||||
# WCH CH347T chip in mode 3
|
||||
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55dd", MODE="666"
|
||||
# WCH CH347F chip
|
||||
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55de", MODE="666"
|
||||
|
||||
# TI/Luminary Stellaris In-Circuit Debug Interface (ICDI) Board
|
||||
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="666"
|
||||
|
||||
# TI XDS110 Debug Probe (Launchpads and Standalone)
|
||||
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="bef3", MODE="666"
|
||||
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="bef4", MODE="666"
|
||||
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="02a5", MODE="666"
|
||||
|
||||
# TI Tiva-based ICDI and XDS110 probes in DFU mode
|
||||
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00ff", MODE="666"
|
||||
|
||||
# isodebug v1
|
||||
ATTRS{idVendor}=="22b7", ATTRS{idProduct}=="150d", MODE="666"
|
||||
|
||||
# PLS USB/JTAG Adapter for SPC5xxx
|
||||
ATTRS{idVendor}=="263d", ATTRS{idProduct}=="4001", MODE="666"
|
||||
|
||||
# Numato Mimas A7 - Artix 7 FPGA Board
|
||||
ATTRS{idVendor}=="2a19", ATTRS{idProduct}=="1009", MODE="666"
|
||||
|
||||
# Ambiq Micro EVK and Debug boards.
|
||||
ATTRS{idVendor}=="2aec", ATTRS{idProduct}=="6010", MODE="666"
|
||||
ATTRS{idVendor}=="2aec", ATTRS{idProduct}=="6011", MODE="666"
|
||||
ATTRS{idVendor}=="2aec", ATTRS{idProduct}=="1106", MODE="666"
|
||||
|
||||
# Espressif USB JTAG/serial debug units
|
||||
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="666"
|
||||
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1002", MODE="666"
|
||||
|
||||
# ANGIE USB-JTAG Adapter
|
||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="414f", MODE="666"
|
||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="424e", MODE="666"
|
||||
ATTRS{idVendor}=="584e", ATTRS{idProduct}=="4a55", MODE="666"
|
||||
|
||||
# Marvell Sheevaplug
|
||||
ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", MODE="666"
|
||||
|
||||
# Keil Software, Inc. ULink
|
||||
ATTRS{idVendor}=="c251", ATTRS{idProduct}=="2710", MODE="666"
|
||||
ATTRS{idVendor}=="c251", ATTRS{idProduct}=="2750", MODE="666"
|
||||
|
||||
# CMSIS-DAP compatible adapters
|
||||
ATTRS{product}=="*CMSIS-DAP*", MODE="666"
|
||||
|
||||
LABEL="openocd_rules_end"
|
||||
@@ -0,0 +1,18 @@
|
||||
This code is an example of using the openocd debug message system.
|
||||
|
||||
Before the message output is seen in the debug window, the functionality
|
||||
will need enabling:
|
||||
|
||||
From the gdb prompt:
|
||||
monitor target_request debugmsgs enable
|
||||
monitor trace point 1
|
||||
|
||||
From the Telnet prompt:
|
||||
target_request debugmsgs enable
|
||||
trace point 1
|
||||
|
||||
To see how many times the trace point was hit:
|
||||
(monitor) trace point 1
|
||||
|
||||
Spen
|
||||
spen@spen-soft.co.uk
|
||||
@@ -0,0 +1,144 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2008 by Dominic Rath *
|
||||
* Dominic.Rath@gmx.de *
|
||||
* Copyright (C) 2008 by Spencer Oliver *
|
||||
* spen@spen-soft.co.uk *
|
||||
* Copyright (C) 2008 by Frederik Kriewtz *
|
||||
* frederik@kriewitz.eu *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dcc_stdio.h"
|
||||
|
||||
#define TARGET_REQ_TRACEMSG 0x00
|
||||
#define TARGET_REQ_DEBUGMSG_ASCII 0x01
|
||||
#define TARGET_REQ_DEBUGMSG_HEXMSG(size) (0x01 | ((size & 0xff) << 8))
|
||||
#define TARGET_REQ_DEBUGCHAR 0x02
|
||||
|
||||
#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_6SM__)
|
||||
|
||||
/* we use the System Control Block DCRDR reg to simulate a arm7_9 dcc channel
|
||||
* DCRDR[7:0] is used by target for status
|
||||
* DCRDR[15:8] is used by target for write buffer
|
||||
* DCRDR[23:16] is used for by host for status
|
||||
* DCRDR[31:24] is used for by host for write buffer */
|
||||
|
||||
#define NVIC_DBG_DATA_R (*((volatile unsigned short *)0xE000EDF8))
|
||||
|
||||
#define BUSY 1
|
||||
|
||||
void dbg_write(unsigned long dcc_data)
|
||||
{
|
||||
int len = 4;
|
||||
|
||||
while (len--)
|
||||
{
|
||||
/* wait for data ready */
|
||||
while (NVIC_DBG_DATA_R & BUSY);
|
||||
|
||||
/* write our data and set write flag - tell host there is data*/
|
||||
NVIC_DBG_DATA_R = (unsigned short)(((dcc_data & 0xff) << 8) | BUSY);
|
||||
dcc_data >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5T__)
|
||||
|
||||
void dbg_write(unsigned long dcc_data)
|
||||
{
|
||||
unsigned long dcc_status;
|
||||
|
||||
do {
|
||||
asm volatile("mrc p14, 0, %0, c0, c0" : "=r" (dcc_status));
|
||||
} while (dcc_status & 0x2);
|
||||
|
||||
asm volatile("mcr p14, 0, %0, c1, c0" : : "r" (dcc_data));
|
||||
}
|
||||
|
||||
#else
|
||||
#error unsupported target
|
||||
#endif
|
||||
|
||||
void dbg_trace_point(unsigned long number)
|
||||
{
|
||||
dbg_write(TARGET_REQ_TRACEMSG | (number << 8));
|
||||
}
|
||||
|
||||
void dbg_write_u32(const unsigned long *val, long len)
|
||||
{
|
||||
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(4) | ((len & 0xffff) << 16));
|
||||
|
||||
while (len > 0)
|
||||
{
|
||||
dbg_write(*val);
|
||||
|
||||
val++;
|
||||
len--;
|
||||
}
|
||||
}
|
||||
|
||||
void dbg_write_u16(const unsigned short *val, long len)
|
||||
{
|
||||
unsigned long dcc_data;
|
||||
|
||||
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(2) | ((len & 0xffff) << 16));
|
||||
|
||||
while (len > 0)
|
||||
{
|
||||
dcc_data = val[0]
|
||||
| ((len > 1) ? val[1] << 16: 0x0000);
|
||||
|
||||
dbg_write(dcc_data);
|
||||
|
||||
val += 2;
|
||||
len -= 2;
|
||||
}
|
||||
}
|
||||
|
||||
void dbg_write_u8(const unsigned char *val, long len)
|
||||
{
|
||||
unsigned long dcc_data;
|
||||
|
||||
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(1) | ((len & 0xffff) << 16));
|
||||
|
||||
while (len > 0)
|
||||
{
|
||||
dcc_data = val[0]
|
||||
| ((len > 1) ? val[1] << 8 : 0x00)
|
||||
| ((len > 2) ? val[2] << 16 : 0x00)
|
||||
| ((len > 3) ? val[3] << 24 : 0x00);
|
||||
|
||||
dbg_write(dcc_data);
|
||||
|
||||
val += 4;
|
||||
len -= 4;
|
||||
}
|
||||
}
|
||||
|
||||
void dbg_write_str(const char *msg)
|
||||
{
|
||||
long len;
|
||||
unsigned long dcc_data;
|
||||
|
||||
for (len = 0; msg[len] && (len < 65536); len++);
|
||||
|
||||
dbg_write(TARGET_REQ_DEBUGMSG_ASCII | ((len & 0xffff) << 16));
|
||||
|
||||
while (len > 0)
|
||||
{
|
||||
dcc_data = msg[0]
|
||||
| ((len > 1) ? msg[1] << 8 : 0x00)
|
||||
| ((len > 2) ? msg[2] << 16 : 0x00)
|
||||
| ((len > 3) ? msg[3] << 24 : 0x00);
|
||||
dbg_write(dcc_data);
|
||||
|
||||
msg += 4;
|
||||
len -= 4;
|
||||
}
|
||||
}
|
||||
|
||||
void dbg_write_char(char msg)
|
||||
{
|
||||
dbg_write(TARGET_REQ_DEBUGCHAR | ((msg & 0xff) << 16));
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2008 by Dominic Rath *
|
||||
* Dominic.Rath@gmx.de *
|
||||
* Copyright (C) 2008 by Spencer Oliver *
|
||||
* spen@spen-soft.co.uk *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DCC_STDIO_H
|
||||
#define DCC_STDIO_H
|
||||
|
||||
void dbg_trace_point(unsigned long number);
|
||||
|
||||
void dbg_write_u32(const unsigned long *val, long len);
|
||||
void dbg_write_u16(const unsigned short *val, long len);
|
||||
void dbg_write_u8(const unsigned char *val, long len);
|
||||
|
||||
void dbg_write_str(const char *msg);
|
||||
void dbg_write_char(char msg);
|
||||
|
||||
#endif /* DCC_STDIO_H */
|
||||
@@ -0,0 +1,45 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2008 by Spencer Oliver *
|
||||
* spen@spen-soft.co.uk *
|
||||
* Copyright (C) 2008 by Frederik Kriewtz *
|
||||
* frederik@kriewitz.eu *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dcc_stdio.h"
|
||||
|
||||
/* enable openocd debugmsg at the gdb prompt:
|
||||
* monitor target_request debugmsgs enable
|
||||
*
|
||||
* create a trace point:
|
||||
* monitor trace point 1
|
||||
*
|
||||
* to show how often the trace point was hit:
|
||||
* monitor trace point
|
||||
*/
|
||||
|
||||
int main(void)
|
||||
{
|
||||
dbg_write_str("hello world");
|
||||
|
||||
dbg_write_char('t');
|
||||
dbg_write_char('e');
|
||||
dbg_write_char('s');
|
||||
dbg_write_char('t');
|
||||
dbg_write_char('\n');
|
||||
|
||||
unsigned long test_u32 = 0x01234567;
|
||||
dbg_write_u32(&test_u32, 1);
|
||||
|
||||
static const unsigned short test_u16[] = {0x0123, 0x4567, 0x89AB, 0xCDEF, 0x0123, 0x4567, 0x89AB, 0xCDEF};
|
||||
dbg_write_u16(test_u16, 8);
|
||||
|
||||
static const unsigned char test_u8[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0XDD, 0xEE, 0xFF};
|
||||
dbg_write_u8(test_u8, 16);
|
||||
|
||||
while(1)
|
||||
{
|
||||
dbg_trace_point(0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user