这几天一直在调试atmel at91sam9x25的串口,用着用着总会导致Oops,Oops内容如下:[ 1023.510000] Unable to handle kernel NULL pointer dereference at virtual address 00000000[ 1023.520000] pgd = c0004000[ 1023.520000] [00000000] *pgd=00000000[ 1023.520000] Internal error: Oops: 17 [#1][ 1023.520000] last sysfs file: /sys/devices/virtual/misc/at91flash/dev[ 1023.520000] Modules linked in: at91flash at91gpio at91mc323 ds18b20 at91adc[ 1023.520000] CPU: 0    Tainted: G        W    (2.6.39 #35)[ 1023.520000] PC is at atmel_tasklet_func+0x104/0x690[ 1023.520000] LR is at atmel_tasklet_func+0x10/0x690[ 1023.520000] pc : []    lr : []    psr: 20000013[ 1023.520000] sp : c7825f58  ip : 60000093  fp : 00000000[ 1023.520000] r10: 00000006  r9 : 00000000  r8 : 0000000a[ 1023.520000] r7 : 00000000  r6 : c7824000  r5 : c78a2484  r4 : c03c0cb8[ 1023.520000] r3 : 0000004c  r2 : 0000004c  r1 : 60000013  r0 : 00000001[ 1023.520000] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel[ 1023.520000] Control: 0005317f  Table: 27b40000  DAC: 00000017[ 1023.520000] Process ksoftirqd/0 (pid: 3, stack limit = 0xc7824270)[ 1023.520000] Stack: (0xc7825f58 to 0xc7826000)[ 1023.520000] 5f40:                                                       00000001 c7824000[ 1023.520000] 5f60: 00000100 0000000a 00000000 00000006 c7825f8c 00000000 00000001 c7824000[ 1023.520000] 5f80: 00000100 0000000a 00000006 c0045cf8 c03b995c c00461d8 c7aa6ae0 00000000[ 1023.520000] 5fa0: 60000093 00000000 c7824000 c0046274 00000013 00000000 00000000 c00462e0[ 1023.520000] 5fc0: 00000000 c7819f70 00000000 c00570e0 00000000 00000000 00000000 00000000[ 1023.520000] 5fe0: c7825fe0 c7825fe0 c7819f70 c0057060 c0030b14 c0030b14 ffffffff ffffffff[ 1023.520000] [] (atmel_tasklet_func+0x104/0x690) from [] (tasklet_action+0x84/0xe

[ 1023.520000] [] (tasklet_action+0x84/0xe

from [] (__do_softirq+0x88/0x124)[ 1023.520000] [] (__do_softirq+0x88/0x124) from [] (run_ksoftirqd+0x6c/0x12

[ 1023.520000] [] (run_ksoftirqd+0x6c/0x12

from [] (kthread+0x80/0x8

[ 1023.520000] [] (kthread+0x80/0x8

from [] (kernel_thread_exit+0x0/0x

[ 1023.520000] Code: 1a000002 e59f057c e59f157c ebfa3d49 (e5973000)[ 1023.710000] ---[ end trace 786b41cd25d3b661 ]---[ 1023.710000] Kernel panic - not syncing: Fatal exception in interrupt[ 1023.720000] [] (unwind_backtrace+0x0/0xe0) from [] (panic+0x50/0x170)[ 1023.720000] [] (panic+0x50/0x170) from [] (die+0x184/0x1c4)[ 1023.730000] [] (die+0x184/0x1c4) from [] (__do_kernel_fault+0x64/0x84)[ 1023.740000] [] (__do_kernel_fault+0x64/0x84) from [] (do_page_fault+0x1b4/0x1c

[ 1023.750000] [] (do_page_fault+0x1b4/0x1c

from [] (do_DataAbort+0x30/0x9

[ 1023.760000] [] (do_DataAbort+0x30/0x98) from [] (__dabt_svc+0x4c/0x60)[ 1023.770000] Exception stack(0xc7825f10 to 0xc7825f58)[ 1023.770000] 5f00:                                     00000001 60000013 0000004c 0000004c[ 1023.780000] 5f20: c03c0cb8 c78a2484 c7824000 00000000 0000000a 00000000 00000006 00000000[ 1023.790000] 5f40: 60000093 c7825f58 c01a32b8 c01a33ac 20000013 ffffffff[ 1023.790000] [] (__dabt_svc+0x4c/0x60) from [] (atmel_tasklet_func+0x104/0x690)[ 1023.800000] [] (atmel_tasklet_func+0x104/0x690) from [] (tasklet_action+0x84/0xe8)[ 1023.810000] [] (tasklet_action+0x84/0xe8) from [] (__do_softirq+0x88/0x124)[ 1023.820000] [] (__do_softirq+0x88/0x124) from [] (run_ksoftirqd+0x6c/0x128)[ 1023.830000] [] (run_ksoftirqd+0x6c/0x128) from [] (kthread+0x80/0x88)[ 1023.840000] [] (kthread+0x80/0x88) from [] (kernel_thread_exit+0x0/0x8)注意上述红色的地方。下面就来显示如何定位出出错代码行:1.首先,编译时打开complie with debug info选项,步则如下make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig进入 Kernel hacking选择Compile the kernel with debug info然后,保存,退出。接着make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-编译, 等编译完成。2.利用arm-none-linux-gnueabi-gdb 调试,如下:arm-none-linux-gnueabi-gdb vmlinux对应着Oops 消息里面的这一行[ 1023.520000] LR is at atmel_tasklet_func+0x10/0x690在gdb下键入命令 : l *at atmel_tasklet_func+0x10这样就找到了出错的代码行。在这里鄙视一下atmel提供的内核,竟然还有bug,fuck it!从这里可以看出是由于串口的dma导致Oops的,于是我去掉了串口的dma传输。方法如下:去掉之后还没有发现上述的Oops出现。

以上来自:http://bbs.chinaunix.net/thread-3744197-1-1.html

用以上的方法也能解决 Oops,但我发现我的情况是有的串口收发都可以使用 DMA,而有的就不行,于是我一个一个串口的测试,修改源码,将不能使用DMA的串口的DMA功能关闭掉,而不是将所有串口的 DMA 功能都关闭。

linux内核oops错误码说明,Oops 定位错误代码行相关推荐

  1. linux 内核 报错,根据epc定位linux内核报错.pdf

    根据epc定位linux内核报错.pdf 韩⼤卫@吉林师范⼤学 2014.12.10 转载请表明出处 ************************************************* ...

  2. Linux之标准错误码(全)(三十七)

    Linux之标准错误码(全) Errors: Linux System Errors When system requests fail, error code are returned. To un ...

  3. linux内核oops错误码说明,Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  4. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Oops在Linux 2.6内核+PowerPC架构下的前世今生

    Oops在Linux 2.6内核+PowerPC架构下的前世今生 Sailor_forever  sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人blo ...

  5. 【错误记录】编译 Linux 内核报错 ( fatal error: openssl/opensslv.h: No such file or directory )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 sudo make 命令 , 开始正式编译 Linux 内核 , 报如下错误 : root@ubuntu:~/ke ...

  6. 【错误记录】编译 Linux 内核报错 ( /bin/sh: 1: bison: not found )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 make menuconfig 配置菜单命令 , 报如下错误 : root@ubuntu:~/kernel/lin ...

  7. 【错误记录】编译 Linux 内核报错 ( /bin/sh: 1: flex: not found )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 make menuconfig 配置菜单命令 , 报如下错误 : root@ubuntu:~/kernel/lin ...

  8. 【Linux 】errno 错误码对照表和宏|error

    目录 错误对照表: 错误码对应宏 根据错误码打印错误信息 原文:Linux errno 错误对照表-https://blog.csdn.net/gpengtao/article/details/755 ...

  9. linux内核oops错误码说明,调试 – 了解内核oops错误代码

    在ARM的内核oops中跟踪日志打印在内核日志中 – <1>[ 4205.112835] I[0:swapper/0:0] [c0] Unable to handle kernel pag ...

最新文章

  1. [您有新的未分配科技点]可,可,可持久化!?------0-1Trie和可持久化Trie普及版讲解...
  2. Linux下的基本指令
  3. MATLAB中神经网络train函数使用说明
  4. tomcat原理及作用,MySQL数据中有很多换行符和回车符
  5. Servlet做Controller,实现一个类处理多个请求
  6. redist mysql_Windows下安装 MySQL
  7. 如何查看xbox账号所在服务器,Xbox账号绑定教程
  8. 伍德里奇计量经济学导论pdf_伍德里奇 计量经济学导论 第三章第三节-1 MLR1-MLR4...
  9. loadrunner11压力测试设置
  10. python cnn 股市_荐python3绘制股票K线图的那些坑【一】mpl_finance迁向mplfinance,以及plot独立窗口视图问题!...
  11. Fastdfs读取文件内容
  12. 【全网最实用】最常用Windows快捷键和Windows命令整理
  13. golang 爆破破解 rar5 压缩文件密码
  14. 《Revisiting Self-Supervised Monocular Depth Estimation》论文笔记
  15. 电视剧《大秦赋》最近很火!于是我用Python抓取了“相关数据”,发现了这些秘密.........
  16. 粗暴的rm rf,报错Argument list too long
  17. C/C++项目源码——五子棋
  18. Ubuntu1804换源
  19. 浏览器 下载文件/课件
  20. Firefly-RK3399 Linux内核编译

热门文章

  1. Python操作Oracle数据库:cx_Oracle
  2. Python的Mixins机制
  3. Python加lxml实现图片解析下载功能
  4. 程序员十大非技术面试问题及策略
  5. java 分布式sql引擎_分布式SQL查询引擎 Presto 性能调优的五大技巧
  6. 机器学习中什么是端到端的训练方法(端到端学习)?(end2end learning)
  7. python pycharm如何全局(整个项目中)搜索指定代码?(CTRL+SHIFT+F)全局字符串搜索
  8. python matplotlib.pyplot中add_subplot subplot函数的用法与区别(其实没什么区别)
  9. 深入浅出python机器学习_6.3.1_随机森林实例——要不要和相亲对象进一步发展
  10. xsd java引用_web.xml文件的 xsd引用(或dtd引用)学习