12个版本

0.5.1 2023年12月3日
0.5.0 2023年12月3日
0.4.4 2022年9月18日
0.4.2 2021年1月10日
0.1.1 2018年1月21日

#86嵌入式开发

Download history 30/week @ 2024-03-25 141/week @ 2024-04-01 14/week @ 2024-04-08 72/week @ 2024-04-15 71/week @ 2024-04-22 56/week @ 2024-04-29 36/week @ 2024-05-06 65/week @ 2024-05-13 64/week @ 2024-05-20 55/week @ 2024-05-27 49/week @ 2024-06-03 31/week @ 2024-06-10 56/week @ 2024-06-17 61/week @ 2024-06-24 63/week @ 2024-07-01 26/week @ 2024-07-08

213 每月下载量
用于 2 crates

MIT 许可证

120KB
2.5K SLoC

C 2K SLoC // 0.2% comments Rust 364 SLoC // 0.1% comments Scons 85 SLoC // 0.4% comments Python 66 SLoC // 0.5% comments

docs.rs

欢迎使用rpi_ws281x的Rust绑定

安全提示 - 高级抽象

如果您在查看此crate并想“ boy, 我想要添加 {insert higher abstraction}”,那么您可能对以下项目感兴趣。此项目旨在严格遵循驱动器的功能集(甚至可能是该子集)。

请记住审核您的依赖项,我们不对上述提及的crate使用导致的任何安全漏洞承担责任

如果您有一个基于此的crate并希望它在此处展示,请随时提交PR。

使用警告

此项目仍在进行中,API可能会发生变化。大多数主要功能都由相当典型的Rust实现。然而,我们总是努力覆盖更多内容,达到 @Meh 一段时间前为此库编写的手动绑定。

贡献

代码根据MIT许可证授权,因此只要您同意这一点,请随时提交问题,讨论提议的更改,然后提交PR!我非常需要帮助之手,只是要确保事情不会变得太混乱。

Raspbian上的编译

  • https://rustup.rs/ 安装Rust
  • 运行 rustup target add arm-unknown-linux-gnueabihf
  • 安装 sudo apt install libclang-dev

在Ubuntu/Debian上的交叉编译

  • https://rustup.rs/ 安装Rust
  • 运行 rustup target add arm-unknown-linux-gnueabihf
  • 运行 sudo apt install libclang-dev gcc-arm-linux-gnueabihf

AArch64构建

  • 运行 rustup target add aarch64-unknown-linux-gnu
  • 安装交叉编译工具链: sudo apt install libclang-dev gcc-aarch64-linux-gnu
  • 使用以下命令编译: cargo build --target=aarch64-unknown-linux-gnu [YOUR OPTIONS]

Windows上的交叉编译

  • 确保已安装Git。这用于克隆最新的rpi-ws2811库。
  • LLVM下载并安装libclang; 32位Windows版
  • 下载并安装GCC用于树莓派
  • 使用rustup安装32位GCC Rust工具链并将其设置为默认
    • rustupdefault stable-i686-pc-windows-gnu
  • 将树莓派架构目标添加到GCC工具链
    • 针对所有树莓派版本
    • rustuptarget add arm-unknown-linux-gnueabihf
    • 针对优化的树莓派3目标(ARMv7架构)
    • rustuptarget add armv7-unknown-linux-gnueabihf
  • 在Rust项目的根目录下创建一个新的目录,并命名为.cargo。在该目录内创建一个文件并粘贴以下内容
    • [build]
      target = "arm-unknown-linux-gnueabihf"
      
      [target.arm-unknown-linux-gnueabihf]
      linker = "C:/SysGCC/raspberry/bin/arm-linux-gnueabihf-gcc.exe"
      
    • 这会告知Rust/Cargo始终使用arm-unknown-linux-gnueabihf目标(因此不需要总是传递--target到cargo),并使用给定架构的GCC链接器。
    • 如果您在另一个目录中安装了GCC ARM工具集或正在使用ARMv7目标,请务必更改链接器路径或目标架构。
  • 建议创建一个构建脚本,以便设置必要的环境变量。该库需要知道GCC工具集的位置,以便交叉编译用于树莓派的rpi-ws2811 C库。

一个示例构建脚本可能如下所示(使用Git for Windows Bash)

#!/usr/bin/env bash

# inform rpi-ws2811-rust where the GCC sysroot is
export RPI_WS281X_SYSROOT=C:/SysGCC/raspberry/arm-linux-gnueabihf/sysroot
# point to the GCC ARM compiler/linker.
export CC_arm_unknown_linux_gnueabihf=C:/SysGCC/raspberry/bin/arm-linux-gnueabihf-gcc.exe
# point to the GCC ARM archiver
export AR_arm_unknown_linux_gnueabihf=C:/SysGCC/raspberry/bin/arm-linux-gnueabihf-ar.exe

# run the build command
cargo build $@

依赖关系

~0.4–3MB
~61K SLoC