QEMU с U-Boot использует 100% CPU - PullRequest
       53

QEMU с U-Boot использует 100% CPU

0 голосов
/ 09 ноября 2018

Внутри виртуальной машины Lubuntu VirtualBox (хост macOS) я запускаю QEMU с ядром U-Boot (?) Для загрузки моего скомпилированного кода сборки ARM (используя tftp addr *.bin и go addr).

Моя проблема в том, что QEMU использует 100% процессора. Я изучаю курс программирования на ассемблере и мне сказали, что это ненормально (поэтому я и использую виртуальную машину)…

Я не уверен, откуда проблема, это проблема конфигурации с VirtualBox (гостевые дополнения установлены) или с QEMU?

QEMU запускается со следующими аргументами:

export QEMU_AUDIO_DRV=none
qemu-arm/arm-softmmu/qemu-system-arm -s -localtime -m 256 -M reptar -kernel u-boot-arm/u-boot -tftp . -serial mon:stdio -nographic

Версия:

$ qemu-arm/arm-softmmu/qemu-system-arm --version
QEMU emulator version 2.4.1 (qemu-linaro from git), Copyright (c) 2003-2008 Fabrice Bellard

Загрузка при загрузке:

reptar-sp6-emul: sp6_emul_init
sp6_emul_init: failed to connect to SP6 server
sp6_emul_init: terminate thread


U-Boot 2016.09 (Sep 26 2018 - 17:19:23 +0200)

OMAP35XX-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 600 MHz
REDS Reptar board + LPDDR/NAND
I2C:   ready
DRAM:  256 MiB
NAND:  256 MiB
MMC:   OMAP SD/MMC: 0
Using default environment

Net:   smc911x-0
Reptar # 

1 Ответ

0 голосов
/ 12 ноября 2018

QEMU будет использовать хост-процессор, когда гостевой процессор что-то делает, даже если это «что-то» «вращается по кругу».Если гостевой код использует инструкцию CPU WFI («ожидание прерывания») в своем цикле простоя, QEMU будет обрабатывать это, останавливаясь, пока не произойдет гостевое прерывание.(WFI - это инструкция Arm; для других гостевых архитектур, как правило, есть эквивалентные инструкции, такие как HLT в x86.)

То есть, использует ли QEMU 100% ЦП, когда гость находится в «простое», зависит от того, что именно гость простояпетля делает.Цикл бездействия в «реальной ОС», такой как Linux, будет использовать WFI (что на реальном оборудовании полезно для снижения энергопотребления) и поэтому будет простаивать при очень низкой загрузке ЦП хоста.Использование процессора в приглашении u-boot будет зависеть от того, как кодируется u-boot;Использование процессора в вашем ассемблерном коде будет зависеть от того, что он делает.

...