Part Number:TMS320C6678
各位老师好:
在使用6678平台上使用NDK组件,因为需要使用多核,所以对MPAX进行设置,从而使不同核使用同一个逻辑地址,但指向不同的物理地址。且设置程序入口地址到MPAX初始化,MPAX初始化完成后再跳转到_c_int00处。先在单核上进行了测试,通过写重映射后的逻辑地址确认了MPAX初始化成功,程序也能正常启动运行。但当把程序的默认heap放到重映射后的地址范围内时,就会出现NDK初始化时,调用Qmss_queuePushDescSize和Qmss_queuePop不一致的情况,从而初始化失败,放到其他段则正常。怀疑是逻辑地址到物理地址转换的问题,恳请您的指导。
man lingbin:
补充一下,如果不使用MPAX设置的方式,能否在cfg文件中设置不同的核使用不同的内存段。测试过如下的代码:
var Core = environment[“coreid”];if(Core == 0){ Memory.defaultHeapInstance = Program.global.heap0;}else if(Core == 1){ Memory.defaultHeapInstance = Program.global.heap1;}
没有报错,但也没有效果。
,
Nancy Wang:
man lingbin 说:但当把程序的默认heap放到重映射后的地址范围内时,就会出现NDK初始化时,调用Qmss_queuePushDescSize和Qmss_queuePop不一致的情况,从而初始化失败
工程编译没有问题,heap也能分配成功,但是NDK初始化失败?
man lingbin 说:如果不使用MPAX设置的方式,能否在cfg文件中设置不同的核使用不同的内存段
没有效果是没有分配成功吗?
,
man lingbin:
是的。heap能分配成功,同步哦memory browser观察也确实在重映射后的地址范围内,但ndk初始化失败,在Add_MACAddress函数中报Timeout waiting for reply from PA to Pa_addMac command错误。
没效果是指无法使条件判断中的语句如Memory.defaultHeapInstance = Program.global.heap0;生效,无法根据当前使用的核分配不同的堆空间。
,
Nancy Wang:
建议您到英文论坛咨询看看,会有产品线工程师支持。
,
man lingbin:
好的,谢谢了
,
Nancy Wang:
我会暂时将该帖关闭。