- 论坛徽章:
- 0
|
回复 8# ShadowStar
恩,非常感谢。我还需要继续学习,对这内核态的操作不是很熟悉,呵呵!
据其他高手的分析,这个问题有两种:
第一种:
hzcpig:
“
采样线程中,usleep级别下的while(1) cpu占用是很恐怖的,不能改近下采集方式,通过select,poll之类比较友善的方式么。
如果采集数据的时间不确定,最好的方式不是去实时轮询,最好是在数据处设中断或回调,主动通知。”
我的问题:
其实硬件提供了两个中断INT1和INT2,其中INT2用于告知FIFO硬件存储器半满,在中断程序中就可以取数。INT1用于其它按键中断,我在驱动中用kill_async发送SIGIO异步信号通知给我的APP,在APP中对按键用信号处理函数对SIGIO信号做了相应的处理。而对这个INT2半满中断,我在驱动中却没有利用,而用了上面的延时等待取数的方式,所以影响了整个程序的效率。
由于我对这个异步信号通知不是很熟悉,是否我也应像处理INT1的那种信号通知APP的处理方式?发送给APP的信号为SIGURG或者说SIGUSR1等,会有问题吗?非常感谢。
第二种:
yanjinbin0
“
先停掉其他进程,用测试数据通过socket发送,看其是否支持3.2Mbps/s的速率发送.
如果行在慢慢优化,如果这样都行,那你的考虑压缩传输了.”
“建议先做下这个验证,因为这个验证顶多只要一天时间就完了,否则光靠想象,左改右改下,或许某些偶然的场合会解决问题,但大部分还是要回到原来的步骤,一个步骤一个步骤来验证.最好确定问题在来.”
但是 由于目前时间比较急,我还没有进行验证,虽然我程序是RPC通信程序。 |
|