qemu.bat 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. @echo off
  2. cls
  3. echo /*
  4. echo * Copyright (c) 2006 - 2025, RT-Thread Development Team
  5. echo *
  6. echo * SPDX-License-Identifier: Apache-2.0
  7. echo *
  8. echo * Change Logs:
  9. echo * Date Author Notes
  10. echo * 2025/04/29 Wangshun first version
  11. echo * 2025/05/14 Optimized Improved robustness and error handling
  12. echo */
  13. echo.
  14. setlocal enabledelayedexpansion
  15. set "CONFIG_FILE=qemu_config.txt"
  16. set "CPU_CONFIG_FILE=cpu_config.txt"
  17. set "DEFAULT_QEMU_DIR=E:\XuanTieCore\6.QEMU"
  18. set "ELF_PATH=%CD%\rtthread.elf"
  19. :: Load QEMU directory from config file or set default
  20. if exist "!CONFIG_FILE!" (
  21. set /p QEMU_DIR=<"!CONFIG_FILE!"
  22. if not defined QEMU_DIR set "QEMU_DIR=!DEFAULT_QEMU_DIR!"
  23. ) else (
  24. set "QEMU_DIR=!DEFAULT_QEMU_DIR!"
  25. )
  26. :: Load CPU parameter from config file or set default
  27. if exist "!CPU_CONFIG_FILE!" (
  28. set /p CPU_PARAM=<"!CPU_CONFIG_FILE!"
  29. if not defined CPU_PARAM set "CPU_PARAM=r920"
  30. ) else (
  31. set "CPU_PARAM=r920"
  32. )
  33. :: Prompt for new QEMU directory
  34. set /p "USER_INPUT=Enter new QEMU directory (Enter for default: !QEMU_DIR!): "
  35. if defined USER_INPUT (
  36. set "USER_INPUT=!USER_INPUT: =!"
  37. if not "!USER_INPUT!"=="" (
  38. set "QEMU_DIR=!USER_INPUT!"
  39. echo !QEMU_DIR!>"!CONFIG_FILE!"
  40. )
  41. )
  42. :: Validate QEMU path
  43. set "QEMU_PATH=!QEMU_DIR!\qemu-system-riscv64.exe"
  44. if not exist "!QEMU_PATH!" (
  45. echo Error: QEMU executable not found at "!QEMU_PATH!".
  46. echo Please verify the QEMU directory and try again.
  47. pause
  48. exit /b 1
  49. )
  50. :: Prompt for new CPU parameter
  51. echo Current CPU parameter: !CPU_PARAM!
  52. set /p "CPU_INPUT=Enter new -cpu parameter (Enter for default): "
  53. if defined CPU_INPUT (
  54. set "CPU_INPUT=!CPU_INPUT: =!"
  55. if not "!CPU_INPUT!"=="" (
  56. set "CPU_PARAM=!CPU_INPUT!"
  57. echo !CPU_PARAM!>"!CPU_CONFIG_FILE!"
  58. )
  59. )
  60. :: Validate ELF file
  61. if not exist "!ELF_PATH!" (
  62. echo Error: rtthread.elf not found at "!ELF_PATH!".
  63. pause
  64. exit /b 1
  65. )
  66. :: Display QEMU version
  67. echo.
  68. "!QEMU_PATH!" --version
  69. :: Run QEMU
  70. echo.
  71. "!QEMU_PATH!" -machine xiaohui -kernel "!ELF_PATH!" -nographic -cpu !CPU_PARAM!
  72. if !ERRORLEVEL! neq 0 (
  73. echo Error: QEMU failed to run. Check configuration or paths.
  74. pause
  75. exit /b !ERRORLEVEL!
  76. )
  77. echo QEMU terminated.
  78. pause
  79. endlocal