安裝parallel port card (pci) Debian
在網路上看到了一個實做8051的燒錄器DIY,於是乎手養也。
所以買了一張外接卡來裝,上面的晶片用的是MCS9865,上面有一個parallel port 和兩個serial port。
買回來裝上去之後,在linux底下lspci -v,正常的話可以看見下面這個訊息。
上面那個IRQ 和I/O ports at XXXX 的值應該是每台電腦都不太一樣。
而且是用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/
參考上面那個網扯的作法。開機後先下一個指令就能知道大概的訊息:
================
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)。
請問你用這張卡的parallel port 可以正常燒錄單晶片的程式嗎?
回覆刪除謝謝
最近比較忙...Orz..裝好之後一直沒機會測試,如果測試成功會再po文。
刪除非常感謝~麻煩你了XD
刪除