2011-12-16 29 views
0

vxWorks lptDrvドライバを使用して初めてパラレルポートに書き込もうとしていますが、write()の呼び出しで常に-1が返されるようです。私が使用しているコードは次のとおりです。vxWorksパラレルポートwrite()エラー

#define PARALLEL_PORT "/lpt/0" 

/* Create a device for the parallel port */ 
lptDevCreate(PARALLEL_PORT,0) 

/*open the parallel port*/ 
parallelPortFD = open(PARALLEL_PORT, O_CREAT|O_WRONLY, 0)) 

LOCAL UINT32 watchdogBit = 0x01; 
if (write(parallelPortFD, (char*) watchdogBit, sizeof(UINT32)) == -1) 
{ 
    /* Always hits this block */ 
} 

lptDevCreateとopen returnはどちらも大丈夫です。私は現在、パラレルポートにハードウェアを接続していないので、テストするのが難しくなりますが、書き込みに失敗するとは思われません。いくつかの詳細情報については

、私はlptShow()を呼び出すことができましたが、私は私が探しているかわからないんだけど:

controlReg  = 0xff 
statusReg   = 0xff 
created   = TRUE 
autofeed   = TRUE 
inservice   = FALSE 
normalInt   = 0 
defaultInt  = 0 
retryCnt   = 1 
busyWait (loop) = 10000 
strobeWait (loop) = 10000 
timeout (sec) = 1 
intLevel (IRQ) = 7 
+0

vxWorksのどのバージョン、ボード&BSPですか?これらはハードウェアの問題を扱う際に不可欠な要素です。ショールーチンを見ると、あなたがポートハードウェアと話しているように見えず、割り込みが接続されていない。 lptドライバのソースコードを見てください。 – Benoit

+0

クックフォレストボード上のIntel Core 2 BSPを使用するvxWorks 6.7おもう。私はコードから自分の情報を引き出していますが、初期のハードウェア/ BSPセットアップ(やり方は分かりません)はしませんでした。私は1つの問題を修正したと信じている。カーネルの設定にはBIOSとは異なるポート番号があるので、カーネルの設定を一致させるように更新しました。私は "controlReg = 0xe"と "statusReg = 0x78" lptShow()を行うときに表示されます。しかし、私はまだwrite()を呼び出すときにエラーが発生します。 – bjsample

答えて

0

カーネル設定は、BIOSとは異なるポート番号を持っていましたカーネルの設定を更新して一致させました。それから、0x78に設定されたstatusRegが示されました。これは、1.ポートがビジーであり、2.用紙切れエラーです。パラレルポートには何も差し込まれていないので、デフォルト状態として0x78を示しました。私はまだポートをテストするためのハードウェアを持っていませんが、デバイスが接続されていない状態で風の川のサポートは同様の結果を見ていました。 私がもう一度動いてくれたので、Benoitに感謝します。