首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qemu:致命:锁定:无法将3升级到硬故障(当前优先级-1)错误-Core转储

Qemu:致命:锁定:无法将3升级到硬故障(当前优先级-1)错误-Core转储
EN

Stack Overflow用户
提问于 2019-03-18 11:27:41
回答 3查看 2K关注 0票数 4

在QEMU上,我试图用皮质STM32F407XX处理器来模拟M4控制器。我编写了.ld文件如下:

代码语言:javascript
复制
ENTRY(_Reset)

MEMORY
{
  FLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 512K
  RAM (xrw)       : ORIGIN = 0x20000000, LENGTH = 128K
  CCMRAM (rw)     : ORIGIN = 0x10000000, LENGTH = 64K
  PERIPHERALS(rw) : ORIGIN = 0x40000000, LENGTH = 128K
}

SECTIONS
{

 .startup . : { stm32.o(.text) } >FLASH
 .text : { *(.text) } 
 .data : { *(.data) } >RAM AT> FLASH
 .bss : { *(.bss COMMON) } >RAM
 . = ALIGN(4);
 . = . + 0x400; /* required amount of stack */
 stack_top = 0x20020000;
}

当我生成.elf文件并运行代码时,我会得到错误

代码语言:javascript
复制
Qemu: fatal: Lockup: cant escalate 3 to Hardfault (Current Priority -1) error.
Aborted (Core Dumped)

我觉得这是个记忆问题。我做错了什么?我已经根据STM32F407的参考手册要求分配了闪存、内存存储器。

为什么这个错误首先出现&我如何解决这个错误?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-19 13:03:30

将向量表放在正确的位置解决了这个问题。在上面的评论中,我遵循了@peter的所有说明。我要把它们加在这里。

您可以使用-d打开QEMU的一些调试日志选项('in_asm、int、exec、cpu、guest_errors、unimp‘可能是一个很好的开始设置),这将告诉您您的来宾代码正在做什么。首先,我要检查您的ELF文件在QEMU希望找到它的地方有一个向量表。否则,QEMU将立即从重置(这是硬件所做的)硬故障。 核心转储是预期的: QEMU进入锁定,但我们没有正确地模拟锁(严格地说,QEMU不应该像真正的硬件那样坐在那里做任何事情),所以我们打印一个寄存器转储并中止()。正如我在前面的评论中所说的,您的问题几乎肯定是二进制文件没有向量表。 向量表中必须包含的主要内容是初始PC和堆栈指针的条目。中断和异常项值得输入,但只有在出现中断或异常时才需要。但是,如果您为其他故障添加了调试处理程序,那么至少在程序的其余部分出现错误时,您会知道发生了错误。

票数 2
EN

Stack Overflow用户

发布于 2019-05-03 11:58:04

任何像我这样试图修复qemu硬错误的人的附加信息:由于一个未实现的指令,我得到了相同的硬错误。

这是因为我用-mcpu=cortex-m4编译了代码,但是用-cpu cortex-m3运行了qemu。

这方面的棘手之处在于,它适用于大多数代码,因为gcc通常不使用“M4专用指令”之一(即使取决于优化级别--它适用于-O1,但与-O2一起失败).

票数 2
EN

Stack Overflow用户

发布于 2019-04-04 11:23:06

您需要重置您的ROM后,您的内核加载在您的机器(在armv7m_load_kernel调用后)。例如,您可以使用:

代码语言:javascript
复制
rom_check_and_register_reset();
qemu_devices_reset();

CPU应该在复位处理器上启动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55220313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档