Debian

Sunix 低級並行埠驅動程序不工作

  • March 17, 2015

**背景:**由於硬體過時,我目前正在將工業 PC + 軟體從 Debian 4 (etch) 更新到 Debian 7 (Wheezy),新舊系統之間共享的少數硬體之一是 Sunix 5008 並口。我們使用並行埠通過低級驅動程序與一些自定義硬體通信。

**問題:**當我們將示波器連接到並行埠上的某些引腳時,雖然檢測到並/dev/parport2創建了驅動程序並且可以使用我們的軟體成功打開和寫入驅動程序,但我們沒有得到任何輸出,因為同一個應用程序在舊版本上提供輸出安裝。我們已經通過驅動程序跟踪到 outb() 呼叫,沒有報告任何錯誤。

以下來自 dmesg 的摘錄顯示埠已找到並且驅動程序已正確安裝

   [    7.429893] =====================  SUNIX Device Driver Module Install  =====================
   [    7.429899] 
   [    7.429902] SNX Info : Loading SUNIX Multi-I/O Board Driver Module
   [    7.429908]                                                        -- Date :    2011/08/15
   [    7.429915]                                                        -- Version : 1.3.3.0
   [    7.429918] 
   [    7.431041] 
   [    7.431047] SNX Info : Found SUNIX 5008 Series Board (1P),
   [    7.431053]            bus number:6, device number:4
   [    7.431056] 
   [    7.431079] Trying to free nonexistent resource <000000000000d120-000000000000d127>
   [    7.431087] Trying to free nonexistent resource <000000000000d120-000000000000d122>
   [    7.431094] Trying to free nonexistent resource <000000000000d123-000000000000d127>
   [    7.431101] Trying to free nonexistent resource <000000000000d110-000000000000d117>
   [    7.431108] Trying to free nonexistent resource <000000000000d110-000000000000d112>
   [    7.431115] Trying to free nonexistent resource <000000000000d113-000000000000d117>
   [    7.438603] SNX Info : parport2 - PC-style at 0xd120 (0xd110)
   [    7.438859] SNX Info : lp2 port using parport2 (polling).
   [    7.438866] ================================================================================

Trying to free nonexistent resource *我們的舊版本也會發生這種情況

有趣的觀察: 在較舊的工作機器上,lsmod給出的摘錄

   Module                  Size  Used by
   ...
   snx                    89764  4 
   parport_pc             22884  0 
   ppdev                   3588  0 
   parport                19240  2 parport_pc,ppdev

雖然在較新的機器上提取的lsmod

   Module                  Size  Used by
   ...
   snx                    99449  2 
   parport_pc             22036  0 
   ppdev                  12651  0 
   parport                31254  2 ppdev,parport_pc

這裡要注意的關鍵是在較新的機器中,snx 僅由 2 個設備而不是 4 個設備使用,所以我不知道這是否指向初始化問題

進一步研究後,似乎這是由於驅動程序僅部分實現,關鍵 ioctl 似乎已被刪除。

引用自:https://unix.stackexchange.com/questions/189154