2012-11-09 164 views
0

對於一個項目,我們在自定義硬件上有幾個FTDI串行到USB轉換器。這些串行到USB轉換器中的一些具有需要設置的特殊參數(即,他們從哪裏獲取數據)。現在,設置這個的通常方法是使用FTD2XX庫,它可以讓我們直接在USB到串口轉換器上設置數據。但是,D2XX驅動程序不能與標準的ftdi_sio驅動程序同時使用,這意味着我們不能像普通設備那樣使用串行端口。Linux TTY和驅動程序

我這裏有三個基本的選擇:

  1. 修改標準的驅動器使用新的IOCTL。由於我們有一個非常特定的環境,我們的目標是,我會很好,但我不確定是否有可能處理所有可能的細微差別,可能會出現USB轉換器在不同模式下如何工作。

  2. 一切都使用D2XX驅動程序。這並不理想,因爲如果我們需要使用另一個FTDI USB轉串口轉換器,無論程序需要使用那個串口轉換器,也必須使用D2XX驅動程序,直到我們想使用不同的USB轉串口轉換器(因爲我們會像往常一樣打開/ dev/ttyUSBX)

  3. 製作假的TTY,如/ dev/serialX,然後將信息傳遞到D2XX驅動程序。這樣,我們仍然可以像平常一樣打開串口,但是我們可以添加新功能來執行更高級的選項。命名與我們現在所做的類似,即使用udev創建符號鏈接到正確的端口。

選項#3可能是最好的選擇,但我不確定如何做到這一點。我查看了openpty函數,但這似乎並不是我想要的,主要是可以在假串行端口上設置TTY設置,並在實際串行端口上設置相同的設置。我猜測mknod/mkdev會以某種方式在這裏使用,但我無法弄清楚如何。

什麼是最好的方法來解決這個問題?

回答

0

執行此操作的正常方法是利用FTDI芯片可以使用小型附加EEPROM來加載配置設置的事實。因此,不是使用D2XX來設置自定義參數,而是刻錄EEPROM,並且FTDI將自動配置它自己。然後你只需使用noraml串口驅動程序。