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进行配置?还是说也有默认的配置已经做好了?如果有,是在哪里配的?多谢。
xiaolong dou:
回复 Brighton Feng:
多谢,非常详尽而且清晰的解答。
xiaolong dou:
回复 Brighton Feng:
另外,Brighton,对于DSP, “0x0C000000~0x0FFFFFFF,直接访问MSRAM,也没有软件可配的地址映射的功能。”请你再确认一下。从dsp corepac手册上来看,0x0C000000以上的空间,都是可以通过MPAX配置的。正如我原帖中的提起过,只是在复位以后,MPAX0和MPAX1已经默认配好了他们的映射。不需要我们更改。但实际上,这部分还是可以配置的(或者直接修改MPAX0和MPAX1,或者通过设置MPAX2~15来覆盖)。参见sprugw0b的figure 7-10, pg148。
xiaolong dou:
回复 xiaolong dou:
我明白了,在sprugw0b的7.3.2.2.1中,明确说明,对于0x0C00 0000-0x0x0CFF FFFF是强制映射36位中的高12位为00C的,已经解答了我上面的问题。
yuanwen dong:
回复 Brighton Feng:
好贴一定要顶!
Br
William.dong@enea.com
user5491815:
中断向量配置
user5491815:
中断向量配置
user5491815:
回复 yuanwen dong:
中断向量
TI中文支持网