16 releases (breaking)
new 0.13.1 | Dec 11, 2024 |
---|---|
0.13.0 | Nov 28, 2024 |
0.12.0 | Nov 21, 2024 |
0.10.0 | May 3, 2024 |
0.2.0 | Jan 10, 2020 |
#1896 in Embedded development
329 downloads per month
1.5MB
28K
SLoC
ATSAMD11C Support Crate
This crate provides a type-safe API for working with the ATSAMD11C.
Examples?
Check out the repository for examples:
https://github.com/atsamd-rs/atsamd/tree/master/boards/samd11_bare/examples
Getting code onto the device with debugger: cargo-flash
This is the preferred pure rust ecosystem method for flashing with debugger.
cargo flash replaces the cargo build
command to include flashing over debugger using probe-rs and libusb.
$ cargo install cargo-flash
Cargo flash needs to know the specific id of your chip, but its included in the package.metadata field of the Cargo.toml so you can omit it.
Then cargo flash simply replaces your cargo build command!
$ cargo flash --example blinky_basic --release
Debugging: probe-run
This is the preferred pure rust ecosystem method for debugging. It requires no external gdb server, nor C or Python tooling like openocd.
probe-run attemps to bring the hosted cargo run print line debugging experience to embedded. It also has advanced logging features to vastly reduce format size under the defmt project which is not covered here.
probe-run
needs to be set as your runner
in the .cargo/config
along with the id of your chip. Also debug symbols need to be enabled for any profile you're building for. In your application you'll want to use a probe-run
compatible panic crate like panic-probe
and an rtt debug logging crate like rtt-target
. Also don't forget to init your rtt machinery.
probe-run
will then be called after a successful build to flash the code directly to the target via debugger and will then wait to receive any rtt prints from your target. Finally if a panic occurs or you ever call cortex_m::asm::bkpt()
probe-run
will detect, print a stack trace, and exit. You can exit probe-run
on the host side with ctrl-c.
$ cargo install probe-run
Then simply use your ide's run or play button, or run:
$ cargo run --release --example adc
Finished release [optimized + debuginfo] target(s) in 0.99s
Running `probe-run --chip ATSAMD11C14A target\thumbv6m-none-eabi\release\examples\adc`
(HOST) INFO flashing program (7.18 KiB)
(HOST) INFO success!
────────────────────────────────────────────────────────────────────────────────
3828
3829
414
413
419
^Cstack backtrace:
0: <atsamd_hal::common::delay::Delay as embedded_hal::blocking::delay::DelayUs<u32>>::delay_us
at /home/atsamd/hal/src/common/delay.rs:72
1: <atsamd_hal::common::delay::Delay as embedded_hal::blocking::delay::DelayMs<u32>>::delay_ms
at /home/atsamd/hal/src/common/delay.rs:35
2: <atsamd_hal::common::delay::Delay as embedded_hal::blocking::delay::DelayMs<u16>>::delay_ms
at /home/atsamd/hal/src/common/delay.rs:41
3: neopixel_adc_battery::__cortex_m_rt_main
at examples/neopixel_adc_battery.rs:50
4: main
at examples/neopixel_adc_battery.rs:23
5: ResetTrampoline
at /home/.cargo/registry/src/github.com-1ecc6299db9ec823/cortex-m-rt-0.6.13/src/lib.rs:547
6: Reset
at /home/.cargo/registry/src/github.com-1ecc6299db9ec823/cortex-m-rt-0.6.13/src/lib.rs:550
Dependencies
~5.5MB
~121K SLoC