CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  内核及驱动程序研究区

Unhandled fault: alignment exception (93) at 0x00000001

楼主dxy331(柠檬)2005-04-01 17:37:44 在 Linux/Unix社区 / 内核及驱动程序研究区 提问

用的是嵌入式linux,添加了一个字符设备驱动,测试驱动时候就出现如下的错误提示:  
   
  Unhandled   fault:   alignment   exception   (93)   at   0x00000001  
  fault-common.c(97):   start_code=0xf40040,   start_stack=0xf4ff94)  
  Internal   error:   Oops:   0  
  CPU:   0  
  pc   :   [<00030c8c>]         lr   :   [<0002fc44>]         Not   tainted  
  sp   :   00fbbf74     ip   :   00000001     fp   :   00fbbf80  
  r10:   00f45f44     r9   :   00000003     r8   :   00f4ff44  
  r7   :   00fba000     r6   :   fffffff7     r5   :   00f4ff44     r4   :   00000005  
  r3   :   003e163c     r2   :   20000013     r1   :   20000093     r0   :   00000003  
  Flags:   nzCv     IRQs   off     FIQs   on     Mode   SVC_32     Segment   kernel  
  Control:   0  
  Process   testsd   (pid:   45,   stackpage=00fbb000)  
  Stack:  
  00fbbf60:                     0002fc44   00030c8c   20000093     ffffffff   00fbbfac   00fbbf84   0002fc  
  44  
  00fbbf80:   00030c5c   000152f0   00015138   00000000     00f4ff44   00000003   00fba000   00014b  
  40  
  00fbbfa0:   00000000   00fbbfb0   000149a0   0002fc34     00000000   000151d4   00000003   00f4ff  
  44  
  00fbbfc0:   00000005   00000000   00000000   00f4ff44     00000003   00000001   00f4ffa0   000000  
  00  
  00fbbfe0:   00f45f44   00f4ff40   00f4ff44   00f4ff30     00f40148   00f41e88   60000010   000000  
  03  
  Backtrace:  
  Function   entered   at   [<00030c4c>]   from   [<0002fc44>]  
  Function   entered   at   [<0002fc24>]   from   [<000149a0>]  
    r8   =   00014B40     r7   =   00FBA000     r6   =   00000003     r5   =   00F4FF44  
    r4   =   00000000  
  Code:   e3821080   e121f001   (e59c3014)   e2833001   e58c3014  
  Unhandled   fault:   alignment   exception   (13)   at   0x00000001  
  fault-common.c(97):   start_code=0xe5810000,   start_stack=0xe3a06060)  
  Internal   error:   Oops:   0  
  CPU:   0  
  pc   :   [<0002f774>]         lr   :   [<0001e1d8>]         Not   tainted  
  sp   :   00fbbe88     ip   :   00fbbea4     fp   :   00fbbea0  
  r10:   003e163c     r9   :   001e04ec     r8   :   00000000  
  r7   :   00000001     r6   :   00000003     r5   :   003e1520     r4   :   00000001  
  r3   :   003e1648     r2   :   00000000     r1   :   003e1520     r0   :   00000001  
  Flags:   nzCv     IRQs   on     FIQs   on     Mode   SVC_32     Segment   kernel  
  Control:   0  
  Process   testsd   (pid:   45,   stackpage=00fbb000)  
  Stack:  
  00fbbe60:                                                                                                                 0001e1d8   0002f7  
  74  
  00fbbe80:   20000013   ffffffff   00000001   003e1520     00000003   00fbbecc   00fbbea4   0001e1  
  d8  
  00fbbea0:   0002f774   003f52a0   00fbbf2c   00fba000     00fba000   0000000b   20000093   000d36  
  bc  
  00fbbec0:   00fbbedc   00fbbed0   0001e9c8   0001e14c     00fbbef4   00fbbee0   00018aac   0001e8  
  ec  
  00fbbee0:   00fba000   00000001   00fbbf04   00fbbef8     00018ae0   000189f0   00fbbf28   00fbbf  
  08  
  00fbbf00:   00019af8   00018ad4   e59c3014   00fbbf60     fffffff7   00fba000   00f4ff44   00fbbf  
  80  
  00fbbf20:   00fbbf2c   000146a0   00019a68   00000003     20000093   20000013   003e163c   000000  
  05  
  00fbbf40:   00f4ff44   fffffff7   00fba000   00f4ff44     00000003   00f45f44   00fbbf80   000000  
  01  
  00fbbf60:   00fbbf74   0002fc44   00030c8c   20000093     ffffffff   00fbbfac   00fbbf84   0002fc  
  44  
  00fbbf80:   00030c5c   000152f0   00015138   00000000     00f4ff44   00000003   00fba000   00014b  
  40  
  00fbbfa0:   00000000   00fbbfb0   000149a0   0002fc34     00000000   000151d4   00000003   00f4ff  
  44  
  00fbbfc0:   00000005   00000000   00000000   00f4ff44     00000003   00000001   00f4ffa0   000000  
  00  
  00fbbfe0:   00f45f44   00f4ff40   00f4ff44   00f4ff30     00f40148   00f41e88   60000010   000000  
  03  
  Backtrace:  
  Function   entered   at   [<0002f764>]   from   [<0001e1d8>]  
    r6   =   00000003     r5   =   003E1520     r4   =   00000001  
  Function   entered   at   [<0001e13c>]   from   [<0001e9c8>]  
  Function   entered   at   [<0001e8dc>]   from   [<00018aac>]  
  Function   entered   at   [<000189e0>]   from   [<00018ae0>]  
    r5   =   00000001     r4   =   00FBA000  
  Function   entered   at   [<00018ac4>]   from   [<00019af8>]  
  Function   entered   at   [<00019a58>]   from   [<000146a0>]  
    r8   =   00F4FF44     r7   =   00FBA000     r6   =   FFFFFFF7     r5   =   00FBBF60  
    r4   =   E59C3014  
  Function   entered   at   [<00030c4c>]   from   [<0002fc44>]  
  Function   entered   at   [<0002fc24>]   from   [<000149a0>]  
    r8   =   00014B40     r7   =   00FBA000     r6   =   00000003     r5   =   00F4FF44  
    r4   =   00000000  
  Code:   e24cb004   e1a04000   (e5945014)   e1a06001   e3550000  
  pid   45:   failed   11  
  /usr> 问题点数:100、回复次数:5Top

1 楼dxy331(柠檬)回复于 2005-04-01 17:40:18 得分 0

这是驱动程序,各位大侠帮忙分析一下吧!先谢谢了!  
   
  static   int   sd2300_open   (struct   inode   *inode,   struct   file   *fp)  
  {  
   
  return   1;  
  }  
   
  static   int   sd2300_release   (   struct   inode   *inode,   struct   file   *fp)  
  {  
   
  return   0;  
  }  
   
  static   ssize_t   sd2300_read   (   struct   file   *fp,   char   *buf,   size_t   count,   loff_t   *ptr)  
  {  
  int   total;  
   
  if(   verify_area(VERIFY_WRITE,   buf,   count)   ==   -EFAULT)  
  return   -EFAULT;  
  for(total   =   0;   total   <   count;   total   ++)  
  __put_user(68,buf++);  
   
  return   count;  
  }  
   
  static   ssize_t   sd2300_write   (   struct   file   *fp,   const   char   *buf,   size_t   count,   loff_t   *ptr)  
  {  
  return   count;  
  }  
   
  static   struct   file_operations   sd2300_fops   =   {  
  owner:   THIS_MODULE,  
  read   :   sd2300_read, /*   read   */  
  write   :   sd2300_write, /*   write   */  
  open   :   sd2300_open, /*   open   */  
  release   :   sd2300_release /*   release   */  
  };  
   
  void     sd2300_init(void)  
  {  
  int   result;  
   
  result=register_chrdev   (sd2300_major,   "sd2300",   &sd2300_fops);  
  if   (result   <   0){  
  printk   ("chr   dev   register   failed.\n");  
  }  
   
  }Top

2 楼dxy331(柠檬)回复于 2005-04-04 10:13:56 得分 0

测试驱动是自己写了一个程序,OPEN没问题,一read()就出现了上面的提示,在网上搜索了一下,看见说字节不对齐的说法,没看明白是什么问题?Top

3 楼slone(slone)回复于 2005-04-04 12:24:53 得分 50

open   什么事情也没做当然应该没问题,buffer   是否分配空间,static   ssize_t   sd2300_read   (   struct   file   *fp,   char   *buf,   size_t   count,   loff_t   *ptr)  
  {  
  int   total;  
   
  if(   verify_area(VERIFY_WRITE,   buf,   count)   ==   -EFAULT)  
  return   -EFAULT;  
  for(total   =   0;   total   <   count;   total   ++)  
  __put_user(68,buf++);  
   
  return   count;  
  }  
  先注释掉除   return   count;   外的所有语句,再逐步恢复试试,看问题究竟出在哪里。Top

4 楼aria(*nix learner)回复于 2005-04-04 16:29:03 得分 50

你的open里返回的是1,而其实成功的话应该返回0。因此建议你先检查自己用户态open()的返回值。Top

5 楼dxy331(柠檬)回复于 2005-04-05 09:48:17 得分 0

把  
  if(   verify_area(VERIFY_WRITE,   buf,   count)   ==   -EFAULT)  
  return   -EFAULT;  
  for(total   =   0;   total   <   count;   total   ++)  
  __put_user(68,buf++);  
  改写为  
  for(total   =   0;   total   <   count;   total   ++)  
  copy_to_user(90,buf++);  
   
  读到的竟然是160  
   
  copy_to_user(1,buf++);  
  读到为0  
  copy_to_user(200,buf++);  
  读到也为0  
  Top

相关问题

  • x
  • x=x&(x-1)
  • Unhandled exception……
  • char (*x())();
  • int i=5;sprint("%d,%d",++x * ++x * ++x * --x,++x); who can answer this question?
  • 问个x++,++x的问题
  • X死你!!!(转)
  • 配置X window?
  • 关于 .x file
  • to z_x_b

关键词

  • 驱动
  • start
  • code
  • fbbf
  • fba000
  • fbbea
  • unhandled
  • fault
  • fbbe
  • ff

得分解答快速导航

  • 帖主:dxy331
  • slone
  • aria

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo