# ula **Repository Path**: sheehan-raspberry/ula ## Basic Information - **Project Name**: ula - **Description**: rp2040 实现的逻辑分析仪,100M - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-01-28 - **Last Updated**: 2024-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # μLA: Micro Logic Analyzer SUMP/OLS compatible logic analyzer firmware for [RP2040](https://en.wikipedia.org/wiki/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](https://www.raspberrypi.com/products/raspberry-pi-pico) * [uPico](https://github.com/dotcypress/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](https://github.com/dotcypress/ula/releases) 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](https://sigrok.org/wiki/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](https://sigrok.org/wiki/Sigrok-cli) 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](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) - MIT license ([LICENSE-MIT](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.