#metadata #avr #simavr

simavr-section

为您的二进制文件添加与simavr兼容的元数据

2个版本

0.1.1 2022年1月12日
0.1.0 2022年1月12日

#1543 in 嵌入式开发

GPL-3.0 许可证

3.5MB
21K SLoC

C 20K SLoC // 0.2% comments Intel HEX 124 SLoC Rust 115 SLoC // 0.3% comments Ruby 84 SLoC // 0.2% comments Python 62 SLoC // 0.0% comments

simavr-section

一个用于在ELF中存储与simavr兼容的元数据的存储库。

使您的AVR固件能够描述期望的核心、频率、熔丝和电压。配置模拟器导出VCD跟踪而无需担心任何命令行标志。

  • 入门
  • 支持的标签
  • 更多信息
  • 贡献
  • 许可证信息

入门

首先将avr_mcu宏添加到您的main.rs

use simavr_section::avr_mcu;
avr_mcu!(8000000, b"attiny85");

为确保元数据传递到最终的ELF,您需要向rustc调用中添加一些链接参数。最简单的方法是在您的config.toml文件中添加或更新以下行

[target.'cfg(target_arch = "avr")']
rustflags = ["-C", "link-arg=-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000"]

现在您可以无忧地模拟您的固件

> cargo build --release
   Compiling my-awesome-firmware v0.1.0 (/home/avr-freak/dev/my-awesome-firmware)
    Finished release [optimized] target(s) in 13.37s
> run_avr target/avr-attiny85/release/my-awesome-firmware.elf

支持的标签

  • AVR_MMCU_TAG_NAME
  • AVR_MMCU_TAG_FREQUENCY
  • AVR_MMCU_TAG_VCC
  • AVR_MMCU_TAG_AVCC
  • AVR_MMCU_TAG_AREF
  • AVR_MMCU_TAG_LFUSE
  • AVR_MMCU_TAG_HFUSE
  • AVR_MMCU_TAG_EFUSE
  • AVR_MMCU_TAG_SIGNATURE
  • AVR_MMCU_TAG_SIMAVR_COMMAND
  • AVR_MMCU_TAG_SIMAVR_CONSOLE
  • AVR_MMCU_TAG_VCD_FILENAME
  • AVR_MMCU_TAG_VCD_PERIOD
  • AVR_MMCU_TAG_VCD_TRACE
  • AVR_MMCU_TAG_VCD_PORTPIN
  • AVR_MMCU_TAG_VCD_IRQ
  • AVR_MMCU_TAG_PORT_EXTERNAL_PULL

更多信息

使用cargo doc --open或通过访问docs.rs页面查看文档。

API故意是simavr公开宏的直接克隆,以便于移植。有关更多详细信息,请参阅simavr项目。

贡献

欢迎所有贡献,无论是错误报告、功能请求、代码更改还是良好祝愿。谢谢!

要在项目根目录中运行完整的集成测试,请使用test.sh

许可证信息

simavr-section是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款和条件下重新分配它或修改它,无论是许可证的第3版,还是(根据您的选择)任何较新版本。

simavr-section分发的目的是希望它会有用,但没有任何保证;甚至没有关于适销性或针对特定目的的适用性的暗示性保证。有关更多信息,请参阅GNU通用公共许可证。

请参阅此项目根目录下的 LICENSE 文件,获取 GNU 通用公共许可证副本,或访问 http://www.gnu.org/licenses/

此项目包含来自 simavr 项目的代码,该代码同样遵循 GPL v3 许可协议。

依赖项