2

我正在尝试使用 Emblocks 和 OpenOCD 运行 NRF51822 芯片,调试器接口是来自支持 SWD 的 Discovery 板的 ST-Link。

当我对空白设备进行编程时,一切正常,程序流程达到了主要功能。但是,当我刷入 S130 时,程序流程永远不会到达我的主要功能(我没有任何其他应用程序代码)。

我检查了汇编代码,S130 卡在(arm asm 传入)WFE 和 bn 指令上,据我所知,它似乎在等待中断、事件或唤醒发生,然后再做任何事情......这是预期的行为还是我做错了什么?

我连接的唯一引脚是 SWD 线(2 个引脚)GND 和 VDD(3 伏)。

4

1 回答 1

4

我很久以前解决了它,但忘记发布解决方案。问题是 Emblocks 提供的脚本文件,需要对其进行修改。

我通过修改链接器文件中的部分来使其工作:

MEMORY
{
SOFTD (rx) : ORIGIN = 0x00000000, LENGTH = 0x20000
FLASH (rx) : ORIGIN = 0x00020000, LENGTH = 0x20000
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0x1800
}

对此:

MEMORY
{
SOFTD (rx) : ORIGIN = 0x00000000, LENGTH = 0x1C000
FLASH (rx) : ORIGIN = 0x0001C000, LENGTH = 0x24000
RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0x1800
}

现在程序流程到达main。

于 2015-08-16T18:33:11.893 回答