资源描述
______________________________________________________________________________________________________________
Srio概要设计
1. srio的用途
Srio用作板间通信,和邮箱,messageQ,hyperlink一起构成了系统的通信体系,可以用来传递消息和进行数据搬移。
2. srio的用法
目前已经将所有的接口统一,对用户而言,无需关心内部细节,API会根据用户传递的参数决定是否使用srio进行通信,用户直接使用现有的通信接口和数据搬移接口即可。
3. srio的消息传递功能
srio可以用来做板间的消息传递,实现的方式和messageQ类似,在初始化是后已经执行了socketopen 和sockebind操作,只需要调用sockesend就可以将消息发往目的地,每个核都在初始化的时候创建了一个消息转发任务,接收它板子发来的消息,然后根据消息的头部(该头部由程序内部根据入参加上,用户无需操心),将消息转发给核内对应的任务。目前消息传递没有发现问题。已经将所有的接口封装进了现在的消息传递模块,用户不需要关心消息传递的方式,内部会根据用户入参决定传递路径。
4. Srio的数据搬移功能
Srio可以用来做板间的数据搬移,已经将接口封装进了emda模块里面,使用的方式就是直接调用edma就可以了,可以实现数据跨片读写。但是目前发现如果有其他的任务在执行核间通信(messageQ模块实现),数据搬移传递有错。
5. srio模块使用的资源
中断向量号:7(srio消息传递); 8(srio数据搬移); 9(srio的doorbell)
System Event号:48(srio消息传递; 24(srio数据搬移); 25(srio的doorbell)
如果上面两个号码与平台的其他模块间存在冲突,可以在.cfg文件里面进行更改。
如果数据搬移或者doorbell的System Event号也存在冲突,还要更改中断初始化函数(SrioLsuInitChipIntc, SrioDoorbellInitChipIntc)里面的通道号数组ChannelMap,通过查询事件配置表进行配置。
Second event号:在中断初始化函数里面进行配置(SrioLsuInitChipIntc, SrioDoorbellInitChipIntc),如果存在冲突的话可以根据事件配置表进行配置。
注:事件配置表位于各个dsp芯片手册的外设中断部分。
6. srio的API
见代码,每个API都有注释。
7. Srio模块目前存在的问题
Srio模块和messageQ模块间存在冲突,在使用srio做数据搬移的的时候,如果有其他的任务在做messageQ核间通信,数据搬移的结果不正确。
8. srio可能存在问题的地方。
目前没有做过板间测试,不知道srio和hyperlink间是否存在冲突。
9. srio模块的测试
测试方案:6670的核0给6678的核0发消息,消息的内容为6670上位于DDR的一个数组,赋了初值,6678根据收到的消息从6670上的那个地址读取数据,并对数据搬移的正确性进行判断,一直运行。
测试结果:测试数据搬移了100万轮,数据大小为1024,没有出现消息传递错误和数据搬移错误。但是如果给6670和6678同时再启动一个片内回环传输消息的任务(该任务会使用messageQ模块),数据搬移在执行几百轮的时候出现了数据搬移内容错误。初步判断srio模块和messageQ模块间存在冲突,目前已经将问题提交到了德州仪器在线支持,还没有人解答。
10.注意事项
Srio有doorbell功能,我目前将中断也配置好了,但是北京唐恬部长已经表示不需使用这个功能,所以可以考虑将这个功能注掉,因为这个功能使用了一个中断向量号,一个syetem event号,还有多个second event号。
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文