簡體   English   中英

Linux TTY和驅動程序

[英]Linux TTYs and drivers

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

我在這里有三個基本選擇:

  1. 修改標准驅動程序以使用新的IOCTL。 由於我們要針對的是非常特定的環境,因此我可以接受,但是我不確定是否有可能處理USB轉換器在進入不同模式時如何工作的所有細微差別。

  2. 讓一切都使用D2XX驅動程序。 這不是理想的,因為如果我們需要使用另一個FTDI usb到串行轉換器,則需要使用該串行轉換器的任何程序還必須使用D2XX驅動程序,這在不希望使用其他USB到串行轉換器之前會非常有用。 (然后我們將像往常一樣打開/ dev / ttyUSBX)

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

選項#3可能是這里最好的選擇,但我不確定確切如何做。 我已經研究過openpty函數,但這似乎並不能完全滿足我的要求,主要是能夠在偽串行端口上設置TTY設置,並在真實串行端口上設置相同的設置。 我猜想這里會以某種方式使用mknod / mkdev,但是我不知道具體如何使用。

解決此問題的最佳方法是什么?

這樣做的通常方法是利用FTDI芯片可以使用連接的小型EEPROM加載配置設置這一事實。 因此,您不用燒錄D2XX來設置自定義參數,而是燒寫EEPROM,FTDI會自動進行自我配置。 然后,您只需使用noraml串行端口驅動程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM