- 論壇徽章:
- 0
|
回復(fù) 8# ShadowStar
恩,非常感謝。我還需要繼續(xù)學(xué)習(xí),對這內(nèi)核態(tài)的操作不是很熟悉,呵呵!
據(jù)其他高手的分析,這個(gè)問題有兩種:
第一種:
hzcpig:
“
采樣線程中,usleep級別下的while(1) cpu占用是很恐怖的,不能改近下采集方式,通過select,poll之類比較友善的方式么。
如果采集數(shù)據(jù)的時(shí)間不確定,最好的方式不是去實(shí)時(shí)輪詢,最好是在數(shù)據(jù)處設(shè)中斷或回調(diào),主動(dòng)通知!
我的問題:
其實(shí)硬件提供了兩個(gè)中斷INT1和INT2,其中INT2用于告知FIFO硬件存儲(chǔ)器半滿,在中斷程序中就可以取數(shù)。INT1用于其它按鍵中斷,我在驅(qū)動(dòng)中用kill_async發(fā)送SIGIO異步信號(hào)通知給我的APP,在APP中對按鍵用信號(hào)處理函數(shù)對SIGIO信號(hào)做了相應(yīng)的處理。而對這個(gè)INT2半滿中斷,我在驅(qū)動(dòng)中卻沒有利用,而用了上面的延時(shí)等待取數(shù)的方式,所以影響了整個(gè)程序的效率。
由于我對這個(gè)異步信號(hào)通知不是很熟悉,是否我也應(yīng)像處理INT1的那種信號(hào)通知APP的處理方式?發(fā)送給APP的信號(hào)為SIGURG或者說SIGUSR1等,會(huì)有問題嗎?非常感謝。
第二種:
yanjinbin0
“
先停掉其他進(jìn)程,用測試數(shù)據(jù)通過socket發(fā)送,看其是否支持3.2Mbps/s的速率發(fā)送.
如果行在慢慢優(yōu)化,如果這樣都行,那你的考慮壓縮傳輸了.”
“建議先做下這個(gè)驗(yàn)證,因?yàn)檫@個(gè)驗(yàn)證頂多只要一天時(shí)間就完了,否則光靠想象,左改右改下,或許某些偶然的場合會(huì)解決問題,但大部分還是要回到原來的步驟,一個(gè)步驟一個(gè)步驟來驗(yàn)證.最好確定問題在來.”
但是 由于目前時(shí)間比較急,我還沒有進(jìn)行驗(yàn)證,雖然我程序是RPC通信程序。 |
|