summaryrefslogtreecommitdiff
path: root/bsp/xuantie/smartl/e901plus/qemu.bat
blob: 7cef4db0811877516246974cd0ff9703e11e7fe7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
@echo off
cls

echo /*
echo  * Copyright (c) 2006 - 2025, RT-Thread Development Team
echo  *
echo  * SPDX-License-Identifier: Apache-2.0
echo  *
echo  * Change Logs:
echo  * Date           Author       Notes
echo  * 2025/04/29     Wangshun     first version
echo  * 2025/05/14     Optimized    Improved robustness and error handling
echo  */
echo.

setlocal enabledelayedexpansion

set "CONFIG_FILE=qemu_config.txt"
set "CPU_CONFIG_FILE=cpu_config.txt"
set "DEFAULT_QEMU_DIR=E:\XuanTieCore\6.QEMU"
set "ELF_PATH=%CD%\rtthread.elf"

:: Load QEMU directory from config file or set default
if exist "!CONFIG_FILE!" (
    set /p QEMU_DIR=<"!CONFIG_FILE!"
    if not defined QEMU_DIR set "QEMU_DIR=!DEFAULT_QEMU_DIR!"
) else (
    set "QEMU_DIR=!DEFAULT_QEMU_DIR!"
)

:: Load CPU parameter from config file or set default
if exist "!CPU_CONFIG_FILE!" (
    set /p CPU_PARAM=<"!CPU_CONFIG_FILE!"
    if not defined CPU_PARAM set "CPU_PARAM=e901plusbm-cp"
) else (
    set "CPU_PARAM=e901plusbm-cp"
)

:: Prompt for new QEMU directory
set /p "USER_INPUT=Enter new QEMU directory (Enter for default: !QEMU_DIR!): "
if defined USER_INPUT (
    set "USER_INPUT=!USER_INPUT: =!"
    if not "!USER_INPUT!"=="" (
        set "QEMU_DIR=!USER_INPUT!"
        echo !QEMU_DIR!>"!CONFIG_FILE!"
    )
)

:: Validate QEMU path
set "QEMU_PATH=!QEMU_DIR!\qemu-system-riscv32.exe"
if not exist "!QEMU_PATH!" (
    echo Error: QEMU executable not found at "!QEMU_PATH!".
    echo Please verify the QEMU directory and try again.
    pause
    exit /b 1
)

:: Prompt for new CPU parameter
echo Current CPU parameter: !CPU_PARAM!
set /p "CPU_INPUT=Enter new -cpu parameter (Enter for default): "
if defined CPU_INPUT (
    set "CPU_INPUT=!CPU_INPUT: =!"
    if not "!CPU_INPUT!"=="" (
        set "CPU_PARAM=!CPU_INPUT!"
        echo !CPU_PARAM!>"!CPU_CONFIG_FILE!"
    )
)

:: Validate ELF file
if not exist "!ELF_PATH!" (
    echo Error: rtthread.elf not found at "!ELF_PATH!".
    pause
    exit /b 1
)

:: Display QEMU version
echo.
"!QEMU_PATH!" --version

:: Run QEMU
echo.
"!QEMU_PATH!" -machine smartl -kernel "!ELF_PATH!" -nographic -cpu !CPU_PARAM!
if !ERRORLEVEL! neq 0 (
    echo Error: QEMU failed to run. Check configuration or paths.
    pause
    exit /b !ERRORLEVEL!
)

echo QEMU terminated.
pause
endlocal