使用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板不再发送数据?
套用大话西游里的话,我知道这开始,却不知道这结局? 如何判断通信过程结束?
估计我自己的思路有问题。 不知道大家遇到这样的问题,如何去处理类似这种高速大吞吐的通信设计?
|