hello everyone:
我现在用6678做设计,我使用4个core,core0做一些初始化(PLL等),core1用来泡NDK做网络数据传输,core2和core3用来做SRIO数据传输。
NDK使用的是CCS里面自带的helloworld的例子,srio使用的是基准测试里面的directoryIO模式的。
如果我只运行core0,core2,core3(就是只有SRIO动作),SRIO出错的概率在10%左右,我的core2,core3的动作非常简单,就是两个Core经过外部switch NWRITE NREAD然后数据进行比较。
如果我把core1也运行起来(只是初始化,不做数据传输)SRIO出错的概率就会使50%左右。
现在我怀疑是QMSS和CPPI的初始化管理可能有问题,因为我看SRIO和NDK的例子里面都用了QMSS和CPPI,QMSS和CPPI我也不是很了解。
由于我对DSp也不是很了解现在没什么方向调查了。说能帮我支个方向,srio为什么会不稳定呢。
dc jia:
补充一下,SRIO如果初始化后开始数据传输,若果一开始错了那么后面就会断断续续的出错,若果一开始不会错就永远都不会错了。
我说的出错的概率是指每次重新上电出错的概率。所以我觉得和初始化有关系,每次初始化的结果感觉不一样的,我的代码是使用同一套的,在main函数里面通过core ID 来做分支的。但是代码的mapping是分开的,每个core的code段是放在放在DDR3里面,地址是分开的(core0:0x80004000~0x80008000 core1:0x80008000~0x8000C000 core 2:0x8000C000~0x80010000 core3; 0x80010000~0x80014000)
King Wang1:
你先确定下你所说的SRIO出错是神马错误?是SRIO上的错误,比如Port Error等,还是纯粹软件上的错误,比如SRIO传输成功,接收成功,只是数据比对不上。
如果是SRIO的错误,那么按照错误类型去处理。
如果是软件错误,检查下发送方,比如是否保证cache一致性等。