2008年9月27日 星期六

回答讀者來信有關USB--Buffer問題 (含笑話一則)

問題:

Sent: Sunday, September 21, 2008 5:20 PM
Subject: 關於USB的緩衝區深度問題

冒昧寄信給您    一個困擾了好久的問題

我想以FIFO的方式一次傳送大筆的資料(直接在keil上寫,TD_Poll裡輪詢送出)

但USB傳輸最大的筆數只有512bytes

如果利用緩衝區深度的方式是否可以達到

例如EP8有2倍緩衝區  那是不是可以傳2次512呢

而PC端收到1024筆資料再一次show出

試了很久都沒辦法使用第二個緩衝區  一直512bytes的傳送

找書上似乎也沒有提到  只有自動模式AUTO IN的方法而且是從Device端送來

想請問老師,有沒有什麼方法可以引出所設定的緩衝區深度的緩衝區呢


萬分感激...
----
唉~...又是一個只希望別人幫忙又不喜歡署名的陌生人...
 
讓別人稍微認識您一下有這麼難嗎?!....更何況又是請教別人問題的呢?!...
 
稍微署一下名有這麼難嗎?!...
 
所以啊...我當然就把他擺著...擺到我假日有空再說了囉...
 
----
 
回答 :
 
關於USB 搭配緩衝區的傳輸方式,我想這是跟一般USB控制器本身的硬體設計有很大的關係,
 
也就是他本身硬體之支持度有關。我不知道您所用的USB Controller ?
 
所以一時也無法正確的回答?但是,從我的基本觀念中來說:
 
         如果,他的緩衝區已經本身支持到 512 bytes/一次來說,應該就夠了。
 
除非您真的要爭取很快速的傳輸方式...那麼的話,您可能還需要硬體支持所謂的 DMA 方式,
 
(可能還要搭配所謂 ping-pong buffer 方式...那時,您才真的需要動用到第二組 buffer!)
 
但我認為一般USB Controller 應該不會搞到這麼複雜?!
 
(真正會設計硬體的高手來說...搞不好還不需要這麼大的Buffer ...在IC內部...
 
當Buffer 的SRAM 是很占空間...很貴的咧!)
 
---
 
        第二...我想或許您要的只是在上層軟體的需求而已...那麼應該跟硬體上的緩衝區無關了,
 
而是應該是跟底層的Driver 有關...其實,底層的Driver 根本不知道硬體的緩衝區大小。
 
所以啊...如果若從bulk in 的角度來說的話...
 
您只要能跟底層Driver 一次要個 1024 bytes/一次。 
 
(如果,您真的只是為了這個條件的話)。
 
我想底層的Driver 就會幫您擋著這個條件給您的 USB Controller ...
 
因為畢竟USB Controller 是slave ...
 
"他很乖的!"...您的Driver 每收到 1024 byetes...然後不跟USB Controller 要資料!
 
他會自動停下來的...(您不用管他用多少buffer 來處理傳輸資料數據的!)。
 
當然啊...這個作法剛好跟上述第一個作法完全相反,他剛好是傳輸效能的最大殺手....
 
-------
 
     從這個回答我想又是一個搞錯問題方向的作法...其實,這常常是工程師容易犯的毛病,
 
像昨天有個朋友打電話問我一個車用電子的問題...我說:其實,車用電子有許多是
 
要實際量測後才能分析問題所在...過去我們都是花很多時間在架設這些量測與記錄與分析數據。
 
常常開玩笑說:70% 作實驗... 20 % 作數據整理分析...最後只花 10 %寫程式!
 
所以...我一直強調:工程師不要一下子就要急著上機寫程式... 
 
因為寫程式只會讓您越寫越容易誤入歧途!---最後都搞錯方向了!
 
讓老闆不知道您是努力過頭呢?!還是...搞不清楚狀況?!...又愛又恨的...
 
尤其是一些新公司、小公司或是又沒有經驗豐富的工程主管幫忙釐清工程Issue 的...
 
我真的看過一些 IC 設計公司裡,沒有系統應用高手主管的...結果...老闆一天到晚只是聽
 
業務催著工程師要東西...結果...看著那些可憐的小朋友工程師們...一臉茫然的樣子!
 
怪可憐的...老闆當然很威風啊...回頭還跟我說:"我跟您說啊...當他們弄好了,這個東西啊,
 
我一年可以做到幾KK的量啊...屆時啊,橫掃市場,無人能敵啊。..."
 
我只好當自己像電影裡的周星馳一樣鞠躬哈腰的回答:"是...是...失敬、失敬啊!"  ..
 
結果是:從去年年底...跟我說到今年年底還是這樣!每隔幾個月找我吃飯都快要有點不好意思了!
 
我心裡還不好意思的跟他說:某某總經理啊...您也不用太刻意掩飾這樣子的窘境。
 
跟您搞一樣的產品的...同樣性質的公司...在您公司方圓10 公里內,還有好幾家,
 
有的在頭前溪北岸...有的在頭前溪南岸...都有同樣的問題...都還跟我說同樣的客戶名單耶!
 
要不要透過我幫您們幾家介紹一下...搞不好,相信您們彼此也應該都認識吧!
 
不知各位看官會不會把這件事看成一個笑話?!
 
希望大家都好好努力向前...在殺戮紅海之前,可別把頭前溪給染紅了喔!......
 
 
 
 
 
 

沒有留言:

張貼留言