This repo can be viewed as two parts. The first is the BDM Engine, this defines BDM commands and the context around them. Some BDM Commands require multiple messages to complete, some require data to be inserted into the core in a specific order. Some require values to write, or context to save off to. The engine takes care of this by defining each high level command into composible blocks that can be combined in order to form BDM transactions.
The second part of this repo is the Zebug High Level api. This serves to define transactions that complete higher level tasks such as initialization of the debug state, register reads/writes, state saving/restoring, breaking, continuing, etc. These transactions are made up BDM Actions, which are defined in a list to be executed in-order. The caller of these high level transactions should not be concerned about the engine's inner workings, only the expected behavior of the high level function itself.
These combined provide a programmer with an interface that can be used as-is or built upon to accomplish specific goals, without worrying about the timing or specifics of the BDM protocol.
Functionality:
- asm pre-generate caching
- preprocessing performance improvements
- guardrails for read-only mode
Ensure python3.10
is installed
Run setup script to create a virtualenv
at ./config/venv
and install the required dependencies.
./config/setup.sh
To run the pre-commit hooks make sure you source the virtual environment in the shell you are developing in.
source ./config/venv/bin/activate
Install local project in editable mode
pip install -e .