jlink-mcp
Version:
MCP server for SEGGER J-Link debug probes — LLM-driven embedded debugging with RTT, GDB server, and Trice/Pigweed support
59 lines • 2.32 kB
TypeScript
import { ProbeBackend, CommandResult, GDBServerInfo } from "./backend";
import { ProcessManager } from "../utils/process-manager";
export interface BlackMagicConfig {
/** Path to GDB binary (arm-none-eabi-gdb) */
gdbPath: string;
/** Serial port for BMP (e.g., "/dev/ttyACM0", "/dev/cu.usbmodem*") */
serialPort: string;
/** Target index when scanning (default 1) */
targetIndex: number;
/** GDB port if using networked BMP */
gdbPort: number;
}
/**
* Black Magic Probe backend.
* BMP is unique: it has a built-in GDB server on a serial port.
* We interact with it by running arm-none-eabi-gdb with commands.
* No separate GDB server process is needed.
*/
export declare class BlackMagicBackend extends ProbeBackend {
readonly type: "blackmagic";
readonly displayName = "Black Magic Probe";
private config;
private processManager;
constructor(config: Partial<BlackMagicConfig>, processManager: ProcessManager);
/** Execute GDB commands against the Black Magic Probe */
private gdbExec;
getDeviceInfo(): Promise<CommandResult>;
halt(): Promise<CommandResult>;
resume(): Promise<CommandResult>;
reset(halt?: boolean): Promise<CommandResult>;
step(): Promise<CommandResult>;
readMemory(address: number, length: number): Promise<CommandResult>;
writeMemory(address: number, value: number): Promise<CommandResult>;
readAllRegisters(): Promise<CommandResult>;
readRegister(name: string): Promise<CommandResult>;
flash(filePath: string, baseAddress?: number): Promise<CommandResult>;
erase(): Promise<CommandResult>;
setBreakpoint(address: number): Promise<CommandResult>;
clearBreakpoints(): Promise<CommandResult>;
executeRaw(commands: string[]): Promise<CommandResult>;
startGDBServer(): Promise<{
success: boolean;
message: string;
}>;
stopGDBServer(): {
success: boolean;
message: string;
};
isGDBServerRunning(): boolean;
getGDBServerStatus(): GDBServerInfo;
getGDBServerOutput(_lines?: number): string[];
supportsRTT(): boolean;
isDeviceConfigured(): boolean;
getDeviceName(): string;
setDevice(device: string): void;
listDevices(): Promise<CommandResult>;
dispose(): void;
}
//# sourceMappingURL=blackmagic.d.ts.map