TI中文支持网
TI专业的中文技术问题搜集分享网站

使用keystone程序发送DIO数据出现的问题

请教:

      我使用Keystone的程序尝试发送位于DSP 核心0L2上的一段数据,发送方式为NWRITE。但很奇怪的是,填写LSU发送之后,从LSU stat寄存器中读回的completion code总是5。而且发送也未能正确完成。这个现象只在发送L2数据时出现,发送MSMC和DDR就没有这样的现象。

      我已经确保了填入LSU的地址是全局地址。后来仔细调试之后,发现我如果对待发送的L2地址进行一些数据访问(直接用赋值方式写那段内存)。再用SRIO NWRITE去发送就正常了。

      代码如下:

1、

……
lsuTransfer.localDspAddress = 0x10820000;

KeyStone_SRIO_LSU_transfer(&lsuTransfer);

uiCompletionCode= KeyStone_SRIO_wait_LSU_completion(j,
lsuTransfer.transactionID, lsuTransfer.contextBit);

结果:uiCompletionCode = 5,发送失败

2、

memset( (int*)0x10820000,0, 1024*64));

……
lsuTransfer.localDspAddress = 0x10820000;

KeyStone_SRIO_LSU_transfer(&lsuTransfer);

uiCompletionCode= KeyStone_SRIO_wait_LSU_completion(j,
lsuTransfer.transactionID, lsuTransfer.contextBit);

结果:uiCompletionCode = 0,发送成功。

这令我很不解,为什么核不访问一下内存,这段内存数据就不能被SRIO发送出去呢?是有什么机制在起作用吗?

顺便说一下,我的应用是让这段内存接收一段外设来的数据,然后将其用SRIO对外转发,所以DSP核未访问这段内存。

请有经验的人给予指导,多谢!

Thomas Yang1:

建议用置顶帖里STK代码先在TI EVM板上做LOOPBACK测试。目标地址是哪里呢?

YUCHAO WANG:

回复 Thomas Yang1:

我的应用是2个C6678通过SRIO互联,目标地址可以是L2也可以是MSMC/DDR,都试过了,没有什么区别。只要源地址是L2,就会出现这样的问题。

我可以试一下LOOPBACK,但是目前没有EVM板。这个问题之前没有人遇到过是吗?

Thomas Yang1:

回复 YUCHAO WANG:

把L2的地址在L2内调整一下,有没有试过?

YUCHAO WANG:

回复 Thomas Yang1:

您的意思是什么?如何调整?

Thomas Yang1:

回复 YUCHAO WANG:

就是在L2内部挪动一下,换个地址

赞(0)
未经允许不得转载:TI中文支持网 » 使用keystone程序发送DIO数据出现的问题
分享到: 更多 (0)