Add attiny841 and attiny861
Replace gen-intr-lut.sh sed hack with svdtools
svdtools comes with a command to list all interrupts
from an SVD file. Use this instead of fragile sed magic
which parses the generated rust code.
Add basic support for ATmega4809
Add support for atmega328pb
Add basic support for ATmega644
Add support for the ATtiny84
Add atmega48p device support
make: Properly remove 'extern crate' lines
The previous sed expression would remove arbitrary lines which can break
easily. Instead, only remove actual extern crate lines.
This will provide a seamless upgrade to the next svd2rust version which
contains commit 85615cb0bbc8 ("Use and generate code for Edition 2018
only ") and thus no longer emits 'extern crate' lines.
Signed-off-by: Rahix <rahix@rahix.de>
Add basic support for ATmega168
makefile: also clean generic.rs
makefile: all and clean are .PHONY
Add support for ATmega2560
make: Allow overriding rustup toolchain
Allow overriding the rustup toolchain used for rustfmt by invoking make
like this:
make RUSTUP_TOOLCHAIN=nightly-2020-07-12
This will (hopefully) help when working with nightly versions where
rustfmt is unavailable.
Signed-off-by: Rahix <rahix@rahix.de>
Add basic support for ATmega64
Pull in the ATDF file from Microchip and add all the necessary plumbing
around the code-base to make it compile. Not tested against real
hardware and no device-specific patches are included yet.
Signed-off-by: Rahix <rahix@rahix.de>
make: Use a patchfile instead of weird sed expr
As reported in issue #24 the sed(1) expression used to patch the generated
`mod.rs` does not work on MacOS (BSD sed). Instead, use patch(1) and a small
patchfile to accomplish the same task.
Signed-off-by: Rahix <rahix@rahix.de>
Fix compatibility with svd2rust 1.16.1
svd2rust now generates a module containing generic descriptions which
the individual register definitions are based on. Fix the code
generation to deal with this module.
Signed-off-by: Rahix <rahix@rahix.de>
Implement interrupts
This commit adds a new feature-flag `rt` which, when enabled, adds the
`#[interrupt]` procedural macro to define an interrupt handler. Unlike
the implementation in cortex-m, this version needs an attribute which is
the name of the chip the interrupt is for. In code, an interrupt
handler might look like this:
#![feature(abi_avr_interrupt)]
#[avr_device::interrupt(atmega32u4)]
fn INT6() {
// Do Something
}
Closes #1.
Signed-off-by: Rahix <rahix@rahix.de>