使用驱动程序运行程序
如需使用驱动程序运行程序,组件的清单必须包含类似于以下内容的 program
块:
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
}
}
驱动程序组件的 program
代码块至少需要以下字段:
runner
- 此字段必须设置为字符串driver
。binary
- 组件软件包中驱动程序二进制输出的路径。bind
- 组件软件包中已编译的绑定程序的路径。
选填字段
除了必填字段之外,驱动程序运行程序还接受一组可选字段,用于指定元数据或配置驱动程序组件的运行时环境。
主机托管
如果 colocate
字段设置为字符串 true
,驱动程序将被放置在与其父驱动程序相同的驱动程序主机中(如果可能)。不过,这是建议性的。驱动程序管理器可能仍会将驱动程序放在单独的驱动程序主机中,例如,如果父设备设置了 MUST_ISOLATE
。在 DFv1 中,如果父设备是复合设备,则驱动程序会始终共置;仍然可以通过在复合的主要 fragment 上设置 MUST_ISOLATE
来强制执行隔离。
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
colocate: "true"
}
}
如果未指定 colocate
字段,则其值默认为字符串 false
。
colocate
与 host_restart_on_crash
字段互斥。对于驾驶员来说,只能有一个情况是正确的。
默认调度程序选项
default_dispatcher_opts
字段提供了在创建驱动程序的默认调度程序时使用的选项,例如:
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
default_dispatcher_opts: [ "allow_sync_calls" ]
}
}
此字段中的选项对应于此 types.h
文件中定义的标志。目前,支持的选项包括:
allow_sync_calls
:此选项表示调度程序可能不会与其他驱动程序共享 Zircon 线程。此设置允许驱动程序对调度程序进行同步 Banjo 或 FIDL 调用,而不会出现死锁的情况。
后备
如果 fallback
字段设置为字符串 true
,则只有在所有基础驱动程序软件包都编入索引后,此回退驱动程序才会尝试绑定。此外,如果此驱动程序与节点匹配,且非回退驱动程序与同一节点匹配,则非回退驱动程序将改为绑定到该节点。
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
fallback: "true"
}
}
如果未指定 fallback
字段,则其值默认为字符串 false
。
下一个 vDSO
如果 use_next_vdso
字段设置为字符串 true
,则驱动程序将被放在驱动程序主机中,并动态关联下一个 vdso。驱动程序还必须将 colocate
设置为 true
,否则此字段会被忽略。
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
colocate: "true"
use_next_vdso: "true"
}
}
如果未指定 use_next_vdso
字段,则其值默认为字符串 false
。
设备类别
device_categories
字段提供指示驱动程序控制的设备类别的元数据,例如:
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
device_categories: [
{ category: "board", subcategory: "i2c" },
{ category: "sensor", subcategory: "temperature" },
]
}
}
这些元数据用于确定驱动程序在其认证过程中将进行的测试。请参阅 FHCP 架构中设备类别和子类别的完整列表。
主机崩溃时重启
host_restart_on_crash
字段会告知驱动程序框架,如果驱动程序意外停机,应重启驱动程序绑定到的节点的驱动程序主机。
其中包括:
- 驱动程序主机崩溃。
- 驱动程序在运行时会关闭其客户端以连接到
fuchsia.driver.framework/Node
协议。
由于这会影响驱动程序主机,因此只能由主机的根驱动程序进行设置。
根驱动程序是指为其创建主机的驱动程序。当且仅当 colocate
字段设置为 false
时,才会出现这种情况。
因此,host_restart_on_crash
和 colocate
是互斥的。对于驱动程序来说,其中只有一个可以是 true
。
{
program: {
runner: "driver",
binary: "driver/example.so",
bind: "meta/bind/example.bindbc",
host_restart_on_crash: "true"
}
}
如果未指定 host_restart_on_crash
字段,则其值默认为字符串 false
。
当 host_restart_on_crash
为 false
时,如果驱动程序意外关闭,系统会从驱动程序框架的节点拓扑中移除该节点。
深入阅读
如需详细了解驱动程序如何绑定,请参阅驱动程序绑定。