#avr #arduino #avrdude

app ravedude

Tool to easily flash code onto an AVR microcontroller with avrdude

8 releases

new 0.1.7 Feb 24, 2024
0.1.6 Nov 6, 2023
0.1.5 Sep 18, 2022
0.1.4 Feb 8, 2022
0.1.2 Mar 21, 2021

#29 in Embedded development

Download history 154/week @ 2023-11-06 106/week @ 2023-11-13 98/week @ 2023-11-20 114/week @ 2023-11-27 95/week @ 2023-12-04 90/week @ 2023-12-11 111/week @ 2023-12-18 109/week @ 2023-12-25 99/week @ 2024-01-01 98/week @ 2024-01-08 99/week @ 2024-01-15 113/week @ 2024-01-22 88/week @ 2024-01-29 97/week @ 2024-02-05 122/week @ 2024-02-12 342/week @ 2024-02-19

660 downloads per month

MIT/Apache

1.5MB
32K SLoC

Bitbake 31K SLoC // 0.1% comments Rust 644 SLoC // 0.0% comments

ravedude crates.io page

ravedude is a CLI utility to make Rust development for AVR microcontrollers super smooth. It's a wrapper around avrdude and provides easy access to the target's serial console, similar to the Arduino IDE.

ravedude is meant to be used as a cargo "runner". This allows you to just use cargo run for building, deploying, and running your AVR code!

if you get an Error: no matching serial port found, use -P or set RAVEDUDE_PORT in your environment , run cargo run with set environment variable or adjust runner = "ravedude {X} -cb {X} -P /dev/ttyUSB{X}" inside .cargo/config.toml (replace {X} with your respective values)

Installation

On Linux systems, you'll need pkg-config and libudev development files installed:

  • Archlinux: pacman -S systemd pkgconf
  • Ubuntu/Debian: apt install libudev-dev pkg-config
  • Fedora: dnf install systemd-devel pkgconf-pkg-config

Next, install the latest version from crates.io with the following command:

cargo install ravedude

Alternatively, if you're using Nix (the package manager) + Flakes, you can install ravedude by adding inputs.ravedude.url = "github:Rahix/avr-hal?dir=ravedude"; and use the package ravedude.packages."${system}".default.

Now you need to add ravedude to your project. For example in a project for Arduino Uno, place the following into your .cargo/config.toml (not in Cargo.toml):

[target.'cfg(target_arch = "avr")']
runner = "ravedude uno --open-console --baudrate 57600"

And that's all, now just call cargo run and watch it do its magic:

avr-hal/examples/arduino-uno on ravedude via v1.51.0-nightly 
 cargo run --bin uno-i2cdetect
   Compiling arduino-uno-examples v0.0.0 (avr-hal/examples/arduino-uno)
    Finished dev [optimized + debuginfo] target(s) in 1.26s
     Running `ravedude uno -cb 57600 avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf`
       Board Arduino Uno
 Programming avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf => /dev/ttyACM0

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: erasing chip
avrdude: reading input file "avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf"
avrdude: writing flash (1654 bytes):

Writing | ################################################## | 100% 0.27s

avrdude: 1654 bytes of flash written
avrdude: verifying flash memory against avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf:
avrdude: load data flash data from input file avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf:
avrdude: input file avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf contains 1654 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.21s

avrdude: verifying ...
avrdude: 1654 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

  Programmed avr-hal/target/avr-atmega328p/debug/uno-i2cdetect.elf
     Console /dev/ttyACM0 at 57600 baud

Write direction test:
-    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:       -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Read direction test:
-    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:       -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

License

ravedude is licensed under either of

at your option.

Dependencies

~5–16MB
~201K SLoC