2个不稳定版本
0.2.0 | 2024年7月23日 |
---|---|
0.1.0 | 2023年9月5日 |
#40 在 硬件支持
每月150次下载
160KB
3.5K SLoC
虚拟设备-scmi
此程序是VirtIO SCMI设备的vhost-user后端。它为主机上的各种实体提供SCMI访问;不一定仅限于那些自身提供SCMI接口的实体。
它已与QEMU的-device vhost-user-scmi-pci
进行了测试,但应与任何支持vhost-user的虚拟机监控程序(VMM)一起工作。请参阅下面的示例部分。
概述
虚拟设备-scmi [选项]
选项
.. 程序:: 虚拟设备-scmi
.. 选项:: -h, --help
打印帮助信息。
.. 选项:: -s, --socket-path=PATH
vhost-user Unix域套接字的位置。
.. 选项:: -d, --device=SPEC
SCMI设备规范,格式为ID,PROPERTY=VALUE,...
。
例如:-,path=/sys/bus/iio/devices/iio:device0,channel=in_accel
。
可用于多个公开设备。如果没有指定设备,则不会向客户操作系统提供设备,但VirtIO SCMI仍然可用。使用--help-devices
列出所有可用设备的帮助信息。
您可以将环境变量RUST_LOG
设置为debug
以在标准错误输出中获取最大消息。
示例
首先启动守护进程
::
主机# vhost-device-scmi --socket-path=scmi.sock --device fake,name=foo
QEMU的调用需要创建一个chardev套接字,该设备可以使用它进行通信,并通过memfd共享虚拟机的内存。
::
主机# qemu-system
-chardev socket,path=scmi.sock,id=scmi
-device vhost-user-scmi-pci,chardev=vscmi,id=scmi
-machine YOUR-MACHINE-OPTIONS,memory-backend=mem
-m 4096
-object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on
...
支持的SCMI协议
当前支持的SCMI协议有
- 基本协议
- 传感器管理
基本只实现了协议的必要和强制部分。
有关详细信息以及如何添加更多协议、主机设备绑定或其他功能,请参阅源代码(vhost-device-scmi
框架)文档。
测试
SCMI仅在Linux中的Arm架构上得到支持。此限制不适用于主机,只要虚拟机是Arm架构即可,主机可以是任何架构。
在虚拟机侧测试它的最简单方法是使用Linux SCMI工业I/O驱动。如果存在3轴加速度计或陀螺仪VirtIO SCMI设备,并且虚拟机内核已编译启用CONFIG_IIO_SCMI
,则该设备应出现在/sys/bus/iio/devices/
中。vhost-device-scmi模拟设备适用于此目的。
当然,也可以使用其他方式访问SCMI设备。以下Linux内核命令行可以用来获取SCMI跟踪信息,除了在dmesg中查看SCMI相关消息外:trace_event=scmi:* ftrace=function ftrace_filter=scmi*
。
内核对测试的支持
kernel
子目录包含创建用于测试的模拟工业I/O设备的说明。
许可证
此项目受以下其中之一许可:
- Apache许可证,版本2.0
- BSD-3-Clause许可证
除非特定文件另有说明。
依赖项
~4.5MB
~81K SLoC