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

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



