如何在QEMU中保留ESP32 UART0窗口输出,仅重定向UART1到PTY
解决ESP32 QEMU中UART0保留窗口输出、UART1重定向到PTY的问题
直接修改QEMU启动命令,将第一个串口(对应ESP32的UART0)绑定到标准输入输出(QEMU窗口),第二个串口(对应UART1)指定为PTY即可:
qemu-system-xtensa -nographic -M esp32 -m 4 -drive file=$ESP_FILE,if=mtd,format=raw -gdb tcp::1234,nowait -serial stdio -serial pty -S
关键参数说明
-serial stdio:将ESP32的UART0绑定到QEMU的标准输入输出,bootloader日志、ESP_LOG输出、默认的printf()(ESP-IDF默认映射到UART0)都会直接显示在QEMU窗口中。-serial pty:将ESP32的UART1绑定到伪终端设备,启动后QEMU会在控制台输出该PTY的路径(比如/dev/pts/1),你可以用cat /dev/pts/1或者串口工具(如minicom)读取UART1的输出。
为什么之前的命令不符合需求
你之前用两个-serial pty,QEMU会依次把ESP32的UART0、UART1分别绑定到两个PTY,导致UART0的输出也被重定向走。而用-serial stdio作为第一个串口参数,就能保留UART0在QEMU窗口的输出,同时仅将UART1分流到PTY。
验证方法
启动QEMU后,你会看到类似这样的提示:
char device redirected to /dev/pts/1 (label serial1)
此时QEMU窗口会正常显示bootloader、ESP_LOG等信息,而你的程序中通过UART1发送的内容会输出到/dev/pts/1,可以用另一个终端执行cat /dev/pts/1查看。
内容的提问来源于stack exchange,提问作者Alex Cristian R
相关产品推荐
相关产品推荐

