打印

如何实现这样一个高速大吞吐的通信过程。

[复制链接]
1904|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zealane|  楼主 | 2008-1-19 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用10M速率的spi总线,将数据从A板发送到B板。1ms之内必须发完和接收完。发送一次帧数据有700个字节大小。B板由于是采用linux系统,spi驱动,它的同步传输函数io_transfer(700),表示一次连续收700个字节,期间一直占用cpu。但是收完700个字节后执行下一语句会受到linux系统管理,就有较大的时间开销。再执行io_transfer(700)接收数据时,已经超过了1ms。导致A板发送缓冲区溢出。
以上是难题一,还没想到更好的办法。

问题二:A板向B板发送数据。包头有一个字节来标识“是否是最后数据帧”。但是由于时间紧张,不大可能在每次数据来之后判断包头从而做出相应的处理。只能全部收下。但是收下之后再去判断又已经无效了。而且,由于spi时钟是B板提供,所以,即使A板无数据发送时,B板收到的只是00数据。因为每次都是全部收下,不知道如何得知A板不再发送数据?

套用大话西游里的话,我知道这开始,却不知道这结局?
如何判断通信过程结束?

估计我自己的思路有问题。
不知道大家遇到这样的问题,如何去处理类似这种高速大吞吐的通信设计?

相关帖子

沙发
xwj| | 2008-1-19 21:57 | 只看该作者

当然是你的思路有问题

1、首先保证你的协议正常,协议必须包含帧类型和长度,这样判断“是否是最后数据帧”并不需要多少开销
2、确保你的OS调度、切换时间远远小于1mS,否则什么都免谈
3、优化你的同步传输函数io_transfer(700),CPU全占用是不对的,可能的话启用DMA、零内存拷贝等设计
4、按你的说法,A板实际上是SPI从机,A能发送多少个字节必然是由B板主导的,而帧的长度要么由A告诉B,要么就是预先定义好的,因此不可能出现“不知道如何得知A板不再发送数据?”的问题,看看你自己是不是哪里搞错了吧


总之呢,感觉LZ挺稀里糊涂的
呵呵^_^


使用特权

评论回复
板凳
zealane|  楼主 | 2008-1-19 22:32 | 只看该作者

re

因为以前只是接触到一些简单的通信,而且传输速率和传输数据都没有这么快。。所以遇到真正的通信时,的确有些模糊。

1、首先保证你的协议正常,协议必须包含帧类型和长度,这样判断“是否是最后数据帧”并不需要多少开销
--------------------------------------------------------------
要判断最后数据帧,就要判断帧头,判断帧头,就要切换,这个时间就来不及了。

2、确保你的OS调度、切换时间远远小于1mS,否则什么都免谈
------------------------------------------------------
不能保证。

3、优化你的同步传输函数io_transfer(700),CPU全占用是不对的,可能的话启用DMA、零内存拷贝等设计
4、按你的说法,A板实际上是SPI从机,A能发送多少个字节必然是由B板主导的,而帧的长度要么由A告诉B,要么就是预先定义好的,因此不可能出现“不知道如何得知A板不再发送数据?”的问题,看看你自己是不是哪里搞错了吧 
--------------------------------------------------------------
帧长度是A告诉的,跟着帧头。因为没有时间来判断,所以就不知道他什么时候结束。
看来时间是最关键的了。。。


使用特权

评论回复
地板
armecos| | 2008-1-20 00:19 | 只看该作者

高速大吞吐量通信设计宜采用软硬件结合的方式实现

    你的设计思路有问题。
    
    不要指望OS的切换频率低于10ms,如果切换太频繁,OS的开销就太大了,不划算。
    
    对于这种高速串行通信,宜采用FPGA设计一个拆包电路,从高速串行线路上分解出包块。比如用比较器依次将收到的bit字节和帧开始标志比较,相等则找到帧头,然后引发中断,主机设置内存DMA基址,FPGA把后续bit字节存入内存,当传输结束后,再次引发EOT(传输结束)中断,使得OS处理收到的包。
    
    OS只适合于处理块数据,这种串行接收工作只能交给硬件完成。你的采集数据不是连续的,OS完全可以处理得过来。

使用特权

评论回复
5
maxing| | 2008-1-20 02:02 | 只看该作者

思路很好!学习了~~

使用特权

评论回复
6
gyt| | 2008-1-20 09:32 | 只看该作者

2、5楼

2位大虾说的是

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

249

帖子

1

粉丝