对于 tmp105 和 tmp421 温度相同的错误:“‘温度’的参数类型无效,预期:整数”

问题描述 投票:0回答:2

我已按照 https://gist.github.com/jonte/b4bd83a5f2e8330418b1f3322bff74f2 中的步骤使用 QEMU 模拟 tmp105 温度传感器:

假设您的 qemu 目录中有 qemu 源代码:

cd qemu
echo "CONFIG_TMP105=y" >> default-configs/i386-softmmu.mak
./configure && make

然后启动QEmu

    build/qemu-system-x86_64                    \
        --enable-kvm                            \
        -hda ~/Projects/qemu/virtualdebian.img  \
        -m 1G                                   \
        -device tmp105,id=sensor,address=0x50   \
        -qmp unix:$HOME/qmp.sock,server,nowait  \
        -nic user

但是之后,当我尝试写入温度时,它失败了,如下所示:

$ scripts/qmp/qom-get -s $HOME/qmp.sock sensor.temperature    
0
$ scripts/qmp/qom-get -s $HOME/qmp.sock sensor.temperature 
0
$ scripts/qmp/qom-set -s $HOME/qmp.sock sensor.temperature 1 
Traceback (most recent call last):
  File "scripts/qmp/qom-set", line 66, in <module>
    print(srv.command('qom-set', path=path, property=prop, value=value))
  File "scripts/qmp/../../python/qemu/qmp.py", line 274, in command
    raise QMPResponseError(ret)
qemu.qmp.QMPResponseError: Invalid parameter type for 'temperature', expected: integer

tmp421 温度传感器也会发生这种情况。

你知道如何修复这个错误吗?为什么会发生这种情况?

python qemu
2个回答
0
投票

是的,答案就在 https://www.mail-archive.com/[email protected]/msg747323.html

但是在较新版本的 QEmu 中已修复

    diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set
    index 240a78187f..49eebe4924 100755
    --- a/scripts/qmp/qom-set
    +++ b/scripts/qmp/qom-set
    @@ -56,7 +56,10 @@ if len(args) > 1:
              path, prop = args[0].rsplit('.', 1)
          except:
              usage_error("invalid format for path/property/value")
    -    value = args[1]
    +    try:
    +        value = int(args[1])
    +    except ValueError:
    +        value = args[1]
      else:
          usage_error("not enough arguments")

0
投票

vlab@suresh:~/qemu/scripts/qmp$ nc -U ~/qmp.sock {“QMP”:{“版本”:{“qemu”:{“微”:50,“次要”:2,“主要”:9},“包”:“v9.2.0-636-gaa3a285b5b-dirty” }, "功能": ["oob"]}} {“执行”:“qmp_能力”} {“返回”: {}} {“执行”:“qom-set”,“参数”:{“路径”:“/机器/外设/传感器”,“属性”:“温度”,“值”:20000}}

{“返回”:{}}

你也可以这样设置

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.