[Suzaku:00588] キャラクタデバイスのドライバーの作成

Abe email@hidden
2006年 7月 13日 (木) 16:02:04 JST


abeと言います。

CPUからFPGAに構築したロジック(opb_emcをI/Fとした)に
アクセスするためのデバイスドライバーを作成しています。

使用する関数は s_llseek()、s_read() および s_write() です。
これらは”LINUXデバイスドライバ”を参考にしています。

loff_t s_llseek(struct file *filp, loff_t f_pos, int whence)
{
  loff_t new_pos;

  switch(whence){
  case 0:  // SEEK_SET
    new_pos = f_pos;
    break;
  case 1:  // SEEK_CUR
    new_pos = filp->f_pos + f_pos;
    break;
  case 2:  // SEEK_END
    new_pos = 0;
    break;
  default:
    new_pos = 0;
  }

  filp->f_pos = new_pos;
  return new_pos;
}

返り値がwhenceと同じであることを確認しました。

ssize_t s_write(struct file *filp, const char *buf, ssize_t count, loff_t 
*f_pos)
{
  ssize_t retval;

  if(copy_from_user(f_pos, buf, count)){
    retval = -EFAULT;
  }else{
    retval = count;
  }
  return retval;
}

返り値がcountと同じであることを確認しました。
しかし、ハードウェア上では、アクセスできていないことを
オシロスコープで確認しました。

また、hermitのコマンドで、ハードウェアにアクセスできることも確認しています。

どなたか、ご教示頂けると助かります。
よろしくお願いします。




suzaku メーリングリストの案内