14 个版本
0.2.14 | 2022年11月5日 |
---|---|
0.2.13 | 2022年11月5日 |
0.2.10 | 2022年10月22日 |
0.1.5 | 2022年10月3日 |
#9 in #flipper-zero
每月下载量:36
用于 flipper0
3.5MB
101K SLoC
Flipper Zero 绑定
为 Flipper Zero Fw 自动生成的绑定(或“externs”),包含一些手工编写的封装和添加,作为上层抽象层。
可以使用以下方式构建:
- 不使用 Flipper fw 源代码,使用默认功能
prebuild
- 使用修改后的 fw,使用功能
use-local-sdk
- 启用功能
use-remote-sdk
官方 fw 将被下载,然后构建方式与use-local-sdk
功能相同。
兼容性
最低支持版本
最新支持版本可以通过以 fw
开头的 git 标签 确定。
先决条件
- Rust 工具链,
nightly
- 目标
thumbv7em-none-eabihf
libclang
用于 bindgen- Flipper Zero 固件克隆 (可选)
- ARM 工具链,运行
fbt
可轻松获取 (可选)
使用预生成的绑定(prebuild
功能)构建时,只需要 Rust 工具链,nightly 频道。
使用未经修改的官方 fw 构建时,只需要 Rust 工具链和固件源代码。
入门指南
只需在 cargo 清单文件中添加依赖
[dependencies]
flipper0-sys = "*"
并按照示例中的说明进行操作。
#![crate_type = "staticlib"] #![no_main] #![no_std]
extern crate flipper0_sys;
use flipper0_sys::ffi::*;
#[no_mangle]
pub unsafe extern "C" fn init(_: *mut u8) -> i32 {
static MESSAGE: &[u8] = b"Hello, World!";
furi_thread_stdout_write(MESSAGE.as_ptr() as _, MESSAGE.len());
0
}
功能
allocator
: 包含分配器实现allocator-global
: 默认,包含 全局分配器 实现oom-global
: 默认,内存不足处理器。禁用它以使用您自定义的处理程序或#![feature(default_alloc_error_handler)]
。panic
: 默认,包含全局 panic & OoM 处理程序宏
: 包含用于FAP入口点的宏#[main]
。
绑定生成定制功能
可以与 use-local-sdk
或 use-remote-sdk
功能一起使用。
derive-default
derive-eq
derive-copy
derive-hash
derive-ord
derive-partialeq
derive-partialord
derive-debug
- 导出Debug
,默认情况下用于调试配置
所有这些 derive-
功能都用于 bindgen 配置。
构建方法功能
默认情况下,prebuild
是开启的。它使用预先生成的绑定,因此不需要 fw。
功能 | 默认 | 描述 | 使用的环境变量 |
---|---|---|---|
prebuild |
+ | 使用预生成的绑定 | |
use-local-sdk |
+ | 查看 FLIPPER_FW_SRC_PATH ,从源代码构建 |
FLIPPER_FW_SRC_PATH (必需),ARM_TOOLCHAIN (可选) |
use-remote-sdk |
- | 克隆远程 Git 仓库,使用 fbt 进行初始设置,然后从源代码构建。 | FLIPPER_REPO_REV ,FLIPPER_REPO_BRANCH ,FLIPPER_REPO_CLONE_PATH ,ARM_TOOLCHAIN (所有变量可选) |
依赖项
~1.5–5.5MB
~98K SLoC