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 /* for libc5 */
#include /* for glibc */
のように
に次のように書き換え



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?ですよねキット)