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

在QEMU运行lm3s6965evb固件报错:无法将3升级为HardFault

问题解决思路:QEMU运行Cortex-M3程序出现锁死错误

问题概述

编译WCET基准测试套件的C程序,目标平台为QEMU的lm3s6965evb机型:

  • 编译命令:
    arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -c program.c -o program.o
    arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -specs=nosys.specs -o program.elf program.o
    
  • 运行命令:
    qemu-system-arm -cpu cortex-m3 -machine lm3s6965evb -nographic -kernel program.elf
    
  • 报错信息:

    Timer with period zero, disabling
    qemu: fatal: Lockup: can't escalate 3 to HardFault (current priority -1)

已尝试将ELF转二进制、调整编译参数、用readelf检查ELF文件,问题仍未解决。

可能的解决方向

  • 检查定时器配置逻辑:报错首行提示定时器周期为0,需排查WCET程序中的定时器初始化代码,确保周期值设置为合法的正数,避免触发QEMU模拟异常。
  • 添加平台启动代码:lm3s6965evb需要对应硬件初始化(如时钟、中断向量表),仅用nosys.specs编译缺少必要的启动流程。需添加该平台专用的启动文件(如startup_lm3s6965.s),链接时一并编译,保证硬件环境正确初始化。
  • 验证ELF入口地址:通过readelf -h program.elf查看ELF入口点,确认是否与lm3s6965evb的复位向量地址(通常为0x00000004)匹配,若不匹配需在编译时通过-Wl,-entry=0xXXXXXXX指定正确入口。
  • 排查中断优先级配置:报错显示中断优先级冲突,Cortex-M3中HardFault优先级为-1(最高级),需检查程序中中断优先级设置,确保所有中断优先级数值在0~15范围内,且优先级不会高于HardFault。
  • 参考套件原生编译配置:WCET基准测试套件通常自带特定平台的编译脚本,查看套件内的Makefile或文档,确认是否有针对lm3s6965evb/QEMU的专属编译参数,避免手动编译遗漏关键配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:07:20