Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209697
  • 博文数量: 102
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1015
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-05 16:45
文章存档

2014年(73)

2013年(29)

我的朋友

分类: LINUX

2013-11-22 23:17:18

 国嵌内核驱动进阶班-5-5(内核异常分析)


小于C000 0000的地址 都会产生异常




调用栈的信息(如下)


由上面可以看到栈的调用

DC调用过的 CB调用过的 BA调用过的 Ainit_module+0x0x0/0x1bc调用过的




出错是在 PC is at D=0x1c 0x28


出错实例




下面进行编译程序

Make clean

make




[root@localhost oops]#cp  opps.ko  /home/David/mini2440/rootfs


重启开发板

加载模块

#insmod opps.ko


出现异常啦  ,

下面表明,NULL pointer  看PC is  at   D+0x1c/0x28  [opps]

opp.ko进行反汇编

[root@localhost  oops]# arm-linux-objdump  -D  -S  opps.ko  >log


找到D()函数的起始地址为  10

从上面知道出错的地址是D()函数的偏移0x1c  即得到D+0x1c=》2C:

从中找到*p=a+5出错
阅读(918) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~