Updated project documentation
This commit is contained in:
36
README.md
36
README.md
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
Bloom can be downloaded at https://bloom.oscillate.io/download.
|
Bloom can be downloaded at https://bloom.oscillate.io/download.
|
||||||
|
|
||||||
Bloom is a debug interface for embedded systems development on Linux. This is the official repository for Bloom's
|
Bloom is a debug interface for embedded systems development on Linux. This is the official repository for Bloom's
|
||||||
source code. For information on how to use Bloom, please visit https://bloom.oscillate.io.
|
source code. For information on how to use Bloom, please visit https://bloom.oscillate.io.
|
||||||
|
|
||||||
Bloom implements a number of user-space device drivers, enabling support for many debug tools (such as the Atmel-ICE,
|
Bloom implements a number of user-space device drivers, enabling support for many debug tools (such as the Atmel-ICE,
|
||||||
Power Debugger, MPLAB SNAP, etc). Bloom exposes an interface to the connected target, via a GDB RSP server. This allows
|
Power Debugger, MPLAB SNAP, etc). Bloom exposes an interface to the connected target, via a GDB RSP server. This allows
|
||||||
any IDE with GDB RSP client capabilities to interface with Bloom and gain full access to the target.
|
any IDE with GDB RSP client capabilities to interface with Bloom and gain full access to the target.
|
||||||
|
|
||||||
Currently, Bloom only supports AVR8 targets from Microchip. Bloom was designed to accommodate targets from different
|
Currently, Bloom only supports AVR8 targets from Microchip. Bloom was designed to accommodate targets from different
|
||||||
families and architectures. Support for other target families will be considered as and when requested.
|
families and architectures. Support for other target families will be considered as and when requested.
|
||||||
|
|
||||||
### License
|
### License
|
||||||
@@ -27,21 +27,22 @@ Bloom is a multithreaded event-driven program written in C++. It consists of fou
|
|||||||
- SignalHandler
|
- SignalHandler
|
||||||
|
|
||||||
##### TargetController
|
##### TargetController
|
||||||
The TargetController possesses full control of the connected debug tool and target. Execution of user-space
|
The TargetController possesses full control of the connected debug tool and target. Execution of user-space
|
||||||
device drivers takes place here. All interaction with the connected hardware goes through the TargetController.
|
device drivers takes place here. All interaction with the connected hardware goes through the TargetController.
|
||||||
It exposes an interface to the connected hardware via events. The TargetController runs on a dedicated thread.
|
It exposes an interface to the connected hardware via a command-response mechanism. The TargetController runs on a
|
||||||
See source code in src/TargetController/ for more.
|
dedicated thread. See the [TargetController documentation](./src/TargetController/README.md) and source code in
|
||||||
|
src/TargetController/ for more.
|
||||||
|
|
||||||
##### DebugServer
|
##### DebugServer
|
||||||
The DebugServer exposes an interface to the connected target, for third-party programs such as IDEs. Currently, Bloom
|
The DebugServer exposes an interface to the connected target, for third-party programs such as IDEs. Currently, Bloom
|
||||||
only supports one server - the AVR GDB RSP server. With this server, any IDE with GDB RSP support can interface with
|
only supports one server - the AVR GDB RSP server. With this server, any IDE with GDB RSP support can interface with
|
||||||
Bloom and thus the connected AVR target. The DebugServer runs on a dedicated thread. See the
|
Bloom and thus the connected AVR target. The DebugServer runs on a dedicated thread. See the
|
||||||
[DebugServer documentation](./src/DebugServer/README.md) and source code in src/DebugServer/ for more.
|
[DebugServer documentation](./src/DebugServer/README.md) and source code in src/DebugServer/ for more.
|
||||||
|
|
||||||
##### Insight
|
##### Insight
|
||||||
Insight is a graphical user interface that provides insight into the connected target. It presents the target's
|
Insight is a graphical user interface that provides insight into the connected target. It presents the target's
|
||||||
memories, GPIO pin states & registers, along with the ability to manipulate them. Insight occupies Bloom's main thread
|
memories, GPIO pin states & registers, along with the ability to manipulate them. Insight occupies Bloom's main thread
|
||||||
and employs a single worker thread for background tasks. Unlike other components within Bloom, Insight relies heavily
|
and employs a single worker thread for background tasks. Unlike other components within Bloom, Insight relies heavily
|
||||||
on the Qt framework for its GUI capabilities and other useful utilities. See source code in src/Insight/ for more.
|
on the Qt framework for its GUI capabilities and other useful utilities. See source code in src/Insight/ for more.
|
||||||
|
|
||||||
##### SignalHandler
|
##### SignalHandler
|
||||||
@@ -49,13 +50,10 @@ The SignalHandler is responsible for handling any UNIX signals issued to Bloom.
|
|||||||
other threads within Bloom do not accept any UNIX signals.
|
other threads within Bloom do not accept any UNIX signals.
|
||||||
See source code in src/SignalHandler/ for more.
|
See source code in src/SignalHandler/ for more.
|
||||||
|
|
||||||
#### Inter-component communication
|
|
||||||
The components described above interact with each other using an event-based mechanism. More on this to follow.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Building Bloom
|
### Building Bloom
|
||||||
To compile Bloom, the following dependencies must be resolved. The accompanying installation commands require support
|
To compile Bloom, the following dependencies must be resolved. The accompanying installation commands require support
|
||||||
for apt-get.
|
for apt-get.
|
||||||
|
|
||||||
#### CMake version 3.22 or later:
|
#### CMake version 3.22 or later:
|
||||||
@@ -96,9 +94,9 @@ sudo nano /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
|
|||||||
|
|
||||||
- If CMake fails to find the Qt packages, you may need to tell it where to look:
|
- If CMake fails to find the Qt packages, you may need to tell it where to look:
|
||||||
`export CMAKE_PREFIX_PATH=/path/to/Qt-installation/6.1.2/gcc_64/`
|
`export CMAKE_PREFIX_PATH=/path/to/Qt-installation/6.1.2/gcc_64/`
|
||||||
- Use the build directory build/cmake-build-debug, when generating the build system for the debug build as it's already
|
- Use the build directory build/cmake-build-debug, when generating the build system for the debug build as it's already
|
||||||
gitingored. (You'll have to create it)
|
gitingored. (You'll have to create it)
|
||||||
- Use the build directory build/cmake-build-release, when generating the build system for the release build as it's
|
- Use the build directory build/cmake-build-release, when generating the build system for the release build as it's
|
||||||
already gitingored. (You'll have to create it)
|
already gitingored. (You'll have to create it)
|
||||||
- To generate the build system with cmake (for debug build)
|
- To generate the build system with cmake (for debug build)
|
||||||
```
|
```
|
||||||
@@ -120,9 +118,9 @@ sudo nano /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
|
|||||||
```
|
```
|
||||||
- To use Gammaray for GUI debugging, be sure to build Bloom with the debug configuration. Your local installation of
|
- To use Gammaray for GUI debugging, be sure to build Bloom with the debug configuration. Your local installation of
|
||||||
Gammaray will likely be incompatible with the distributed Qt binaries, which ld will use if you've built with the
|
Gammaray will likely be incompatible with the distributed Qt binaries, which ld will use if you've built with the
|
||||||
release config. Building with the debug config will disable the RPATH and prevent Qt from loading any plugins from
|
release config. Building with the debug config will disable the RPATH and prevent Qt from loading any plugins from
|
||||||
the distribution directory. NOTE: Since upgrading to Qt6, Gammaray has not been of much use. It doesn't currently
|
the distribution directory. NOTE: Since upgrading to Qt6, Gammaray has not been of much use. It doesn't currently
|
||||||
support Qt6, but I've tried building the `work/qt6-support` branch from https://github.com/KDAB/GammaRay and it
|
support Qt6, but I've tried building the `work/qt6-support` branch from https://github.com/KDAB/GammaRay and it
|
||||||
*kind of* works. It crashes a lot.
|
*kind of* works. It crashes a lot.
|
||||||
|
|
||||||
More documentation to follow.
|
More documentation to follow.
|
||||||
|
|||||||
Reference in New Issue
Block a user