[Suzaku:00595] Re: キャラクタデバイスのドライバーの作成 => 上手くいきました

Abe email@hidden
2006年 7月 14日 (金) 17:02:40 JST


abe です。

お陰さまで上手くいきました。
ソースは

ssize_t s_write(struct file *filp, const char *buf, size_t count, loff_t 
*f_pos)
{
  ssize_t retval = 0;
  void * addr;

  addr = (void *)ioremap(0xF0F00000, 1);

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

  iounmap(addr);

  return retval;
}

です。

私には良く分からないのですが
copy_from_user() の所を iob() や write() ですと Oopになってしまいました。

以上、報告します。
ありがとうございました。


----- Original Message ----- 
From: "Yasushi SHOJI" <email@hidden>
To: "SUZAKU general discussion list" <email@hidden>
Sent: Friday, July 14, 2006 3:00 PM
Subject: [Suzaku:00594] Re: キャラクタデバイスのドライバーの作成


> At Fri, 14 Jul 2006 14:05:14 +0900,
> Abe wrote:
> [...]
>> 直接アドレスに書いてみましたら
>>
>> Oops: kernel access of bad area, sig: 11
>> NIP: C38011BC XER: 00000000 LR: C0034424 SP: C1ECDF20 REGS: c1ecde70 
>> TRAP:
>> 0800dMSR: 00008030 EE: 1 PR: 0 FP: 0 ME: 0 IR/DR: 11
>> DEAR: F0F00004, ESR: 00800000
>> TASK = c1ecc000[44] 'suzaku_read' Last syscall: 4
>> last math 00000000 last altivec 00000000
>> GPR00: 00000040 C1ECDF20 C1ECC000 00000001 7FFFF818 00000001 C03DA5C0
>> 00000000
>> GPR08: 00000000 F0F00004 0000000C 00000002 30000600 00000000 7FFFFED0
>> 30005000
>> GPR16: 30005140 00000002 300050A0 000000E4 00008030 01ECDF40 00000000
>> C0002948
>> GPR24: C00026A0 30000CEC 30000240 300152DC 7FFFF818 FFFFFFEA C03DA5A0
>> 00000001
>> Call backtrace:
>> C001A228 C00026FC 100005B0 10000AF8 30025CB4 30025CD0 10000480
>> Memory fault
>>
>> と言う結果になってしまいました。
>
> SUZAKU-Vだったんですね。SUZAKU-VのCPU(powerpc)は MMUの機構を持っていま
> すので、保護されている領域にアクセスすると保護違反になります。
>
> ioremap()を参照してください。
> --
>          yashi
> _______________________________________________
> suzaku mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/suzaku
> 




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