You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

源码编译QEMU后Cortex-M33半托管功能失效求助

问题排查:源码编译QEMU v7.2.0后Cortex-M33半托管功能失效

核心排查步骤

1. 检查configure阶段的半托管支持状态

源码编译QEMU时,若依赖缺失或配置逻辑触发自动禁用,半托管功能可能被关闭。执行以下命令查看configure输出中的相关状态:

./configure --target-list=arm-softmmu,arm-linux-user 2>&1 | grep -i semihosting

正常输出应包含semihosting support: enabled,若显示disabled,需补全依赖后重新执行configure。

2. 补全Kubuntu Jammy环境下的编译依赖

编译支持半托管的QEMU需安装完整依赖包,执行:

sudo apt install libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev libsdl2-dev

安装完成后重新执行./configure和make。

3. 调整半托管启动参数

QEMU v7.x对mps2-an505机器的半托管默认输出配置与apt默认的v6.x版本存在差异,需显式指定控制台输出:

./build/qemu-system-arm -machine mps2-an505 -cpu cortex-m33 -m 16M -nographic --semihosting-config enable=on,target=native,console=stdio -kernel build/ARMCM33/kernel.elf -S -s

新增console=stdio强制将半托管输出定向到终端。

4. 验证编译产物的半托管功能完整性

确认编译后的QEMU已包含半托管相关选项:

./build/qemu-system-arm --help | grep -A5 -B5 semihosting

若输出包含--semihosting-config的详细说明,说明功能已编译;若未出现,需检查configure日志中的错误提示。

5. 检查目标ELF文件的半托管兼容性

使用readelf验证ELF文件是否包含半托管相关标记:

readelf -a build/ARMCM33/kernel.elf | grep -i semihosting

同时确认CMSIS代码中使用的半托管调用(如printf依赖的__semihosting_write)符合ARM规范,未被自定义实现覆盖。


内容的提问来源于stack exchange,提问作者cberk1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:01:29