Skip to main content

Command line interface for building, running, debugging, and disassembling the ArchAdept training course example projects.

Project description

archadeptcli - ArchAdept Command Line Interface

Operating Systems PyPI - Python Version PyPI GitHub release (latest SemVer) PyPI - License

Command line interface for building, running, debugging, and disassembling the ArchAdept training course example projects.

Introduction

Many of the lessons on our training courses involve practical coding exercises for you to complete, or example code snippets for you to modify and run yourself on simulated hardware.

One challenge often faced by newcomers to bare metal ARM architecture development like this is getting all of the necessary tools installed and configured, especially when accounting for all the differences between the Mac, Linux, and Windows operating systems.

The ArchAdept CLI solves this issue by leveraging Docker containers "under-the-hood" to provide a consistent environment that is preloaded and preconfigured with all of the tools required to build, run, debug, and disassemble the ArchAdept training course example projects, while abstracting away all of the complexities of managing the actual Docker containers themselves.

Installation

Tested as working on:

  • macOS Sonoma 14.1
  • TODO Windows 10
  • TODO Windows 11
  • TODO Ubuntu 22.04 LTS

macOS

  1. Install Docker Desktop by following the instructions at: https://www.docker.com/products/docker-desktop/

  2. Install Homebrew by following the instructions at: https://brew.sh

  3. Install Python 3.8 or newer via Homebrew:

$ brew search python3
$ brew install python@3.12  # Chosen from results of `brew search python3`
  1. Install pipx via Homebrew:
$ brew install pipx
  1. Let pipx correctly update your $PATH:
$ pipx ensurepath
  1. From a new terminal window, install the ArchAdept CLI via pipx:
# From a new terminal window!
$ pipx install archadeptcli
  1. Ensure the ArchAdept CLI is installed and accessible:
$ archadept --help

Windows

  1. Install Docker Desktop by following the instructions at: https://www.docker.com/products/docker-desktop/

  2. Install Python 3.8 or newer either via the Microsoft Store or by downloading and running the installer from: https://www.python.org/downloads/windows/

  3. Install pipx via pip:

PS> py -3 -m pip install --user pipx
  1. Let pipx correctly update your $PATH:
PS> py -3 -m pipx ensurepath
  1. From a new terminal window, install the ArchAdept CLI via pipx:
# From a new terminal window!
PS> py -3 -m pipx install archadeptcli
  1. Ensure the ArchAdept CLI is installed and accessible:
PS> archadept --help

Linux

  1. Install Docker Desktop by following the instructions at: https://www.docker.com/products/docker-desktop/

  2. Use your distribution's package manager to check the installed version of Python 3, for example on Ubuntu using apt:

$ apt show python3 | grep Version
Version: 3.10.6-1~22.04
  1. If necessary, use your distribution's package manager to upgrade to Python 3.8 or newer, for example on Ubuntu using apt:
$ sudo apt upgrade python3
  1. Install pipx via pip:
python3 -m pip install --user pipx
  1. Let pipx correctly update your $PATH:
python3 -m pipx ensurepath
  1. From a new terminal window, install the ArchAdept CLI via pipx:
# From a new terminal window!
python3 -m pipx install archadeptcli
  1. Ensure the ArchAdept CLI is installed and accessible:
archadept --help

Usage

The following commands are available:

  • make
  • run
  • debug
  • prune

make

usage: archadept make [-h] [-v] [-p PROJECT] [-i IMAGE] [-t TAG] [TARGET]

Invokes an ArchAdept example project Makefile.

options:
  -h, --help  show this help message and exit
  -v          enable logging verbose debug messages

command-specific options:
  -p PROJECT    path to the ArchAdept project (default: current directory)
  -i IMAGE      override Docker image repository (default: archadept/example-code-tools)
  -t TAG        override Docker image tag (default: latest)
  -S            interleave source with disassembly (only available for 'dis' target)
  -D            also disassemble any data found in code sections (only available for 'dis' target)
  -O {0,1,2,3}  override project's default optimization level

command-specific positional arguments:
  TARGET      Makefile target from {all,clean,rebuild,dis,syms} (default: all)

The following targets are defined by all ArchAdept training course example project Makefiles:

  • all builds the project.
  • clean deletes all of a project's build artifacts.
  • rebuild performs a clean build, equivalent to clean followed by all.
  • dis builds the project, then disassembles it.
  • syms builds the project, then dumps its symbol table.
  • sects builds the project, then dumps its section headers.

Note: The dis target accepts the following optional flags:

  • -S enables interleaving source code with the disassembly.
  • -D enables disassembling any data found in code sections.

run

usage: archadept run [-h] [-v] [-p PROJECT] [-i IMAGE] [-t TAG] [-s]

Runs an ArchAdept example project on a simulated Raspberry Pi 3b using QEMU.

options:
  -h, --help  show this help message and exit
  -v          enable logging verbose debug messages

command-specific options:
  -p PROJECT  path to the ArchAdept project (default: current directory)
  -i IMAGE    override Docker image repository (default: archadept/example-code-tools)
  -t TAG      override Docker image tag (default: latest)
  -s          spawn GDB debug server and pause simulation at kernel entrypoint

To quit the QEMU simulation, press Ctrl-a followed by x.

debug

usage: archadept debug [-h] [-v] CONTAINER

Attaches a GDB debug session to a live QEMU simulation started by `archadept run`.

options:
  -h, --help  show this help message and exit
  -v          enable logging verbose debug messages

command-specific positional arguments:
  CONTAINER   container in which the QEMU simulation is running, as given by `archadept run`

prune

usage: archadept prune [-h] [-v]

Cleans up any lingering Docker containers from previous ArchAdept CLI invocations.

options:
  -h, --help  show this help message and exit
  -v          enable logging verbose debug messages

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

archadeptcli-1.1.5.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

archadeptcli-1.1.5-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file archadeptcli-1.1.5.tar.gz.

File metadata

  • Download URL: archadeptcli-1.1.5.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.1.0

File hashes

Hashes for archadeptcli-1.1.5.tar.gz
Algorithm Hash digest
SHA256 6fbc3d8738e91193e5810dfff024e1180c2b1347246a6fa39b71ec4b734824dc
MD5 75a3c5707347e3ad9e38bba3d4ba57e8
BLAKE2b-256 5683187536f9961e05e079c6d6b8c023c2f48a56da4a93a5548160c49f761083

See more details on using hashes here.

File details

Details for the file archadeptcli-1.1.5-py3-none-any.whl.

File metadata

  • Download URL: archadeptcli-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.1.0

File hashes

Hashes for archadeptcli-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 db9371d47bc7db4e43bcbd458104c9c6b8f84869bcfcb494a5295a487c8eaa88
MD5 dd6833761cbb82dac5f11f51d6ac3d4a
BLAKE2b-256 fd1cfbfe73e1e9e892bcef89ee8d1abda4c761239989143e6d8067cd5de1fe61

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page