Home Getting Started About Download Source Report An Issue

Bloom Insight

Bloom Insight is a graphical user interface that provides insight into the connected target. This includes access to all known target registers within the data address space, as well as the 32 general purpose registers found on all supported AVR 8-bit targets. Registers can be manipulated via the register inspection window.

The Insight component is optional - for those who wish to use Bloom in a headless fashion, Insight can be disabled via a configuration parameter in the project configuration file. See Disabling Bloom Insight for more.

GPIO pin states

The Insight window presents the target's GPIO pins, along with their current data direction configuration and state.

Bloom Insight - view and manipulate target GPIO pins
GPIO INPUT HIGH
GPIO OUTPUT HIGH
GPIO INPUT/OUTPUT LOW
VCC/AVCC/AREF
GND
UNKNOWN/DISABLED

Pin states are not updated in real-time. They are automatically refreshed each time the target execution is halted, a port register is updated or when the user invokes a manual refresh via the refresh button.

Pin names are truncated to four characters. Hover over them to view the whole name. For GPIO pins, pin names are highlighted when the pin state differs from the previously known state.

All pin bodies are automatically disabled upon resuming target execution.

Output pin state manipulation

With Bloom Insight, users can manipulate the state of output pins during a debug session. To toggle the state of an output pin, simply click on the pin body whilst execution on the target is halted.

This function is only available when execution on the target is halted.


Target registers

Bloom Insight provides access to all known registers in the data address space, as well as the 32 general purpose registers found on all AVR 8-bit targets supported by Bloom. The registers can be viewed by opening the registers left-hand-side panel.

The target registers panel was introduced in version 0.4.0.

When the registers panel is open and execution on the target comes to a halt, Bloom will automatically read the value of all registers and display them inline with the register name. The values are displayed in hexadecimal, decimal and ASCII text (where applicable).

Register values will be highlighted if they differ from their previously known value.

Bloom Insight - access target registers during a debug session

Target registers can be searched using the text input provided above the register list. Individual values can be refreshed and copied to the clipboard via the context menu (right click the register name to open the context menu).

Bloom Insight - search target registers Bloom Insight - copying register values to clipboard

Register manipulation

Registers can be inspected and manipulated via the register inspection window. Double click the register name or use the context menu to open the register inspection window.

Some target registers are configured to be read-only. These registers can be inspected but not manipulated via Bloom.

Along with the current value of the register, the register inspection window presents any known changes to the register value, that were made via Bloom, since the window was opened. This includes memory writes issued by the GDB client.

NOTE: Changes to the register will only be recorded once the register inspection window, for the particular register, has been opened. Any changes made beforehand will not be captured. This may change in a later release.


Bloom Insight - inspect and manipulate target registers

Register values can be manipulated via the hexadecimal text input field, or via the bitset widget. The bitset widget allows for the manipulating of individual bits - simply click on a bit to toggle it. The bitset widget is connected to the hexadecimal text input - updating one will update the other.

Bloom Insight - manipulate register value

Clicking 'Write Value' will apply the changes to the register value. This function is only available when execution on the target is halted.

For registers known to be affiliated with target pins (such as PORT registers), applying any changes to them will result in target pin states being refreshed.

Previous values can be restored by simply selecting the value from the register history list and clicking 'Write Value'.

Bloom Insight - restore previous value of register

Switching package variants

Most targets are available in numerous physical packages, with various pin counts and pin layouts. Bloom Insight currently supports DIP, SOIC, QFP and QFN variants.

By default, Bloom Insight will select the first available package variant on startup.

Bloom Insight - QFP target package variant

To select a different variant, simply click on the variant button at the bottom-right of the Bloom Insight window.

Bloom Insight - Target package variant selection

Switching package variants may result in the resizing of the Bloom Insight window.


Bloom Insight - DIP target package variant

Configuring variant selection on startup

To avoid having to switch the variant on each use, Bloom Insight can be configured to select a specific variant on startup. This can be done by specifying the variantName parameter in the project configuration file.

"target": { "name": "atmega328p", "physicalInterface": "debug-wire", "variantName": "atmega328p-pu" }

See here for more.

Disabling Bloom Insight

Bloom Insight can be disabled via a configuration parameter. This can be done at an environment or project level. See the Insight section in the configuration documentation for more on this.

Upon disabling Bloom Insight, the entire component within Bloom will cease to load. We don't just hide it from the user.