Hi 大家好。
关于K2芯片中的DDR_3A与DDR3B的地址空间,我有一些疑问,请各位专家解惑。
首先,我理解对DSP核来说,其使用的都是32位的逻辑地址。经过corepac中XMC的MPAX进行address extension后变成36位物理地址。而对于SOC来说,32位逻辑地址经过MSMC的MPAX后变成36位物理地址。在DSP复位后,默认的XMC中MPAX设置为:
0x0000 0000 - 0x7fff ffff,映射到0:0000 0000 - 0:7fff ffff。
0x8000 0000 - 0xffff ffff,映射到8:0000 0000 - 8:7fff ffff
而SES中的MPAX:
0x8000 0000 - 0xffff ffff,映射到8:0000 0000 - 8:7fff ffff
以上理解如有错误请指出。
根据上面的理解,对照数据手册中的地址空间,如果没有做额外的MPAX设置,我的问题:
1. DSP访问逻辑地址0x6000 0000-0x7fff ffff会映射到00 6000 0000的DDR3B的空间。而SOC, 比如EDMA,我有些迷惘,因为SES的MPAX中并没有直到SES对于0x8000 0000以下地址的映射。此时,如果SOC访问0x6000 0000地址,会发生什么?(比如EDMA的dst addr设为0x6000 0000)
2. 对于00 8000 0000物理地址空间,DSP与SOC的view不相同。此时如果SES与XMC中都将 0x8000 0000 - 0xffff ffff,映射到0:0000 0000 - 0:7fff ffff,即将相同的逻辑地址(如0x8000 0000)映射到相同的物理地址(如00 8000 0000),但实际上这个物理地址对DSP是在DDR3B上,对SOC是在DDR3A,此时就会出现DSP与SOC访问同一地址但实际并不是同一个内存单元的问题,这感觉很奇怪啊。请问如何理解这一点?是不是需要将SES与XMC的配置不同才能解决这一问题?
3. 对于DDR3A的配置空间,是在01 2100 0000物理地址。复位后的DSP MPAX并没有这一地址的映射。是不是DSP需要先自己设置XMC中的 MPAX才能对DDR_3A进行配置?还是说也有默认的配置已经做好了?如果有,是在哪里配的?多谢。