Home Getting Started Download Discussions Source Report An Issue

GDB Monitor commands for debugging AVR microcontrollers on GNU/Linux

Bloom's GDB server supports a number of custom GDB commands, which can be invoked via the monitor command in avr-gdb.

(gdb) monitor [COMMAND_NAME]

Reset target

The reset command can be used to reset the connected target.

(gdb) monitor reset Target reset complete - use the 'continue' command to begin execution. (gdb)

Upon issuing the command, Bloom will reset the connected target to its reset vector, and hold it in a stopped state. Execution can then be restarted via GDB.

Generate SVD file

This command was introduced in version 0.11.0.

The svd command can be used to generate a System View Description (SVD) XML file, for the connected target.

(gdb) monitor svd SVD output saved to /path/to/project/ATxmega16C4.svd (gdb)

Upon issuing the command, Bloom will generate the SVD XML and save it to a file in the current project directory. Or, if the --out option was passed, Bloom will send the XML to GDB, to present as command output.

If the output file already exists, it will be overwritten.

For AVR targets, the peripheral base addresses in the generated SVD will be offset by 0x00800000. This offset is required by GDB, for accessing the SRAM address space on AVR targets via GDB.

The generated SVD will not include register fields. This is due to a limitation in Bloom. Report an issue to express demand for this.

Fill EEPROM

This command was introduced in version 0.12.0.

The eeprom fill command can be used to fill the target's EEPROM with a specified hexadecimal value. The value can be specified via the --value option.

(gdb) monitor eeprom fill --value=aabbcc Filled 1024 bytes of EEPROM, with values: aabbccaabbccaabbccaabbccaabbccaabbcc ... (gdb)

Upon issuing the command, Bloom will immediately fill the target's entire EEPROM with the specified value.

If the specified value is smaller than the target's EEPROM capacity, it will be repeated across the entire EEPROM address range. If the value size is not a multiple of the EEPROM capacity, the value will be truncated in the final repetition. If the value size exceeds the EEPROM capacity, the command will be rejected.

Writing to EEPROM does not require the target to be in programming mode - this means it can be done during a debug session, without requiring a target reset.

This command can be used to erase the target's EEPROM:

(gdb) monitor eeprom fill --value=ff Filled 1024 bytes of EEPROM, with values: fffffffffffffffffffffff ... (gdb)

This command can take a considerable amount of time to execute. GDB may report timeout errors in the form of "Ignoring packet error, continuing..." messages:


(gdb) monitor eeprom fill --value=aabbcc Ignoring packet error, continuing... Ignoring packet error, continuing... Filled 1024 bytes of EEPROM, with values: ... (gdb)

These messages can be ignored. To remove them, increase GDB's timeout:


(gdb) show remotetimeout Timeout limit to wait for target to respond is 2. (gdb) set remotetimeout 30 (gdb) show remotetimeout Timeout limit to wait for target to respond is 30. (gdb)

The timeout value is in seconds. The set remotetimeout 30 command will set the timeout to 30 seconds.

Other commands

Display help text

The help command can be used to display the server's help text, which describes the supported monitor commands.

(gdb) monitor help
Display version number

The version command can be used to display Bloom's current version number.

(gdb) monitor version

The version machine command can be used to display Bloom's current version number, in machine-friendly (JSON) format.

(gdb) monitor version machine