boards: centralize QEMU icount management
Instead of endlessly repeating the same command line args, centralize this and tune the shift value on a per-board basis. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
45979dafb4
commit
a9670ab5cf
31 changed files with 33 additions and 41 deletions
|
@ -37,6 +37,13 @@ config QEMU_ICOUNT
|
||||||
execute one instruction every 2^N ns of virtual time. This will
|
execute one instruction every 2^N ns of virtual time. This will
|
||||||
give deterministic execution times from the guest point of view.
|
give deterministic execution times from the guest point of view.
|
||||||
|
|
||||||
|
config QEMU_ICOUNT_SHIFT
|
||||||
|
int "QEMU icount shift value"
|
||||||
|
depends on QEMU_ICOUNT
|
||||||
|
help
|
||||||
|
The virtual CPU will execute one instruction every 2^N nanoseconds
|
||||||
|
of virtual time, where N is the value provided here.
|
||||||
|
|
||||||
# There might not be any board options, hence the optional source
|
# There might not be any board options, hence the optional source
|
||||||
osource "$(BOARD_DIR)/Kconfig"
|
osource "$(BOARD_DIR)/Kconfig"
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -11,3 +11,4 @@ CONFIG_CONSOLE=y
|
||||||
CONFIG_UART_CONSOLE=y
|
CONFIG_UART_CONSOLE=y
|
||||||
CONFIG_SERIAL=y
|
CONFIG_SERIAL=y
|
||||||
CONFIG_UART_NS16550=y
|
CONFIG_UART_NS16550=y
|
||||||
|
CONFIG_QEMU_ICOUNT=n
|
||||||
|
|
|
@ -11,3 +11,4 @@ CONFIG_CONSOLE=y
|
||||||
CONFIG_UART_CONSOLE=y
|
CONFIG_UART_CONSOLE=y
|
||||||
CONFIG_SERIAL=y
|
CONFIG_SERIAL=y
|
||||||
CONFIG_UART_NS16550=y
|
CONFIG_UART_NS16550=y
|
||||||
|
CONFIG_QEMU_ICOUNT=n
|
||||||
|
|
|
@ -10,7 +10,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-vga none
|
-vga none
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=7,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_SOC_MPS2_AN385=y
|
||||||
CONFIG_BOARD_MPS2_AN385=y
|
CONFIG_BOARD_MPS2_AN385=y
|
||||||
CONFIG_CORTEX_M_SYSTICK=y
|
CONFIG_CORTEX_M_SYSTICK=y
|
||||||
CONFIG_RUNTIME_NMI=y
|
CONFIG_RUNTIME_NMI=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=7
|
||||||
|
|
||||||
# GPIOs
|
# GPIOs
|
||||||
CONFIG_GPIO=y
|
CONFIG_GPIO=y
|
||||||
|
|
|
@ -11,8 +11,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-m 16
|
-m 16
|
||||||
-vga none
|
-vga none
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=7,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -11,6 +11,7 @@ CONFIG_CORTEX_M_SYSTICK=y
|
||||||
CONFIG_RUNTIME_NMI=y
|
CONFIG_RUNTIME_NMI=y
|
||||||
CONFIG_ARM_TRUSTZONE_M=y
|
CONFIG_ARM_TRUSTZONE_M=y
|
||||||
CONFIG_ARM_MPU=y
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=7
|
||||||
|
|
||||||
# GPIOs
|
# GPIOs
|
||||||
CONFIG_GPIO=y
|
CONFIG_GPIO=y
|
||||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_CORTEX_M_SYSTICK=y
|
||||||
CONFIG_RUNTIME_NMI=y
|
CONFIG_RUNTIME_NMI=y
|
||||||
CONFIG_TRUSTED_EXECUTION_NONSECURE=y
|
CONFIG_TRUSTED_EXECUTION_NONSECURE=y
|
||||||
CONFIG_ARM_MPU=y
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=7
|
||||||
|
|
||||||
# GPIOs
|
# GPIOs
|
||||||
CONFIG_GPIO=y
|
CONFIG_GPIO=y
|
||||||
|
|
|
@ -10,8 +10,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-nographic
|
-nographic
|
||||||
-machine virt
|
-machine virt
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=4,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -2,6 +2,7 @@ CONFIG_SOC_QEMU_CORTEX_A53=y
|
||||||
CONFIG_BOARD_QEMU_CORTEX_A53=y
|
CONFIG_BOARD_QEMU_CORTEX_A53=y
|
||||||
CONFIG_ARM_ARCH_TIMER=y
|
CONFIG_ARM_ARCH_TIMER=y
|
||||||
CONFIG_XIP=n
|
CONFIG_XIP=n
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=4
|
||||||
|
|
||||||
# QEMU settings
|
# QEMU settings
|
||||||
CONFIG_SRAM_BASE_ADDRESS=0x40000000
|
CONFIG_SRAM_BASE_ADDRESS=0x40000000
|
||||||
|
|
|
@ -12,8 +12,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-nographic
|
-nographic
|
||||||
-vga none
|
-vga none
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
CONFIG_SOC_SERIES_NRF51X=y
|
CONFIG_SOC_SERIES_NRF51X=y
|
||||||
CONFIG_SOC_NRF51822_QFAA=y
|
CONFIG_SOC_NRF51822_QFAA=y
|
||||||
CONFIG_BOARD_QEMU_CORTEX_M0=y
|
CONFIG_BOARD_QEMU_CORTEX_M0=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||||
|
|
||||||
# enable GPIO
|
# enable GPIO
|
||||||
CONFIG_GPIO=y
|
CONFIG_GPIO=y
|
||||||
|
|
|
@ -9,8 +9,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-nographic
|
-nographic
|
||||||
-vga none
|
-vga none
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -9,3 +9,4 @@ CONFIG_SERIAL=y
|
||||||
CONFIG_CORTEX_M_SYSTICK=y
|
CONFIG_CORTEX_M_SYSTICK=y
|
||||||
CONFIG_UART_STELLARIS=y
|
CONFIG_UART_STELLARIS=y
|
||||||
CONFIG_SCHED_MULTIQ=y
|
CONFIG_SCHED_MULTIQ=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||||
|
|
|
@ -12,10 +12,6 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-dtb ${ZEPHYR_BASE}/boards/${ARCH}/${BOARD}/fdt-single_arch-zcu102-arm.dtb
|
-dtb ${ZEPHYR_BASE}/boards/${ARCH}/${BOARD}/fdt-single_arch-zcu102-arm.dtb
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=3,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(QEMU_KERNEL_OPTION
|
set(QEMU_KERNEL_OPTION
|
||||||
"-device;loader,file=\$<TARGET_FILE:\${logical_target_for_zephyr_elf}>,cpu-num=4"
|
"-device;loader,file=\$<TARGET_FILE:\${logical_target_for_zephyr_elf}>,cpu-num=4"
|
||||||
"-device;loader,addr=0xff5e023c,data=0x80008fde,data-len=4"
|
"-device;loader,addr=0xff5e023c,data=0x80008fde,data-len=4"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
CONFIG_SOC_XILINX_ZYNQMP_RPU=y
|
CONFIG_SOC_XILINX_ZYNQMP_RPU=y
|
||||||
CONFIG_BOARD_QEMU_CORTEX_R5=y
|
CONFIG_BOARD_QEMU_CORTEX_R5=y
|
||||||
CONFIG_XIP=n
|
CONFIG_XIP=n
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=3
|
||||||
|
|
||||||
CONFIG_ISR_STACK_SIZE=512
|
CONFIG_ISR_STACK_SIZE=512
|
||||||
CONFIG_THREAD_STACK_INFO=y
|
CONFIG_THREAD_STACK_INFO=y
|
||||||
|
|
|
@ -11,3 +11,4 @@ CONFIG_UART_NS16550=y
|
||||||
CONFIG_UART_CONSOLE=y
|
CONFIG_UART_CONSOLE=y
|
||||||
CONFIG_INCLUDE_RESET_VECTOR=n
|
CONFIG_INCLUDE_RESET_VECTOR=n
|
||||||
CONFIG_EXTRA_EXCEPTION_INFO=y
|
CONFIG_EXTRA_EXCEPTION_INFO=y
|
||||||
|
CONFIG_QEMU_ICOUNT=n
|
||||||
|
|
|
@ -9,10 +9,6 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-machine sifive_e
|
-machine sifive_e
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
board_set_flasher_ifnset(hifive1)
|
board_set_flasher_ifnset(hifive1)
|
||||||
board_finalize_runner_args(hifive1)
|
board_finalize_runner_args(hifive1)
|
||||||
|
|
|
@ -18,3 +18,4 @@ CONFIG_GPIO_SIFIVE=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_SPI_SIFIVE=y
|
CONFIG_SPI_SIFIVE=y
|
||||||
CONFIG_BOOT_BANNER=y
|
CONFIG_BOOT_BANNER=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||||
|
|
|
@ -9,8 +9,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-nographic
|
-nographic
|
||||||
-machine sifive_e
|
-machine sifive_e
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -16,3 +16,4 @@ CONFIG_RISCV_MACHINE_TIMER=y
|
||||||
CONFIG_GPIO=y
|
CONFIG_GPIO=y
|
||||||
CONFIG_GPIO_SIFIVE=y
|
CONFIG_GPIO_SIFIVE=y
|
||||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=10000000
|
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=10000000
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||||
|
|
|
@ -9,8 +9,4 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-nographic
|
-nographic
|
||||||
-machine sifive_e
|
-machine sifive_e
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
board_set_debugger_ifnset(qemu)
|
board_set_debugger_ifnset(qemu)
|
||||||
|
|
|
@ -18,3 +18,4 @@ CONFIG_GPIO_SIFIVE=y
|
||||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=10000000
|
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=10000000
|
||||||
CONFIG_STACK_SENTINEL=y
|
CONFIG_STACK_SENTINEL=y
|
||||||
CONFIG_TEST_EXTRA_STACKSIZE=256
|
CONFIG_TEST_EXTRA_STACKSIZE=256
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||||
|
|
|
@ -11,13 +11,12 @@ if(CONFIG_X86_64)
|
||||||
set(QEMU_CPU_TYPE_${ARCH} qemu64,+x2apic)
|
set(QEMU_CPU_TYPE_${ARCH} qemu64,+x2apic)
|
||||||
if("${CONFIG_MP_NUM_CPUS}" STREQUAL "1")
|
if("${CONFIG_MP_NUM_CPUS}" STREQUAL "1")
|
||||||
# icount works with 1 CPU so we can enable it here.
|
# icount works with 1 CPU so we can enable it here.
|
||||||
|
# FIXME: once this works across configs, remove this line and set
|
||||||
|
# CONFIG_QEMU_ICOUNT_SHIFT in defconfig instead.
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=5,align=off,sleep=off -rtc clock=vm)
|
list(APPEND QEMU_EXTRA_FLAGS -icount shift=5,align=off,sleep=off -rtc clock=vm)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
set(QEMU_CPU_TYPE_${ARCH} qemu32,+nx,+pae)
|
set(QEMU_CPU_TYPE_${ARCH} qemu32,+nx,+pae)
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=5,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(QEMU_FLAGS_${ARCH}
|
set(QEMU_FLAGS_${ARCH}
|
||||||
|
|
|
@ -16,3 +16,4 @@ CONFIG_SMP=y
|
||||||
CONFIG_MP_NUM_CPUS=2
|
CONFIG_MP_NUM_CPUS=2
|
||||||
CONFIG_X86_MMU=y
|
CONFIG_X86_MMU=y
|
||||||
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
||||||
|
CONFIG_QEMU_ICOUNT=n
|
||||||
|
|
|
@ -18,3 +18,4 @@ CONFIG_SCHED_SCALABLE=y
|
||||||
CONFIG_WAITQ_SCALABLE=y
|
CONFIG_WAITQ_SCALABLE=y
|
||||||
CONFIG_COVERAGE=y
|
CONFIG_COVERAGE=y
|
||||||
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=5
|
||||||
|
|
|
@ -17,3 +17,4 @@ CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_SCHED_SCALABLE=y
|
CONFIG_SCHED_SCALABLE=y
|
||||||
CONFIG_WAITQ_SCALABLE=y
|
CONFIG_WAITQ_SCALABLE=y
|
||||||
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=5
|
||||||
|
|
|
@ -12,3 +12,4 @@ CONFIG_UART_CONSOLE=y
|
||||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=25000000
|
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=25000000
|
||||||
CONFIG_TEST_RANDOM_GENERATOR=y
|
CONFIG_TEST_RANDOM_GENERATOR=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=5
|
||||||
|
|
|
@ -8,9 +8,6 @@ set(QEMU_FLAGS_${ARCH}
|
||||||
-machine sim -semihosting -nographic -cpu sample_controller
|
-machine sim -semihosting -nographic -cpu sample_controller
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_QEMU_ICOUNT)
|
|
||||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
|
||||||
endif()
|
|
||||||
# TODO: Support debug
|
# TODO: Support debug
|
||||||
# board_set_debugger_ifnset(qemu)
|
# board_set_debugger_ifnset(qemu)
|
||||||
# debugserver: QEMU_EXTRA_FLAGS += -s -S
|
# debugserver: QEMU_EXTRA_FLAGS += -s -S
|
||||||
|
|
|
@ -9,3 +9,4 @@ CONFIG_STACK_SENTINEL=y
|
||||||
CONFIG_GEN_ISR_TABLES=y
|
CONFIG_GEN_ISR_TABLES=y
|
||||||
CONFIG_GEN_IRQ_VECTOR_TABLE=n
|
CONFIG_GEN_IRQ_VECTOR_TABLE=n
|
||||||
CONFIG_SIMULATOR_XTENSA=y
|
CONFIG_SIMULATOR_XTENSA=y
|
||||||
|
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||||
|
|
|
@ -60,6 +60,12 @@ endif()
|
||||||
# Connect monitor to the console chardev.
|
# Connect monitor to the console chardev.
|
||||||
list(APPEND QEMU_FLAGS -mon chardev=con,mode=readline)
|
list(APPEND QEMU_FLAGS -mon chardev=con,mode=readline)
|
||||||
|
|
||||||
|
if(CONFIG_QEMU_ICOUNT)
|
||||||
|
list(APPEND QEMU_FLAGS
|
||||||
|
-icount shift=${CONFIG_QEMU_ICOUNT_SHIFT},align=off,sleep=off
|
||||||
|
-rtc clock=vm)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add a BT serial device when building for bluetooth, unless the
|
# Add a BT serial device when building for bluetooth, unless the
|
||||||
# application explicitly opts out with NO_QEMU_SERIAL_BT_SERVER.
|
# application explicitly opts out with NO_QEMU_SERIAL_BT_SERVER.
|
||||||
if(CONFIG_BT)
|
if(CONFIG_BT)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue