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.
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.
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.
Focused memory regions
Focused regions aide users in inspecting a particular region within the target memory.
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.
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.
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.
Excluded regions will not be read from the target memory and will be presented as follows:
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.
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).
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.
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.
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'.
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.
To select a different variant, simply click on the variant button at the bottom-right of the Bloom
Insight window.
Switching package variants may result in the resizing of the Bloom Insight window.
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.