#smartwatch #operating-system #no-std

no-std mwatch_kernel

一个嵌入式“智能”手表

4个版本 (2个稳定版)

2.0.0 2022年12月23日
1.0.0 2019年5月8日
0.9.0 2019年2月11日
0.8.0 2019年1月28日

嵌入式开发中排名1676


2 个包中使用

MIT/Apache

73KB
1.5K SLoC

Build Status

mwatch

使用Rust编写的嵌入式智能手表,使用RTFM框架进行多线程。

Logo

特性

  • 电容式触摸感应输入 - 支持多点触控手势
  • 全16位色ssd1351 OLED
  • 可运行时安装的应用程序(更多信息请参阅SDK部分
  • 实时时钟
  • 通过蓝牙发送通知
  • 可在稳定的Rust 2018上构建

为MWatch开发应用程序

mwatch提供了一个SDK,用于开发可以在运行时通过mwatch-send-tool安装的应用程序。有关SDK的更多信息,请参阅SDK仓库

系统架构

概述

MWatch试图遵循现代计算机操作系统,包括内核、内置的窗口/显示管理器以及用于在手表上开发用户空间应用程序的用户空间API,还有一些内置应用程序。

窗口/显示管理器

窗口管理器处理手表内部的状态/应用程序的输入和渲染,所有状态必须实现State特质才能运行,但可以可选地实现其他辅助特质,这允许窗口管理器为状态启用更多功能。

内核API

内核提供API供SDK交互,这由内核crate中的lib.rs提供。这允许SDK正确依赖内核,意味着如果内核实现了新的API,SDK要使用它只需提高内核版本即可。目前没有检查SDK产生的二进制文件是否与当前运行的内核兼容。

协议

MWatch有一个内置的蓝牙模块连接到usart2。通过这个串行接口,我们可以接收NotificationsApplications等。基本协议如下所示

STX -> TYPE -> (DELIM:DATA)* -> ETX
                ^^^^^^^^^^
                Can repeat many times based on the type 

在英语中,起始字节后跟一个类型,然后跟任意数量的分隔符,最后是数据,最后是ETX。所有数据必须是有效的ASCII,发送二进制数据之前必须先转换为十六进制半字节。有关更多信息,请参阅application_manager。

输入管理

内置在mwatch中的TSC(触摸感应控制器)提供三个输入。内核轮询这些输入并将结果多路复用来生成最终输出。例如,触摸中间按钮会产生中间输出,同时触摸左右按钮会产生双击输出。

文档

变更日志

构建

  • 需要安装thumbv7em-none-eabi目标,使用rustup target add thumbv7em-none-eabi来完成。
  • 需要cargo-binutils来提供额外功能,例如生成精简的二进制文件。注意:必须使用rustup component add llvm-tools-preview安装llvm-tools-preview组件,才能使其正常工作。

许可

根据您的选择

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,将按照上述方式双重许可,没有其他条款或条件。

版权所有 Scott Mabin 2019

依赖关系

约5MB
约67K SLoC