安裝parallel port card (pci) Debian

在網路上看到了一個實做8051的燒錄器DIY,於是乎手養也。

而且是用parallel port (舊印表機連接埠) 來做連結,卻發現最新買的桌機上面已經把parallel port 連同 serial port (以前的com1, com2)都拿掉了。


所以買了一張外接卡來裝,上面的晶片用的是MCS9865,上面有一個parallel port 和兩個serial port。

買回來裝上去之後,在linux底下lspci -v,正常的話可以看見下面這個訊息。

Parallel controller: NetMos Technology PCI 9865 Multi-I/O Controller
Subsystem: Device a000:2000
Flags: bus master, medium devsel, latency 32, IRQ 10
I/O ports at d010 [size=8]
I/O ports at d000 [size=8]
Memory at fa301000 (32-bit, non-prefetchable) [size=4K]
Memory at fa300000 (32-bit, non-prefetchable) [size=4K]
Capabilities:
...


上面那個IRQ 和I/O ports at XXXX 的值應該是每台電腦都不太一樣。
去google 最新的driver: MCS9865_Linux_driver_v1.0.0.12

抓下來解壓縮之後進去裡面,會看到一個readme檔,裡面有講要怎麼安裝。

有特別提到如果linux kernel 是 2.6.34 版以上的話,要額外做一些處理。
但是我的kernel是 2.6.32 所以就無視那一段話了,就照裡面的方式直接下:


$> make

正常的話就會看到mcs9865.ko 和 mcs9865-isa.ko這兩個檔。

這個時候就可以先insmod看看能不能用了

$> sudo insmod mcs9865.ko

$> sudo insmod mcs9865-isa.ko


然後lsmod 看看有沒有在裡正常loading進去。

接下來再移除掉 lp 和parport_pc這兩個mod:

$> sudo rmmod lp
$> sudo rmmod parport_pc

然後再:

$> sudo modprobe parport_pc io=0xXXXX irq=YY



XXXX 就是lspci -v找到的第一個位置,在上面的例子是d010

YY 就是IRQ值,在上可的例子是10

所以我要下的指令是: sudo modprobe parport_pc io=0xd010 irq=10

然後看看/dev/裡面有沒有一個parport0的檔案,有的話應該就是成功了(或許吧...我還沒測試)

但是每次開機都要這樣手動掛載是會瘋掉的。

所以

$> sudo make install

把mcs9865.ko和mcs9865-isa.ko安裝到系統目錄底下。
然後到/etc/modprobe.d/底下把lp這個mod寫到黑名單 blacklist.conf裡面,這樣開機就不會再自動載入這個檔了:
在blacklist.conf最底下加入這行:

blacklist lp

然後在/etc/modprobe.d/底下做一個local.conf檔,裡面多寫一行:


options parport_pc io=0xd010 irq=10 (紅色的部份參照上面說的辦理)

然後在/etc/modules這個檔案裡面加這兩行:

mcs9865
mcs9865-isa


這樣開機時就會自動載入這兩個mod。
重新開機看看有沒有正常work吧...

================
2012-08-04
================
最近玩了一陣ATMEL公司出品的atmega8單晶片之後(原本要玩8051系列的,不知怎的就開始玩AVR系的了...Orz...)

我找不到給Linux用的燒錄單晶片用軟體...Orz...所以燒錄單晶片的時候還是回到windows上了。

在windows上的時候就安裝附在上面的driver好像就都可以正常使用了...

不過上面那些是提外話,下面要講的是怎麼在Linux底下確認我的serial port在/dev底下的名稱。

=====提外話 分隔線=============
http://www.cyberciti.biz/faq/find-out-linux-serial-ports-with-setserial/

參考上面那個網扯的作法。開機後先下一個指令就能知道大概的訊息:


$ sudo dmesg | grep tty
0000:06:01.0: ttyD0 at I/O 0xd030 (irq = 17) is a mcs9865-serial
0000:06:01.1: ttyD1 at I/O 0xd020 (irq = 18) is a mcs9865-serial
No of Errors In ttyD0 brake=0 frame=0 parity=0 overrun=0
這時我就會知道我的serial port 的在/dev底下的名稱就是 ttyD0 (irq=17) 和 ttyD1 (irq=18)。

留言

  1. 請問你用這張卡的parallel port 可以正常燒錄單晶片的程式嗎?
    謝謝

    回覆刪除
    回覆
    1. 最近比較忙...Orz..裝好之後一直沒機會測試,如果測試成功會再po文。

      刪除
    2. 非常感謝~麻煩你了XD

      刪除

張貼留言

熱門文章