MCPcopy Index your code
hub / github.com/dotcypress/ula

github.com/dotcypress/ula @0.0.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.0.5 ↗ · + Follow
26 symbols 40 edges 4 files 18 documented · 69%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

μLA: Micro Logic Analyzer

SUMP/OLS compatible logic analyzer firmware for RP2040 based boards.

Features

  • 16 channels
  • 100 MHz sampling rate, 1 sample per sys tick
  • 200 KB sample memory
  • Fast triggers using PIO
  • Input channels mapped to GPIO 0-15

Supported hardware

  • Raspberry Pi Pico
  • uPico
  • Virtually all RP2040 based boards with USB connection and GPIO 0-15 available
  • Bring your own RP2040 hardware with proper frontend and protection

Installation

  1. Download latest firmware build from Releases page
  2. Hold the BOOTSEL button while connecting your board to the computer
  3. Copy firmware file downloaded earlier to the RPi-RP2 disk
  4. Use PulseView of SigrokCli to connect to probe
  5. Enjoy

Client software

PulseView

PulseView is a Qt based logic analyzer GUI for sigrok.

Select Openbench Logic Sniffer & SUMP compatible protocol when connecting to μLA.

Protocol selection Connect window
uLA: Micro Logic Analyzer uLA: Micro Logic Analyzer

SigrokCli

SigrokCli is a command-line frontend for sigrok.

Scan for devices

$ sigrok-cli -d ols:conn=/dev/tty.usbmodem_ula_1 --scan

  The following devices were found:
  ols - uLA: Micro Logic Analyzer with 16 channels: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Sample two 10 MHz square waves with 90° phase shift

$ sigrok-cli -d ols:conn=/dev/tty.usbmodem_ula_1 
    -O ascii:charset='_`\/'
    --config samplerate=100m
    --samples 70

  libsigrok 0.5.2
  Acquisition with 16/16 channels at 100 MHz
  0:``\____/`````\___/`````\___/`````\___/`````\___/`````\___/`````\___/``
  1:____/`````\____/````\____/````\____/````\____/````\____/````\____/````
  2:______________________________________________________________________

Building firmware

  1. Install rustup by following the instructions at https://rustup.rs
  2. Install Cortex-M0, M0+, and M1 (ARMv6-M architecture) target: rustup target add thumbv6m-none-eabi
  3. Install LLVM tools: rustup component add llvm-tools-preview
  4. Install cargo-binutils: cargo install cargo-binutils (Note: on some Linux distros (e.g. Ubuntu) you may need to install the packages build-essential, gcc-arm-none-eabi, libssl-dev and pkg-config prior to installing cargo-binutils)
  5. Install elf2uf2: cargo install elf2uf2-rs
  6. Clone this repo: git clone git@github.com:dotcypress/ula.git && cd ula
  7. Hold the BOOTSEL button while connecting your board to the computer
  8. Flash microcontroller: cargo run --release

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Core symbols most depended-on inside this repo

drain_rx
called by 11
src/analyzer.rs
start
called by 2
src/sampler.rs
set_flags
called by 1
src/sampler.rs
set_divisor
called by 1
src/sampler.rs
set_sample_memory
called by 1
src/sampler.rs
drain
called by 1
src/sampler.rs
acquisition_done
called by 1
src/analyzer.rs
poll_serial
called by 1
src/analyzer.rs

Shape

Method 15
Class 6
Function 3
Enum 2

Languages

Rust100%

Modules by API surface

src/sampler.rs8 symbols
src/analyzer.rs7 symbols
src/trigger.rs6 symbols
src/main.rs5 symbols

For agents

$ claude mcp add ula \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact