#arduino #avr #avrdude

app ravedude

Tool to easily flash code onto an AVR microcontroller with avrdude

10 releases

0.2.0 Apr 22, 2025
0.1.8 Mar 15, 2024
0.1.7 Feb 24, 2024
0.1.6 Nov 6, 2023
0.1.2 Mar 21, 2021

#44 in Embedded development

Download history 56/week @ 2025-01-08 59/week @ 2025-01-15 65/week @ 2025-01-22 39/week @ 2025-01-29 78/week @ 2025-02-05 63/week @ 2025-02-12 49/week @ 2025-02-19 67/week @ 2025-02-26 58/week @ 2025-03-05 54/week @ 2025-03-12 85/week @ 2025-03-19 53/week @ 2025-03-26 37/week @ 2025-04-02 61/week @ 2025-04-09 129/week @ 2025-04-16 168/week @ 2025-04-23

404 downloads per month

MIT/Apache

52KB
720 lines

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 +stable install --locked 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.

Usage

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"

Then, create a Ravedude.toml file next to your Cargo.toml:

[general]
board = "uno"

# ravedude should open a serial console after flashing
open-console = true
serial-baudrate = 57600

(For more info about the Ravedude.toml format, please check main.rs).

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–15MB
~216K SLoC