#register #avr #io

nightly no-std snowgoons4809-device

ATmega4809的寄存器访问包。除非有充分的理由,否则不要使用。

1个不稳定版本

0.2.4+snowgoons-hack-48092021年9月3日

#1993 in 嵌入式开发

每月 28次下载

MIT/Apache

3MB
98K SLoC

snowgoons4809-device

这是一个临时解决方案

这是对Rahix的包的修改,允许在ATmega4809上访问寄存器,这将只存在于4809支持在主设备中可用之前。

仅为了满足依赖性要求而发布到crates.io。

除非有非常好的理由,否则不要在新项目中直接使用此包。

========== 自动生成的AVR微控制器的寄存器包装器。

用法

将以下内容添加到 Cargo.toml

[dependencies.avr-device]
version = "0.2.3"
features = ["atmega32u4"]

通过特性,您可以选择您想要寄存器规范的芯片。以下是目前支持的内容

  • atmega1280
  • atmega168
  • atmega2560
  • atmega8
  • atmega328p
  • atmega32u4
  • atmega48p
  • atmega64
  • atmega644
  • attiny84
  • attiny85
  • attiny88
  • atmega4809

构建说明

crates.io上的版本是预构建的。以下内容仅当尝试从源代码构建此包时需要。

您需要安装 atdf2svdsvd2rustformrustfmt(用于 nightly 工具链) 和 svdtools (>= 0.1.9)

cargo install atdf2svd
cargo install svd2rust
cargo install form
rustup component add --toolchain nightly rustfmt
pip3 install --user svdtools

实际上,在编写本文时,svd2rust的当前版本已损坏。您需要手动构建提交 d6c668dedfea,如下所示

git clone https://github.com/rust-embedded/svd2rust.git
cd svd2rust
git reset --hard d6c668dedfea
cargo build --release

接下来,克隆此存储库并构建设备定义

git clone https://github.com/Rahix/avr-device
cd avr-device
make
# You can build for just one specific chip using
# make atmega32u4
# I suggest building documentation as well
cargo +nightly doc --features <chip> --open

内部结构

avr-device 使用 atdf2svdsvd2rust 生成。供应商提供的 atdf 文件位于 vendor/。中间的 svd 文件通过 svdpatch.py 进行修补(从 svdpatch.pystm32-rs 中修改),主要为了改进不具描述性的名称和缺失的描述。

添加新芯片

要添加一个新的芯片,请从http://packs.download.atmel.com/(或avr-mcu/packs/)下载atdf,并将其放置在vendor/目录中。请确保其命名与要生成的Rust模块相同。接下来,您需要将其集成到基本crate和构建系统中。按照在提交290613454fbd ("添加ATmega64的基本支持")中所做的那样操作。请务必遵守现有的字母顺序。

接下来,您必须在patch/目录中创建一个<chipname>.yaml文件,其中至少包含以下内容

_svd: ../svd/<chipname>.svd

如果需要应用更多补丁(很可能!),也应将它们添加到该文件中。补丁格式在svdtools README中有说明。理想情况下,尝试在patch/common/patch/timer/中重用现有的补丁。

最后,尝试使用make <chipname>构建您的MCU的crate。

许可证

avr-device根据您的选择采用以下任一许可证:

销售商的atdf文件采用Apache License,版本2.0(LICENSE-VENDOR)。

依赖项