你好!
我已经通过 EMIF 模块连接了一个外部存储器接口。 基本而言、它是一个 DPRAM (4K x 16位)。 遗憾的是、我错过了控制器的引脚 BA0、Ba1和 A0、并将控制器的 A1直接连接到 DPRAM 的 A0。
现在无法纠正此硬件错误、我计划现在继续执行此实现。
现在、当我必须在 DPRAM 空间中声明变量时、我使用:
#pragma 位置(ui_dummy_variable、0x64000000)
uint16 ui_dummy_variable;
要将地址0x64000000分配给变量"ui_dummy_variable"、对吧?
由于上述硬件错误、如果我必须在 DPRAM 存储器空间中增加下一个地址、那么我必须将地址乘以8才能生成下一个顺序地址。
pragma 位置(ui_next _dummy_variable、((0x64000000 + 1)* 8))
uint16 ui_next 虚拟变量;
因此、在 DPRAM 空间中、变量"ui_dummy_variable"和"ui_next _summy_variable"会一个接一个地分配。
问题是、如果我需要特定大小的数组、该怎么办?
例如、如果我声明如下:
pragma 位置(ui_dummy_array、((0x64000000 + 2)* 8))
uint16 ui_dummy_array[4];
这是否按照以下方式在 DPRAM 中分配内存:
UI_dummy_array[0]=((0x64000000 + 2)* 8))<- ui_dummy_array[0]的地址
UI_dummy_array[0]=((0x64000000 + 3)* 8)
UI_dummy_array[0]=((0x64000000 + 4)* 8)
UI_dummy_array[0]=((0x64000000 + 5)* 8)
如果不是、那么存储器以什么方式分配给 DPRAM 中的"ui_dummy_array[4]?
请提供一些帮助。
谢谢!
此致、
Chetan。