2008年4月22日 星期二

USB 轉DMX512 (序篇二)

一般人對於 使用USB 來說:或許都很難感受到底層Driver (驅動程式)問題。

都把他想像成一般 RS232 那種感覺...買一條RS232 轉USB 就沒事了!

當然啊...版主自己也不搞USB底層USB驅動程式。

但是最近作了一個實驗:就是 USB 轉DMX512 這個東西...

其實,以一個USB 要來傳 250kbps 的東西是輕而易舉的事,

根本不需要什麼 USB 2.0 的東西...

但是,這種DMX512 的東西有一個很討厭的要求:就是要及時傳輸!

這個問題就會考驗您USB 及時傳輸效能了 !!

如果:您是希望從PC 端想固定每多少 msec 由USB 幫您傳一筆資料時...

您會如何作呢?!在VC++ 的環境中呼叫一個  時間中斷函數?!

時間準嗎?!...其實,以目前PC 的超強的運算能力來說:還好!

但是實際?真的如此嗎?!

答案是:您資料傳到USB 收到,再幫您往下游傳時,這個時間是忽快忽慢的...

Why ?!...答案就是出在作業系統所管的驅動程式上!

這個問題據說在 USB 轉RS232 的現象更明顯...

見:http://godspeedlee.myweb.hinet.net/job4.html

(只要看跟這篇文章有關的內容就好了!萬一被其他內容給洗腦了,

可都不要怪到我頭上喔...不管我的事喔..人家的言論自由...

..."因為 USB<->RS232 跟主機板上的 COM Port不一樣,塞資料給它
不會馬上幫你傳..."...)

-----------------------------------

所以啊...您要控制USB 的及時傳輸能力,一定得從USB Controller 韌體端去下手!

讓PC 端上層應用程式的資料,盡快的到達USB 底層Driver 去等!

如此一來。您才可以做到這種資料量要大不大,卻又要即時(real-Time)傳輸的要求。

不要USB Controller 要資料時,再由作業系統去向您的上層應用程式要資料!

這時,您才開始準備資料...那鐵定忽快忽慢的...您想想看:

現在WINDOWS 作業系統...絕大部分時間都是空等的...

不是運算速度慢,而是您在系統的規劃與資料傳輸流方面沒有認真的考慮清楚...

還要怪人家電腦慢?!USB 1.1 乃至於 2.0 太慢。...

---

改天再讓大家看看USB 轉DMX512 在速度達到 及時傳輸時,所能展現的美麗畫面!

....(待續)

11 則留言:

  1. 被您老洗腦的人才多吧?哈哈哈...

    我那些只是微不足道的小玩意拉...

    Godspeed 留

    回覆刪除
  2. 賈老師的真老公2008年4月22日 下午12:34

    好了啦...我們倆就別相害了...鬥嘴鬥多了...人家才會誤會呢 ! :"> ...
    (PS: 您也不必署名啊...我知道是您啊!)
    -----
    其實,您文中那篇還是沒有點出為何一樣是USB 轉RS232 ...
    為何不同的解決方案晶片,其驅動程式卻會不同?!--- :-? ...
    大家有沒有發現早期那些USB 轉RS232 的...還是需要加掛廠商所提供的驅動程式!
    不知道現在走標準 CDC Class 之後,問題是不是就沒有這麼嚴重了?!
    您要不要再做一次看看?!... =P~ ...
     
     

    回覆刪除
  3. 再玩一次?您老就饒了我吧,哈~
    (改走CDC class?意思是就不用掛driver像usb audio那樣嗎?)

    回覆刪除
  4. 我也有用過usb轉rs232的痛苦經驗,不過我不大了解的是按說我所傳的長度包括pay load在內總共139個bytes,應該已經大於64個byte了,但是很奇怪的收到的碼都會變形
    RS232按理說是ISO標準,在位準上應該不會有太大出入,我先將筆電插上這個CONVERTER,對自己的電腦測,收發都正常;但一接到客戶一個TRUNKING主機時,連他送過來handshaking的碼都變形了,所以連界面要作initialization都沒有辦法了,但用一般有com的筆電卻又一切正常
    難道說USBRS232所用的line driver不是標準的嗎?因為是借的所以我也沒有拆開來看,這種界面整合,明明走的是一樣的界面卻不能通,實在痛苦

    回覆刪除
  5. 樓下的大哥,這種事應該跟>=64bytes沒什麼關係,倒比較像硬體的問題,從問題描述來看
    似乎信號被咬住了,以前我以為RS232標準是+/-10V~+/-12V,但是最近發現+/-5V也行...?

    回覆刪除
  6. 旅遊達人--大米2008年4月23日 下午7:57

    嗯 我也覺得挺煩腦的
    看了板大的網誌   舉的例子都是 control 或interrupt 的傳輸

    什麼時後可以介紹介紹  isochronous的傳輸呢 ?
    感謝啦

    回覆刪除
  7. 這個CDC class...我去詢問了在FTDI工作的友人,CDC class 裡面
    並沒有定義 serial port,勉強算有關連的只有 modem

    所以要在USB to RS232上做real-time傳輸還是多少有相容性的問題

    聽說TI也有出USB to RS232 chip,不知道會不會比較猛?XD

    回覆刪除
  8. 回happosai的話,我也有懷疑過這點,資料變形得很嚴重比較像是電氣特性問題,雖然iso定義來說應該是+/-12v,可是以line driver來說好像不到,我有一次作一片LCD的DRIVER,他需要-12V來作對比調整,我想也沒想就用ADM232來用,結果產出的只有不到-10V,但是對比還是可以調
    USB 2 RS232這個東東是借來的,所以沒機會先用SCOPE量就上場了,當然整個都MOLDING好的東西更別說要拆了,TARGET那邊也MOTOR的東西,很有可能在準位上不相容(我不知到是我不相容它,還是它不相容我,他那端沒有MONITOR,我這邊是自己寫了一個接收程式來看HEX/ASCII,但我從它那邊收到的都不完整,BCC一直錯....

    回覆刪除
  9. 賈老師的真老公2008年4月29日 下午10:57

    ...什麼時後可以介紹介紹  isochronous的傳輸呢 ?
    感謝啦 ...
    ----
    我想我們應該先定義有哪些產品是非要 isochronous傳輸?!...
    大概就是 影音的東西....如果,您是要開公司找人作...那小弟可以考慮一下!..
    (因為要搞影音的東西...不擺個五六個人的團隊...我想應該是不好搞的!
    最近一個朋友還算給我聽呢:搞影音多媒體產品開發...首先是寫解編碼的Algorithm 的人..兩三個...--再來是將這些轉成硬體IP 的Design ...厲害一點也算兩三個...再來是:要搞一些TV 或是CCIR656 這種介面的..也要一兩個...再來是寫應用程式的工程師...鐵定不能少於五個...外加..作硬體版子的...呵..呵..我還沒算到 USB 部分...朋友說:沒二十個人的團隊....就別想了...言外之意..不準備個幾千萬資金花他個兩三年...就不要想了!))
    但對於一些一般用USB作一些Tooling 的東西來說:
    我想應該還是要考慮一下實質的經濟效益吧!
    搞技術與做生意是兩碼子的事...或是:您真的可以在isochronous傳輸裡,有一些獨到見解,
    可以私底下偷偷的跟我說...或許...我們可以私下解決... B-) ...

    回覆刪除
  10. 賈老師的真老公2008年4月29日 下午11:01

    ...
    沒想到這麼一個小小的議題可以激起大家這麼熱烈的討論...
    所以,有許多東西..不要說非得要搞個一個大團隊才能搞的東西才是真正有技術。
    ---有許多小東西..只要您能夠很專精的話...其實,您也可以找到您自己本身的價值的!
     

    回覆刪除
  11. Chamber大大講得對,我以往也覺得RS232這種東西有什麼好扯的...
    不過事實上台灣還真有公司靠這個老介面一年作好幾億的生意,除了
    Rs232轉USB,事實上還有RS232轉光纖,RS232轉Ethernet,RS232轉WiFi...真是太扯了

    回覆刪除