sudo apt-get update --fix-missing
sudo apt-get install -y screen sox build-essential libconfig++-dev libsox-fmt-mp3 libfftw3-dev librtlsdr-dev libshout3-dev
sudo timedatectl set-timezone America/Los_Angeles
sudo apt-get update
sudo apt-get install build-essential libudev-dev
bash <( curl -sL https://particle.io/install-cli )
Assumes Debian-based linux
- (install rust, eg
sudo snap install --classic rustup
on Ubuntu, or via bash commandcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
) - Using serialports-rs package
- requires libudev under linux:
sudo apt-get install libudev-dev
git clone https://gitlab.com/Susurrus/serialport-rs
cargo run --example list_ports
- With a couple Particle devices attached, output will be something like:
In the device OS directory
cd main
make PLATFORM=boron MODULAR=n all APPDIR=/path/to/your/app/dir
Serial logger output tends to be ugly on raw terminal because of missing carriage returns.
With picocom
you can map raw LFs to CRLF:
picocom -b 115200 --imap lfcrlf /dev/ttyACM0
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub trait FFT: Sized + Copy { | |
type F: Sized | |
+ Copy | |
+ From<Self> | |
+ Neg | |
+ Add<Output = Self::F> | |
+ Div<Output = Self::F> | |
+ Mul<Output = Self::F> | |
+ Sub<Output = Self::F>; |
- Source code
- Allows firmware update via USB (and possibly other methods?)
- The is 128 kB minimum, some boards reserve 256 kB (eg OpenMV)
- The jump address varies depending on the board
- Example: OpenMV H7 board bootloader is 128 kB in size, reserves 256 kB in flash, and
has an application jump address of
0x8040000
There are a million camera modules out there. Many support a common hardware interface:
- A set of parallel data lines that provide image (pixel) data
- A set of scan line and frame synchronization output lines (horizontal and vertical sync, and pixel clock)
- A low-speed two-wire (i2c) configuration and control interface
- A clock input. Many of these modules do not have their own hardware clock connected: instead they rely upon a microcontroller or the CPU they're attached to to provide a clock.
When you connect the i2c lines of the module to, say, a linux i2c bus and run, say, sudo i2cdetect -y 1
,
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use core::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; | |
struct MyStruct { | |
... | |
/// A mutability lock | |
mut_lock: AtomicBool, | |
} | |
impl Struct { |