1 个不稳定版本
使用旧的Rust 2015
0.0.1 | 2018年4月6日 |
---|
#6 in #tablet
1MB
1.5K SLoC
reMarkable.rs - 为reMarkable平板电脑开发
来源说明
该项目最初是从 (https://github.com/canselcik/libremarkable) 分支出来的。
从低延迟的电子墨水屏部分更新到至少最小的多点触控、物理按钮和Wacom Digitizer输入,现在都已理解,并且可以在本存储库中找到它们的最小到完整的实现。
本存储库的重点现在将转向提供这些功能的Rust库。
在Rust实现似乎与C实现相矛盾的情况下,可以以前者作为真相的来源,因为 libremarkable
的C实现是在探索阶段首次出现的。
有关进一步文档,请参阅 wiki。
构建说明
设置工具链
为了构建 libremarkable
和示例(spy.so
和 demo
),在将适当的工具链安装到您的 $PATH
之后,您将需要以下配置。使用 arm-linux-gnueabihf-gcc
工具链构建两个实现。
从以下任何一个来源获得的工具链都可用于为Remarkable平板电脑交叉编译
AUR:
https://aur.archlinux.org/packages/arm-linux-gnueabihf-gcc/
Remarkable:
https://remarkable.engineering/deploy/sdk/poky-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-2.1.3.sh
然后,您可以使用以下命令设置您的Rust工具链以进行交叉编译: rustup target add --toolchain=nightly armv7-unknown-linux-gnueabihf
。
构建libremarkable和示例
为了方便起见,创建了一个简单的Makefile包装器。它公开以下动词
examples
:构建示例library
:构建库all
:库 + 示例
在设备上测试libremarkable和示例
提供的 Makefile
假设设备可达 10.11.99.1
,并且为 SSH 配置了基于密钥的认证,这样每次连接时您就无需输入密码。以下操作可供选择:
run
:在停止xochitl
后,在设备上构建并运行demo.rs
start-xochitl
:停止所有xochitl
和demo
实例,并正常启动xochitl
spy-xochitl
:构建spy.rs
并将其预加载到xochitl
的新实例中。在停止当前实例后。这允许发现官方程序在调用ioctl
时的新枚举。
手动构建的进一步构建说明
如果您选择跳过 Makefile
并直接调用 cargo
,请确保将 --release --target=armv7-unknown-linux-gnueabihf
包含在您的参数中,例如:
➜ rust-poc git:(master) ✗ cargo build --release --target=armv7-unknown-linux-gnueabihf
...
Compiling libremarkable v0.1.0 (file:///home/main/Desktop/libremarkable)
Compiling rust-poc v0.1.0 (file:///home/main/Desktop/RemarkableFramebuffer/rust-poc)
Finished dev [unoptimized + debuginfo] target(s) in 24.85 secs
--release
参数很重要,因为它可以启用优化。没有优化,即使处于空闲状态,CPU利用率也会达到 ~70%。启用优化后,框架运行得非常轻量,空闲时 CPU 利用率为 0%,峰值时为 1-2%。
依赖项
~16MB
~145K SLoC