1个不稳定版本
0.2.4+snowgoons-hack-4809 | 2021年9月3日 |
---|
#1993 in 嵌入式开发
每月 28次下载
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上的版本是预构建的。以下内容仅当尝试从源代码构建此包时需要。
您需要安装 atdf2svd,svd2rust,form,rustfmt(用于 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 使用 atdf2svd
和 svd2rust
生成。供应商提供的 atdf 文件位于 vendor/
。中间的 svd 文件通过 svdpatch.py
进行修补(从 svdpatch.py
在 stm32-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根据您的选择采用以下任一许可证:
- Apache License,版本2.0(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
。
销售商的atdf文件采用Apache License,版本2.0(LICENSE-VENDOR)。