各位好:
请教各位以下关于MAR的使用问题:
1.MAR作用是不是把MAR表格里的地址映射到XMPAX 寄存器配置的地址上去?这样理解不清楚对不对
2.XMPAX寄存器中的BADDR[31:12]只有10bit,跟实际地址32bit是怎么对应的?这个地方不太懂
3.MAR表格里的MAR80对应的是0x50000000~0x50ffffff,但是这片内存地址是reserved,能用作MAR映射吗?会不会有问题?
希望各位大神能帮忙解答一下,万分感谢!!
user3881891:
个人理解如下
1、MAR寄存器的作用是定义对应内存段的属性的,包括是否可缓存以及是否可预读取,跟映射以及xmpax没有直接关系;
2、XMPAX寄存器中的BADDR[31:12]是20bit,段的大小不小于4KB,即32位的地址至少是4kb对齐(地址低12位段都是0),所以用20bit足可以表述改地址(20bit的高位段)。
3、答案可以同1
Nancy Wang:
回复 user3881891:
感谢帮忙回复!
是这样理解的。在MSMC手册中有这样一段话,一起理解一下。for 4 KB segments, all 20 bits of the BADDR field must match the upper
20 bits of the system address. For 16 MB segments, the upper eight bits of the BADDR
field must match the upper eight bits of the C66x CorePac address; the remaining bits
are ignored. For 4 GB segments, no BADDR bits are consulted and all addresses match.
www.ti.com/…/sprugw7a.pdf
HaiShan Lin:
回复 user3881891:
谢谢解答,地址位这个我理解了;但是第3个问题,我看文档介绍是XMPAX0/1即segment0/1是芯片默认映射的;假如我配置的是segment15寄存器,配置的系统地址是0x080000000之后的地址段,映射到逻辑地址0x50000000这个上面,这么使用会不会有问题?因为相当于segment0和segment15都用到逻辑地址0x50000000了;另外XMPZX的配置是不是只要1个核配置就可以了?
HaiShan Lin:
回复 Nancy Wang:
谢谢回复,我看到这个文档了,地址段这一个我也理解了;关于第3个问题,我配置xmpax15的寄存器映射物理地址0x080000000之后的8KB大小到逻辑地址0x50000000上去会不会有问题呢?会不会跟xmpax0的映射相互冲突呢?
user3881891:
回复 HaiShan Lin:
segments是有优先级的,segment15的优先级比segment0高,如果两个段映射到重叠区域,应该是以段下标号高的为准吧。