VMwareで増設パラレルポートのI/Oアドレス再割り当て [電子工作・プログラミング]

古いデバイスを使うとき、何かとパラレルポートが必要なことがあります。最近のPCにはレガシーとしてついていないことも多いのですが、PCIeのパラレルポート増設カードなんかは割と手に入りやすいです。それで動くこともあるそうですが、動かないことも多そうです。

僕の用途ではWindows7で普通につないだだけだと動きませんでした。そこでVMwareを経由することで、うまく動くようになりました。マニアックですが、備忘録ついでにまとめてみます。

(追記2015/1/24)
概要をまとめると、
・ 使いたいソフトがパラレルポートのI/Oアドレスを決め打ちしてると、増設ボードを挿しただけじゃ使えないよ。
・ VMwareでパラレルポートを割り当てると、仮想マシン内では増設ボードがオンボードのパラレルポートに見えて上手くいくかも。
・ I/Oアドレスで言うと、オンボードは0x378とか。増設ボードは0xDFF8とか、あんまり見たこと無い値。
(追記ここまで)




最初に、試した訳でも詳しい訳でもないのですが、動く/動かない原因を考えてみます。以下、手元の例を除いてすべて推測なので、歯切れの悪い感じになっていますが。

M/B内蔵のパラレルポートは、多くの場合は0x378のI/Oアドレスを持っているようです。一方、増設されたパラレルポートはそうでないアドレスを持つことが推測されます。(僕の環境では0xDFF8と0xDFF0が割り当てられていました)そうすると、パラレルポートのI/Oアドレス決め打ちで認識しているアプリケーションはうまく動かないことになりそうです。対して、パラレルポートのI/Oアドレスを何らかの手段で設定できるようなアプリケーションではうまく動いているようです。(例えばレジストリとか、設定ファイルとか)

また、うまく動くケースのもうひとつとしては、ポート名(LPT1とか。シリアルポートではCOM1とかになりそうです)を参照して動作しているものがありそうです。こちらはWindowsがI/Oアドレスと関連付けてくれるので、唯一のパラレルポートはすべてLPT1となって問題なく動くのでしょう。恐らく。


次に、動くものはそれで良いとして、動かないものを動かす方法を考えます。と言っても結論は標題の通りなのですが。
考え方としては、I/Oアドレスが決め打ちならば手元のパラレルポートのI/Oアドレスをそれに合わせれば良いことになります。しかし、増設パラレルポートのデバイスマネージャ上のプロパティ→リソースからはI/Oアドレス「I/Oの範囲」の変更ができませんでした。僕の環境では。デバイスドライバの仕様にもよるのでしょうが。(しかも、パラレルポートがついていないM/Bであっても、I/Oアドレス0x378はどうやら予約されているようです)
そこで、ハードウェアごとエミュレートして、しかも仮想のM/B上パラレルポートを物理パラレルポート(しかも増設パラレルポート)にリダイレクトできる仮想マシンがあれば、望みの増設パラレルポートのI/Oアドレス再割り当てができることになります。

いくつかの仮想マシンソフトについて調べたので、列挙しておきます。
Microsoft Virtual PC 6.0.192.0 : M/B上パラレルポートのみ○
Windows Virtual PC : 未検証 (パラレルポート×らしい)
Virtual Box 4.3.2 : パラレルポート×
VMware Player 5.0.3 : パラレルポート○ (増設でも) I/Oアドレス0x378ほか

結局、VMwareを使えばM/B上パラレルポートと同じI/Oアドレスが得られ、しかもプロパティからI/Oアドレスの変更もできそうです。


最後に、実例として、僕の環境でどうだったかをメモしておきます。Windows7にて、PCIe x1スロットに挿した玄人志向のパラレルポート増設ボード1P-LPPCIE2のI/Oアドレスは0xDFF8および0xDFF0でした。これがVMwareでパラレルポートに割り当てることができ、そのときのI/Oアドレスは0x378でした。
使いたいソフトのパラレルポートのI/Oアドレスは0x378, 0x278, 0x3BCの3択から設定する方式だったので、VMware上のWindowsXPにて問題なく動作しました。

LPT_win7.pngLPT_XP.png

11月26日24時5分
fartrip
コメント(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。