2 个版本
0.1.1 | 2024年3月24日 |
---|---|
0.1.0 | 2024年3月21日 |
#520 在 硬件支持
每月 21 次下载
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
- 为C++编译器安装 Visual Studio C++。
- 使用 winget 安装 git 和 CMake。
- 使用 vcpkg 安装
libusb
、gRPC、
OpenSSL
和getopt
。
- 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.proto
。 grpc-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