2024年4月24日发(作者:)
QEMU中挂载vTPM步骤
在Qemu的/hw目录下添加vTPM.c文件,步骤如下:首先定义vTPM的设备管理结
构体,其中包含设备名称、设备描述、初始化函数和读写配置文件函数。增加了保存新PCI
设备的状态数据结构vTPMState
static PCIDeviceInfo vTPM_info={
.=“vTPM”, //定义设备名称
.=“vTPM for QEMU”, //设备描述
.=sizeof(vTPMState), //vTPM状态结构大小,用于保存其状态数据
.init=vTPM_init, //定义PCI设备初始化函数,初始化PCI各种属性
.config_write = pci_ hardware_manager _write_config,
.config_read = pci_ hardware_manager _read_config,
};
typedef struct vTPMState_t{
//PCI设备信息
PCIDevice *pci_dev;
//TPM状态,可用/不可用,激活/未激活,占有/未占有的状态组合
Unsigned char status;
//传输包
Unsigned char buf[TPM_MAX_DATA];
uint32_t addr;
uint8_t index;
uint8_t status;
uint32_t offset;
uint8_t buf[TPM_MAX_PKT];
} vTPMState;
vTPM_init函数会在QEMU开启的时候统一调用。vTPM_init用于初始化vTPM属性,
包括设置PCI的厂商ID号(vendor_id)和设备ID号(device_id),PCI bar空间的大小以及
端口映射函数vTPM_map等,在vTPM_map函数中注册对vTPMState的读写函数。


发布评论