Skip to content

Zetier/BDMEngine

Repository files navigation

BDM Engine

Introduction:

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.

Todo:

Functionality:

  • asm pre-generate caching
  • preprocessing performance improvements
  • guardrails for read-only mode

Development

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 .

About

A debug protocol engine for the PowerQUICC BDM protocol.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published