请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:RM57L843 主题中讨论的其他器件:HALCOGEN、 RM48L952
背景简介:
- RM57连接16位 SDRAM 的定制板(让我将其简称为 Board1)。
- RM57的另一个定制板通过 EMIF 同步接口连接 FPGA。 (让我将其简称为 Board2)。
环境:
- HALCOGEN 4.7.0
- TI ARM 编译器16.9.4
- CCS 7.3
EMIF 配置:
测试代码:
- CODE_R32 -从 EMIF 地址读取32个字节。
-
void test_ldm32 (uint32_t addr){ asm ("\tSTMFD sp!、{R3-R10}"); asm ("\tLDMIA r0!、{R3-R10}"); asm ("\tLDMFD sp!、{R3-R10}"); }
-
- CODE_R16 -从 EMIF 地址读取16个字节。
-
void test_ldm16 (uint32_t addr){ asm ("\tSTMFD sp!、{R3-R6}"); asm ("\tLDMIA r0!、{R3-R6}"); asm ("\tLDMFD sp!、{R3-R6}"); }
-
- CODE_R8 -从 EMIF 地址读取8个字节。
-
void test_ldm8 (uint32_t addr){ asm ("\tSTMFD sp!、{R3-R4}"); asm ("\tLDMIA r0!、{R3-R4}"); asm ("\tLDMFD sp!、{R3-R4}"); }
-
- CODE_R4 -从 EMIF 地址读取4个字节。
-
void test_ldm4 (uint32_t addr){ asm ("\tSTMFD sp!、{R3}"); asm ("\tLDMIA r0!、{R3}"); asm ("\tLDMFD sp!、{R3}"); }
-
- CODE_W32 -向 EMIF 地址写入32个字节。
-
void test_STM32 (uint32_t addr){ asm ("\tSTMFD sp!、{R3-R10}"); asm ("\tSTMIA r0!、{R3-R10}"); asm ("\tLDMFD sp!、{R3-R10}"); }
-
- 上述所有测试代码均使用0x80000000作为输入参数。 因此地址必须与16个字节对齐。
问题详细信息:
- Board1:为简单起见、使用示波器仅检测 EMIF_CLK 和 EMIF_nDQM[0]上的信号。
- Board2;使用 FPGA 自动绘制信号图。
问题:
- 这个问题大大影响了 RAM 的 r/w 性能。 此问题是否有解决方法?
- 我们有另一个使用 RM48L952的定制板、它通过 EMIF 同步接口连接 FPGA。 但 RM48工作正常、突发长度能够达到预期的8、而没有提早拉低 Nwe。 RM48和 RM57中的 EMIF 控制器看起来非常相似。 他们为什么有这种不同的行为?




