#arduino #hardware-abstraction #usart #numbers #hal #programming #microcontrollers

nightly rustduino

Rust语言为Arduino板提供的通用HAL实现

7个版本

0.2.2 2021年7月31日
0.2.1 2021年7月31日
0.1.3 2021年7月18日

#1009 in 硬件支持

每月30次下载

AGPL-3.0-only

315KB
5.5K SLoC

arduino

RustDuino是电子俱乐部在2021年夏季为Y20班学生提供的4个项目中之一,它介绍了使用Rust语言进行嵌入式编程的概念,并从最基本的内容覆盖了Arduino架构。该项目旨在为我们自己的Arduino芯片功能实现库。

在项目过程中,我们将进行优化,尤其是因为目前发生的情况是将C/C++程序转换为Arduino语言,然后再转换为二进制文件。我们将直接进行接口,这样就不需要这些多次转换。

HAL(硬件抽象库)是编程的一层,允许计算机操作系统在通用级别直接与硬件设备交互。AVR-GCC链接器是一个跨平台编译器,它将允许我们在计算机上编译针对Arduino设备的代码。我们将在整个项目过程中使用它。

通信控制库将是项目的一部分,我们将实现Arduino板的多种通信协议,以便根据源代码允许的电源与不同的传感器和外设进行接口。我们将实现USART(通用同步和异步串行接收和发送器)I2C通信协议。

arduino

理解Arduino架构的核心,并开发用于标准Arduino传感器和微控制器的Rust语言Crate(库)是本项目的首要目标。这将通过使用我们制作的硬件抽象库通信控制库AVR-GCC编译器来完成。

Rust语言在内存安全和其他优点之外,还提供了效率,这对于低级嵌入式编程至关重要。此外,它具有非常强大的内存分配和释放规则,具有独特的所有权和借用规则,编译器本身在尝试在微控制器上运行代码之前提供了足够的检查,以确保绝对没有错误运行的代码,从而防止对芯片造成任何潜在的危害。

我们将尝试尽可能覆盖更多库功能,但Arduino拥有大量功能这一事实使得这是一个浩瀚且永无止境的任务。我们的最终目标是开发针对2个芯片的库,特别是Atmega2560p(Arduino Mega)和Atmega328p(Arduino nano, uno)。

您接下来想了解什么?

依赖项

~1.5MB
~39K SLoC