README: document lockin, cleanup instructions, use probe-run

This commit is contained in:
Robert Jördens 2021-05-13 11:57:56 +02:00
parent 74b52c6420
commit ed2c048fdd
1 changed files with 22 additions and 15 deletions

View File

@ -10,10 +10,10 @@
## Applications ## Applications
The Stabilizer firmware offeres a library of hardware and software functionality This firmware offers a library of hardware and software functionality targeting the use of the Stabilizer hardware in various digital signal processing applications commonly occurring in Quantum Technology applications.
exposing input/output, timing, and digital signal processing features. It provides abstractions over the fast analog inputs and outputs, time stamping, Pounder DDS interfaces and a collection of tailored and optimized digital signal processing algorithms (IIR, FIR, Lockin, PLL, reciprocal PLL, Unwrapper, Lowpass, Cosine-Sine, Atan2).
An application can compose and configure these hardware and software components An application can compose and configure these hardware and software components to implement different use cases.
to implement different use cases. Several applications are provides by default Several applications are provides by default:
### Dual-IIR ### Dual-IIR
@ -31,28 +31,34 @@ to implement different use cases. Several applications are provides by default
### Lockin ### Lockin
* Up to 800 kHz sampling
* Up to 400 kHz modulation frequency
* Reciprocal PLL for external reference
* Internal reference
* Adjustable PLL and locking time constants
* Adjustable phase offset and harmonic index
* Different output modes (in-phase, quadrature, magnitude, log2 power, phase, frequency)
## Minimal bootstrapping documentation ## Minimal bootstrapping documentation
* Clone or download this * Clone or download this
* Get [rustup](https://rustup.rs/) * Get [rustup](https://rustup.rs/)
* `rustup target add thumbv7em-none-eabihf` * Minimum supported Rust version (MSRV) is 1.52.0
* `cargo build --release` * Install target support: `rustup target add thumbv7em-none-eabihf`
* Minimum supported Rust version (MSRV) is 1.51.0 * Install `probe-run`: `cargo install probe-run`
* `cargo run --release --bin dual-iir`
* When using debug (non `--release`) mode, increase the sample interval significantly. * When using debug (non `--release`) mode, increase the sample interval significantly.
The added error checking code and missing optimizations may lead to the code The added error checking code and missing optimizations may lead to the code
missing deadlines and panicing. missing deadlines and panicing.
### Using probe-run ## Alternative flashing tools
* Install `probe-run`: `cargo install probe-run` ### Cargo-embed
* Run it: `probe-run --chip STM32H743ZITx target/thumbv7em-none-eabihf/release/dual-iir`
### Using Cargo-embed
* Install `cargo-embed`: `cargo install cargo-embed` * Install `cargo-embed`: `cargo install cargo-embed`
* Program the device: `cargo embed --bin dual-iir --release` * Program the device: `cargo embed --bin dual-iir --release`
### Using GDB/OpenOCD ### GDB/OpenOCD
* Get a recent openocd, a JTAG adapter ("st-link" or some clone) and * Get a recent openocd, a JTAG adapter ("st-link" or some clone) and
everything connected and permissions setup. Most everything connected and permissions setup. Most
@ -62,7 +68,7 @@ to implement different use cases. Several applications are provides by default
* `openocd -f stabilizer.cfg` and leave it running * `openocd -f stabilizer.cfg` and leave it running
* `cargo run --release` * `cargo run --release`
### Using USB-DFU ### USB-DFU
* Get [cargo-binutils](https://github.com/rust-embedded/cargo-binutils/) * Get [cargo-binutils](https://github.com/rust-embedded/cargo-binutils/)
* `cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin` or `arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin` * `cargo objcopy --release --bin dual-iir -- -O binary dual-iir.bin` or `arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/dual-iir dual-iir.bin`
@ -71,7 +77,7 @@ to implement different use cases. Several applications are provides by default
* Short JC2/BOOT * Short JC2/BOOT
* `dfu-util -a 0 -s 0x08000000:leave -D dual-iir.bin` * `dfu-util -a 0 -s 0x08000000:leave -D dual-iir.bin`
### Using ST-Link virtual mass storage ### ST-Link virtual mass storage
* Prepare `dual-iir.bin` like above * Prepare `dual-iir.bin` like above
* Connect the ST-Link debugger * Connect the ST-Link debugger
@ -82,3 +88,4 @@ to implement different use cases. Several applications are provides by default
Stabilizer can be configured via MQTT. Refer to Stabilizer can be configured via MQTT. Refer to
[`miniconf`](https://github.com/quartiq/miniconf) for more information about topics. [`miniconf`](https://github.com/quartiq/miniconf) for more information about topics.
A basic command line interface is available in [`miniconf.py`](miniconf.py). A basic command line interface is available in [`miniconf.py`](miniconf.py).
Telemetry is published via MQTT as well.