工具/软件:Code Composer Studio
在内核2-7上、我使用共享存储器来设置用于 数据传输的缓冲区框架。
在 MSM 和 L2中有读取/写入缓冲器-这些事务由 EDMA3链完成。
当整个链完成时、每个内核都有一个由中断触发的回调函数;
这 在数据传输和中断按预期运行时效果良好。
我在内核1中添加了一个 SRIO 过程、该过程完全通过编程方式使用 LSU 寄存器来影响直接 I/O 传输。
它的运行方式如下:
if (CSL_SRIO_IsLSUFull (hSrio、LSU)== false)
{
// LSU 可免费使用
//写入寄存器!!
CSL_SRIO_SetLSUReg0 (hSrio、LSU、0);//无 RapidIO MSB
CSL_SRIO_SetLSUReg1 (hSrio、LSU、dst);
CSL_SRIO_SetLSUReg2 (hSrio、LSU、src);
CSL_SRIO_SetLSUReg3 (hSrio、LSU、LEN_TEST_wors_TX*4、0);//写入 x 个字节、 无门铃
CSL_SRIO_SetLSUReg4 (hSrio、LSU、0x4560、// desid = 0x4560
0、// src id map = 0、使用 RIO_DEVICEID_REG0
1、// id size = 1对于16位器件 ID
LSU&0x3、//输出 ID = 0
0、//优先级= 0
0、// xambs = 0
0、//抑制正常中断= 0 (无关中断)
0);//中断请求= 0
//开始传输
CSL_SRIO_SetLSUReg5 (hSrio、LSU、
4、// ttype、
5、// ftype、
0、//跳数= 0、
0);//门铃= 0//
//
//在此处执行操作...
//... 一段时间
//在检查 SRIO 是否完成之前
while (CSL_SRIO_IsLSUBusy (hSrio、LSU)=true)
}
该 SRIO 进程在环回模式下运行、循环正确地传输负载、
但是、它会影响其他内核上 EDMA3进程的完成!?
在 这种简单的设置中、我不希望 SRIO 内核影响其他内核。