This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于C6678 MPAX的问题请教



大家好:

       我对于C6678 MPAX寄存器的映射有些不清楚,想要请教下各位:

       在原来的demo中,MPAXH的BADDR值为0x90000,SEGZ为0x17(16MB),core0的MPAXL的RADDR为0x818000,core1的RADDR为0x811000,core2的RADDR为0x812000.。。。core7的RADDR为0x817000。对于每个core向0x90000000写入不一样的数据,每个core通过CCS的memory broswer查看数据:如查看地址0x91000000,可以看到core1数据,查看0x92000000,可以看到core2数据。。。。查看0x98000000,可以看到core0的数据。如查看地址0x90000000,可以看到各自核自己的数据。(以上是demo实现了的)

      但如果我将core0的RADDR改为0x808000,core1的RADDR改为0x801000......core7的RADDR改为0x807000,每个core从0x90000000看到的数据还是各自核自己的数据,但从0x91000000、0x92000000.......0x98000000就看不到其他核的数据的,请问下这是什么原因?也就是core n的0x90000000和0x9n000000是如何映射起来的?MPAX的BADDR和RADDR之间的替换关系是怎么计算出来的?

      谢谢!

  • 你用的是哪个demo?如果demo是按照你说的配置,则在每个core上通过ccs查看0x90000000才可以看到各自的写入到相应物理地址0x81xxxx对应的数据,地址0x91000000对应的物理地址取决于每个core上MPAX的配置,如果默认只添加了你所说的demo中关于0x90000000地址的重映射,则0x91000000对应的物理地址是0x811000000,对应core1写入的数据,依次类推,这是由于每个core MPAX0/1都有默认的映射配置,其中MPAX1默认将0x80000000开始的2G空间与物理地址0x800000000~0x87FFFFFFF进行映射,因此逻辑地址0x91000000对应的物理地址为0x800000000+0x91000000-0x80000000=0x811000000。

    地址计算:PHY addr=RADDR+ADDR-BADDR

    如果RADDR修改为你说的物理地址,则通过每个core查看0x90000000可以看到各自写入的数据,但是查看0x91000000则对应的物理地址依然是0x811000000,所以看不到其他核写入的数据。

    具体请查阅c66 corepac user guide XMC memory address extension章节。

  • Andy,

         您好,谢谢您的回答。

         我用的是MPAX_registerDemo,在文档Lab Manual第七章里有描述。

         对于以上的地址计算公式,是否我只要不改动MPAX0/1的配置,这个公式就通用的?这个公式是怎么来的呢?在文档上没找到。

  • 逻辑地址与物理地址的换算方式与具体配置没有关系,只是不同的配置决定了地址的映射,我说的计算公式是我总结的,MPAX的地址映射参考资源汇总中的培训材料。

  • studying,

    您好!请问我在哪儿能找到MPAX_registerDemo的代码?能麻烦您把代码发到我邮箱(caiyuxin_good@163.com)吗?谢谢啦!

  • studying,

    您好!请问我在哪里能找到MPAX_registerDemo的代码?能麻烦您把代码发到我邮箱(caiyuxin_good@163.com)吗?谢谢啦!