jtag事始め(改め、LinuxでI/O制御)
パラレルポート 制御 linux kernel 2.6 あたりでぐぐってみるとよさげです。
http://memo.wnishida.com/?date=20040505 wataru's memo(パラレルポートがすき)
が一番いいかも。
一方、パラレルポート経由でLEDピカピカしつつ、LEDのH/Lを読み込むんだったら
"LinuxでI/0制御"でぐぐるといい感じです。
http://funini.com/kei/io/ などがいい感じ。
ただし、記事の内容がKernel2.4(
というかlibc5?)の様子なので、Kernel2.6(
というかlibc6(glibc?))
の場合には次の
include文を修正する必要ありですね。
#include#include #include #include
などはkernel2.6には存在していないようなので
man 2 iopermを参考にして
書式
#include
#include
のように
に次のように書き換え
Linux Cライブラリ "libc4"(glibc 1) libc.so.4(a.out系)
Linux Cライブラリ "libc5"(glibc 1) libc.so.5(ELF系)
Linux Cライブラリ "libc6"(= glibc 2.*) libc.so.6(ELF系)
Linuxのlibc6はGNUのlibcの2(glibc2)と同じ
とおおまかにとらえてしまえばOK?
#include#include #define OUT_PORT 0x378 /* 出力ポート。0xは16進数を示す */ int main(void){ int i; int j; int c; ioperm(OUT_PORT, 8, 1); /* 初期化(ポートをいじるという宣言) */ for(;;) { for(i = 0; i < 0x100; i++){ outb(i, OUT_PORT); /* 順番に(0x00から0x100まで)ピンにLを出力 */ for(j=0;j<10000000;j++) /* てきとうにまつ */ ; c = inb(OUT_PORT); printf("%x\n",c); for(j=0;j<10000000;j++) /* てきとうにまつ */ ; } } return 0; }
次はデバイスドライバ(カーネルモジュール)化ですかね。
トラギの2002/08とかを参考にします(2002/08の時代はkernel2.4?ですよねキット)