系统调用与服务胶囊的分离及文本屏幕驱动实现
1. 系统调用与服务胶囊的分离
在开发过程中,将系统调用(Syscall)和服务胶囊分离是一种良好的实践。系统调用胶囊向用户空间暴露 API,但为了提高应用的可移植性,将 API 与实际实现分离非常重要。
1.1 以显示驱动为例
不同类型的显示器功能和接口不同,如果每个显示器都有特定的驱动,应用开发者将需要为每个显示器使用不同的 API,这会降低应用的可移植性。
1.2 Tock 的解决方案
Tock 提供了通用的系统调用驱动,如 TextScreen、NineDoF 或 Humidity。这些驱动为用户空间提供标准 API,并依赖实际的服务驱动来执行请求的操作。
1.2.1 NineDoF 驱动示例
NineDoF 驱动向应用暴露标准的系统调用 API,允许应用请求系统运动信息(加速度计、陀螺仪和磁力计)。但它本身不知道如何从传感器获取数据,需要实现了 NineDoF 特性的实际服务驱动。
pub trait NineDof<'a> {
/// Set the client to be notified when the
/// capsule has data ready or has finished
/// some command. This is likely called in a
/// board's main.rs and is set to the
/// virtual_ninedof.rs d
超级会员免费看
订阅专栏 解锁全文
36

被折叠的 条评论
为什么被折叠?



