Home Getting Started Download Discussions Source Report An Issue

Bloom Insight

Bloom Insight is a graphical user interface which provides insight into the connected target. This includes access to target RAM and EEPROM, as well as all known target registers within the data address space (including the 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

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

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 memories

Bloom Insight provides access to on-chip target memories (specifically, RAM and EEPROM). During a debug session, users can inspect target memories via the memory inspection panes within the Insight window.

Bloom Insight - access target RAM & EEPROM during a debug session

Auto-refresh configuration can be accessed via the 'Refresh' tool-button's context menu. Right-click the 'Refresh' tool-button to access the context menu.

Within each memory inspection pane, users can define focused and excluded regions for a particular target memory. Regions are managed via the Memory Regions window.

Manage memory regions tool button in Bloom Insight
Manage memory regions in Bloom Insight

Focused memory regions

Focused regions aide users in inspecting a particular region within the target memory.

Adding a focused memory regions in Bloom Insight

When defining regions, the size of the region can be specified as an alternative to the end address. Bloom will adjust the end address accordingly.

Focused regions are annotated in the hex viewer.

Annotated focused memory regions in Bloom Insight

Specifying the type and endianness of the data stored in the region will allow Bloom to present the current value, in the form of a value annotation.

Selecting a data type for focused memory regions in Bloom Insight
Integer value annotation in Bloom Insight

Excluded memory regions

Excluded regions can be used to avoid accessing certain areas in memory via the memory inspection pane.

Excluded regions only apply to the memory inspection pane. Other components within Bloom (such as the debug server) will still be able to access excluded regions.

Define excluded memory regions in Bloom Insight

Excluded regions will not be read from the target memory and will be presented as follows:

Excluded memory region

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 pane.

The target registers pane was introduced in version 0.4.0.

When the registers pane 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.

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: "atmega4809" physicalInterface: "updi" variantName: "atmega4809-pf"

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.