ARM LPC3250执行来自外部RAM的指令

时间:2016-08-02 06:52:16

标签: arm fpga lpc

我在执行存储在外部RAM中的ARM执行指令时遇到了麻烦。

我写了一个基于LPC3250架构可以闪烁的小程序。如果我通过IAR在线调试将其下载到LPC3250的内部RAM,程序将正常运行。但如果我把它放在外部RAM中就无法运行。

外部RAM是SPARTAN-6(Xilinx FPGA)内置的SRAM块,DATA宽度为32位,存储深度为4096,意味着地址宽度为12位。该RAM可以通过COE文件初始化。

因此,我通过IAR获取程序的BIN文件,然后将BIN文件转换为COE文件,该文件将用于初始化SRAM。 但每次,处理器只在SRAM开头执行三条E59FF018(LDR PC,(PC,#0X18))指令,不能跳转到main()。

我无法弄清楚原因。 由于LPC3250需要,我在生成COE文件之前通过UltraEditor将4个字节(0x13579BD2)添加到BIN文件的开头。 LPC3250的UM表示它将开始执行外部地址0xE0000004的代码ram如果0xE0000000中的值是0x13579BD2。从COE文件中我可以看到在0x13579BD2后面有5条相同的指令(E59FF018)。

请告诉我我错在哪里以及我需要做些什么才能做到正确。

1 个答案:

答案 0 :(得分:0)

好吧,我几乎忘了3年前问过这个问题。现在,我找到了原因。关于从ARM输出的地址信号。我误会了ARM的地址信号是字节寻址,实际上是双字寻址。因此,在FPGA中进行处理时,我不应该消除Address信号的低两位,而ARM已经消除了它。

总而言之,我的问题是解决问题。