首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在gdb中,为什么cortex m3会重置为地址0?

在gdb中,为什么cortex m3会重置为地址0?
EN

Stack Overflow用户
提问于 2011-02-01 17:40:13
回答 1查看 2.8K关注 0票数 2

我正在为Stellaris LM3S8962 cortex m3芯片构建一个交叉编译工具链。我编写的测试c++应用程序将执行一段时间,然后出错。当我尝试访问内存映射的硬件设备时,会出现该故障。目前我的工作假设是,在我的启动序列中,我遗漏了一些重要的芯片初始化。

我想要理解的是,为什么gdb中的执行会停止,程序计数器被设置为0?我有一个0x0的矢量表,但是第一个值是堆栈指针。我不应该在我在向量表中指定的一个错误处理程序中结束吗?

代码语言:javascript
复制
(gdb) 
187     UARTSend((unsigned char *)secret, 2);
(gdb) cont

Continuing.

lm3s.cpu -- clearing lockup after double fault


Program received signal SIGINT, Interrupt.
0x00000000 in g_pfnVectors ()

(gdb) info registers 
r0             0x1      1
r1             0x32     50
r2             0xffffffff       4294967295
r3             0x0      0
r4             0x74518808       1951500296
r5             0xc24c0551       3259762001
r6             0x42052dac       1107635628
r7             0x20007230       536900144
r8             0xf85444a9       4166272169
r9             0xc450591b       3293600027
r10            0xd8812546       3632342342
r11            0xb8420815       3091335189
r12            0x3      3
sp             0x200071f0       0x200071f0
lr             0xfffffff1       4294967281
pc             0x1      0x1 <g_pfnVectors+1>
fps            0x0      0
cpsr           0x60000023       1610612771

该工具链基于gcc、gdb、openocd。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-23 01:54:51

GDB很高兴地给了你一些线索:

双重故障后

清除锁定

您的CPU处于locked状态。这意味着它不能运行它的“硬故障”中断处理程序(可能它的Vector中有一个0)。

我通常会在忘记“给帝国”通电时得到这些错误,由此产生的总线错误首先升级到“硬故障”,然后升级到锁定状态。应该在你的MCU手册中提到,顺便说一句。

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

https://stackoverflow.com/questions/4860977

复制
相关文章

相似问题

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