系统调用与服务胶囊的分离及文本屏幕驱动实现
1. 系统调用与服务胶囊的分离
系统调用胶囊向用户空间暴露 API。虽然驱动可以提供特定的 API,但将 API 与实际实现分离是非常重要的。以显示驱动为例,市面上有多种类型的显示器,每种显示器的功能和接口方式都不同。如果为每个显示器都开发一个驱动,应用开发者就需要针对不同的显示器使用不同的 API,这会降低应用的可移植性。
Tock 通过提供通用的系统调用驱动(如 TextScreen、NineDoF 或 Humidity)来解决这个问题。这些驱动向用户空间提供标准的 API,并依赖实际的驱动来执行请求的操作。例如,NineDoF 驱动向应用暴露标准的系统调用 API,允许应用请求系统运动信息(加速度计、陀螺仪和磁力计)。但它本身并不知道如何从传感器获取这些数据,需要一个实际的服务驱动来完成这个任务。任何实现了 NineDoF 特性的传感器驱动都可以胜任这个工作。
以下是 NineDoF 和 NineDoFClient 特性的代码:
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 driver.
fn set_client(&self,clien
系统调用与文本屏幕驱动实现
超级会员免费看
订阅专栏 解锁全文

34

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



