#微控制器 #外设 #RPC #网桥 #UART #FD #USB

jabi

Rust 编程语言为 JABI(Just Another Bridge Interface)提供的库

2 个版本

0.1.1 2024年3月24日
0.1.0 2024年3月21日

#520硬件支持

每月 21 次下载

Apache-2.0 协议

48KB
1.5K SLoC

JABI

JABI(Just Another Bridge Interface)简化了创建和部署提供RPC服务的网桥设备的过程。

架构

接口是单个客户端连接的方法。支持同时运行多个接口。以下是一些当前支持的接口。

  • USB
  • UART

通过自定义基本RPC,每个接口都可以提供微控制器外设。每个接口监听请求包并将它们调度到相应的外设。支持每种外设的多个实例。以下是一些当前支持的外设。

  • 元数据
  • CAN (FD)
  • LIN
  • SPI 控制器
  • I2C 控制器
  • UART
  • GPIO
  • PWM
  • ADC
  • DAC

客户端可以通过任何一个接口连接到微控制器。以下是一些支持的客户端。

  • C++
  • Python - pip install pyjabi
  • gRPC
  • Rust - cargo add jabi

设置

固件

按照 Zephyr 的 入门指南 安装依赖项。然后使用此仓库创建一个新的工作区。我们将在 jabi 下创建它,但您可以使用任何您想要的。

west init -m https://github.com/dragonlock2/JABI.git jabi
cd jabi && west update

要将任何板移植,您需要以下内容。有关示例,请参阅 firmware/boards

  • Zephyr 板定义。有关帮助,请参阅 Zephyr 的 板移植指南
  • firmware/boards/<board>.conf - 启用设备驱动程序和任何所需的设置
  • firmware/boards/<board>.overlay - 选择可用的接口和外设

现在编译并烧录固件。

west build -b <board>
west flash

依赖项

如果您想从源代码构建,您可能需要安装一些依赖项。

  • macOS
    • brewinstall git cmake autoconf automake libtool libusb grpc openssl
  • Linux
    • apt install git cmake autotools-dev autoconf libtool libusb-1.0-0-dev libssl-dev
    • 从源码安装 grpc
  • Windows
  • Windows (MSYS2/MinGW) (实验性)
    • 安装 MSYS2 以安装以下包。
    • pacman -S mingw-w64-ucrt-x86_64-gcc git mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-autotools mingw-w64-ucrt-x86_64-libusb mingw-w64-ucrt-x86_64-grpc
      • 如果你不是在 x86_64 上,你的确切包名可能不同。

C++

C++支持作为CMake库提供,可以使用 add_subdirectory 添加到任何CMake项目。一个示例项目在 examples/cpp

Python

一个Python库在 PyPI 上发布。对于最新更改,可以通过运行以下命令本地构建和安装。一个使用它的示例在 examples/python

pip install clients/python

gRPC

Protobuf定义位于 jabi.protogrpc-server 是一个参考服务器实现,它将一个设备连接到网络并可以处理并行请求。它提供了各种参数来选择所需的设备。一个示例客户端在 examples/grpc-client

Rust

一个Rust包在 crates.io 上发布。对于最新更改,可以本地添加。一个示例项目在 examples/rust

TODO

以下gRPC客户端。

  • Google Flutter跨平台应用程序

将来有一天可以探索的有趣事物。

  • 更好的文档...
  • 单元测试...
  • 引脚的替代功能
  • 迁移到Thrift进行RPC(在Zephyr中原生支持)
    • 网络(以太网、WiFi)支持
  • BLE支持
  • USB Linux驱动程序显示在 /dev
  • USB HS开发板,性能与STLINK-V3相当

依赖项

~4.5MB
~101K SLoC