2个版本
使用旧的Rust 2015
0.1.1 | 2018年10月28日 |
---|---|
0.1.0 | 2017年2月22日 |
#313 in 模拟器
215KB
5.5K SLoC
包含(静态库,13KB)test/libspicboard/libspicboard.a
AVR-VM
这是一个用Rust编写的AVR ATmega32微控制器的虚拟机。它可以处理大多数指令,并支持I/O、ADC、定时器和按钮中断。它还包含一个JIT编译器,可以将AVR字节码在运行时编译为x64机器码。它非常快,大约比真实微控制器快5倍。
这个虚拟机是作为大学课程的一部分构建的,因此目前没有在开发中。但如果您想使用它并遇到问题,请随时提出问题或PR。
一些测试程序可以在./test
中找到。虚拟机只对这些程序进行了测试。目前只实现了这些程序的指令(有很多,但不是全部)。
它包括一个带有一些LED灯、按钮、两个电位计和两个七段数字的GUI。有一些测试程序使用了这些外围设备。接线大致如下(缺少JTAG、ISP和USB):接线。可以通过调整main.rs
来更改。
以下是一个示例,展示了在运行boardtest
程序时GUI的外观:
微控制器写入UDR的所有字符都将在控制台中显示。
安装
要使用此虚拟机,您需要执行以下步骤
-
克隆此仓库。
-
如果您想使用GUI,您至少需要安装gtk 3.4。
-
仅限JIT编译:此项目使用Dynasm-rs作为JIT编译器的编译器插件,需要Rust编译器的nightly版本。可以通过Rustup安装工作版本:
rustup override set nightly-2018-10-09
此外,JIT编译器需要通过启用“jit”功能来启用,见下文。 -
为了运行测试和将C代码及汇编器编译成AVR字节码,需要安装
gcc-avr
。可以从http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx安装,或者使用以下命令在Ubuntu / Debian / BashOnWindows上安装:sudo apt-get install gcc-avr binutils-avr avr-libc
如果您使用的是不同的发行版,您可能在那里找到等效的包。
用法
您可以使用以下命令执行虚拟机:cargo run --release -- ./test/boardtest/boardtest.bin
通过更改./test/boardtest/boardtest.bin
,您可以执行不同的二进制文件。
无GUI
可以使用以下命令禁用GUI:cargo run --release --no-default-features -- ./test/jump/jump.bin
此时只可见控制台输出,程序在第一个NOP处停止。这对于编译器的基准测试很有用,有关示例程序,请参阅./tests/jump/jump-time
。
使用JIT编译器
可以使用以下标志启用JIT编译器:cargo run --release --features jit -- ./test/jump/jump.bin
如果您想使用JIT编译器,请确保您正在使用Rust编译器的夜间版本。有关使用哪个版本的说明,请参阅上述内容。
材料
依赖关系
~0.3–3MB
~71K SLoC