电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Linux_Boot、内核和驱动调试诊断技术

31页
  • 卖家[上传人]:飞***
  • 文档编号:48604193
  • 上传时间:2018-07-18
  • 文档格式:PPT
  • 文档大小:1.18MB
  • / 31 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、无线接入产品事业部 驱动室 陈敷明 2013年2月Linux Boot、内核和驱动调 试诊断技术MakefileMakefile介绍介绍主要内容1. UBOOT调试诊断技术2. 嵌入式Linux内核调试诊断技术3. 嵌入式Linux驱动调试诊断技术MakefileMakefile介绍介绍一. UBOOT调试诊断技术UBOOT调试主要内容: 1.串口终端未初始化阶段,可以使用的调试方法介绍。 2.串口终端已初始化阶段,可以使用的调试方法介绍。 3.如何分析UBOOT的Crash DumpsMakefileMakefile介绍介绍一. UBOOT调试诊断技术1.串口终端未初始化正常UBOOT启动流程,串口初始化比较靠后,在串口未 初始化前主要有以下三种方式获取程序运行信息。 1) 点灯 2) 往GPIO管脚输出高低电平,通过示波器测量电平值 3) 借助仿真器(如通过BDI查看pc值)也可在早期就初始化串口,以UBOOT-2011- 09_MPC8313平台代码为例:在设置了IMMRBAR后,MPC8313串口控制器中的寄存 器即可读写,所以可以选择初始化IMMRBAR后立即初 始化串口。此

      2、调试思路参考网上如何在单板上电之初 打印信息,具体实现参见源码。MakefileMakefile介绍介绍一. UBOOT调试诊断技术2.串口已初始化串口初始化后可以自己添加打印,但是UBOOT也提供了 许多调试打印开关,定义对应的调试宏即可打开这些开 关。最重要的调试开关是DEBUG宏,可在 include/configs/MPC8313ECOMBA.h中定义。实践中发现定义该宏后,对FLASH所有操作会打印刷屏 ,影响调试效率,可以将对FLASH操作时的打印关闭 。可在cfi_flash.c中将debug(fmt,args.)定义为空 或 #undef DEBUG来关闭cfi_flash.c文件的打印。MakefileMakefile介绍介绍一. UBOOT调试诊断技术其它可能用到的打印开关: miiphyutil.c(common)MII_DEBUG mkimage.h(tools)MKIMAGE_DEBUG cmd_mem.c (common)CMD_MEM_DEBUG command.c (common)DEBUG_COMMANDS hush.c(common)DEBUG_SH

      3、ELL main.c(common)DEBUG_PARSER main.c(common)DEBUG_BOOTKEYS spd_sdram.c(archpowerpccpumpc83xx) SPD_DEBUGMakefileMakefile介绍介绍一. UBOOT调试诊断技术3.如何分析uboot的Crash DumpsBus Fault 0x00f8d70c, fixup 0x00000000Machine check in kernel mode.Caused by (from msr): regs 00f52cf8 Unknown values in msrNIP: 00F8D70C XER: 0000005F LR: 00F8D6F4 REGS: 00f52cf8 TRAP: 0200 DAR: F9F68C00MSR: 00009002 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 00GPR00: 00016ACC 00F52DE8 00000000 F9F68C00 00FA38EC 00000001 F9F68BF8 0000000BGPR08: 000

      4、00002 00F55470 00000000 00F52D94 44004024 00000000 00FA2F00 C0F75000GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000GPR24: 00000000 00FA38EC 00F553C0 00F55480 00000000 00F52F80 00FA41C0 00000001Call backtrace:00000000 00F8F998 00F8FA88 00F8FAF8 00F90B5C 00F90CF8 00F8385C00F79E6C 00F773B0machine checkMakefileMakefile介绍介绍一. UBOOT调试诊断技术以上述打印为例分析:由于打印出的函数都是重定位后的地址(都是数字), 需要经过一些处理才能显示函数名字,UBOOT官网提供了一 个解析工具用这个工具解析时需要知道重定位到ram的地址,最简单 的方法就是在include/configs/arch_config_file.

      5、h中定义 DEBUG调试宏,那么在UBOOT运行过程中会打印出如下信 息 . Now running in RAM - U-Boot at: 00f75000 .MakefileMakefile介绍介绍一. UBOOT调试诊断技术此时就可知道重定位到RAM后的地址是0x00f75000,在 与你的链接地址(board/?/ config.mk中定义的TEXT_BASE)相减。我所用的单板上定义 的TEXT_BASE为0x40000000,所以差值就为0x40000000- 0x00f75000 = 0x3f08b000现在就可用uboot-backtrace.pl工具解析,即可获得函数 的调用栈关系。 - backtrace System.map 0x3f08b000MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术内核调试也可分为终端未初始化阶段、终端已初始化阶 段。终端未初始化阶段调试手段依然有限,仍然是通过点灯 、设置GPIO电平、提前初始化串口终端、借助于BDI工具等 调试手段。终端初始化后,内核就有许多调试方法。有些是内核自 带的,有些需要借助第三

      6、方工具。 如: 1)内核中自带的调试选项 2)内核Oops分析 3)BDI调试内核 4)KGDB调试内核 5)SystemTap使用(交叉编译没有成功) 6)Linux内核的ftrace功能 7)SYSRQ(邓工使用过该方法定位过内核死循环)下面对上面提到的调试方法逐一介绍。MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术1.内核中自带的调试选项介绍 内核自带的调试功能,主要通过以下几个途径来设置。1)编译时打开调试宏开关 如: *Device Drivers - *Memory Technology Device (MTD) support - *Debugging Debugging verbosity(0 = quiet, 3 = noisy) 调试阶段可选择2或3。*File systems - *Miscellaneous filesystems - Journalling Flash File System v2 (JFFS2) support JFFS2 debugging verbosity (0 = quiet, 2 = noisy) 调

      7、试阶段可选1或2。MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术2)内核启动参数里面加调试选项 较常用的Linux启动参数调试开关有: initcall_debug=1 打印内核各组件初始化函数的运行时间及返回值 lmb=debug 打印内核早期的lmb组件 debug 很早就将内核打印等级提高到KERN_DEBUG等级 bootmem_debug 打印bootmem组件相关内容,free显示内存小于实 际物理内存大小,因为kernel占用一定空间和一些 关键组件所分配的空间。这是通过添加 bootmem_debug打印分析得出的)MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术3)修改设备树(powerpc架构特有) 设备树最后添加如下内容,这样可以使能boot-wrapper阶段 的打印。chosen linux,stdout-path = “/soc8313e0000000/serial4500“; MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术2. 内核Oops分析Linux2.6自身

      8、具备的调试功能,可以使得打印出的Oops 信息更直观。通过Oops信息中PC寄存器的值可以知道出错指 令的地址,通过栈回溯信息可以知道出错时的函数调用关系 ,再结合反汇编找出具体函数中的出错处,根据这几点可以 很快定位错误。要让内核出错时能够打印栈回溯信息,编译内核时要增 加“-fno-omit-frame-pointer”选项,这可以通过配置 CONFIG_FRAME_POINTER来实现。查看内核目录下的配 置文件.config,确保CONFIG_FRAME_POINTER已经被定 义,如果没有,执行“make menuconfig”命令重新配置内核。 CONFIG_FRAME_POINTER有可能被其他配置项自动选上 。Oops分析需要熟悉具体CPU架构的EABI和汇编代码,这 方面的资料参见嵌入式Linux调试诊断技术研究之内核篇 .doc ,下面是胡工在TD-SCDMA eNode项目上Oops分析的 两个经典案例。MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术3.BDI调试内核 1)BDI配置 2)内核修改及配置 1、2具体操作步骤参见嵌入式

      9、Linux调试诊断技术研究之内 核篇.doc 3.2小节3)用BDI连接上单板,运行过程中输入halt指令,即可停止程序 运行,此时通过gdb连接单板即可开始调试。 具体操作步骤如下: BDIreset BDIhalt 此时程序停住,串口打印停止。 切换到虚拟机中,执行如下指令: powerpc-linux-gdb vmlinux (gdb)target remote bdi_ip:2001 连接上之后即可进行设置断点、查询变量、单步执行等操作 。MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术4.KGDB调试内核 1)Kgdb简介kgdb提供了一种使用gdb调试Linux内核的机制。使用 kgdb调试内核需要二台机器,一台作为开发机,另一台作为 目标机,通过串口将它们连接起来。在将要调试的内核中插 入kgdb,重新编译内核,使其运行在目标机上。而gdb在开发 机上运行,gdb通过串口与要调试的内核进行通信,对目标机 上的内核进行控制,从而实现远程调试内核的目的。MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术2)Kgdb调试步骤 需要打开如下内核配置选项: CONFIG_KGDB=y CONFIG_KGDB_SERIAL_CONSOLE=y 选项在 Kernel hacking 里可以找到,为了能在系统运行时中 断系统并触发远程 gdb,必须打开内核 Magic Sys-Rq 键选项 : CONFIG_MAGIC_SYSRQ=y 打开内核符号调试: CONFIG_DEBUG_INFO=y内核启动参数需要添加如下语句: kgdboc=ttyS0,115200 kgdbwait重新编译内核后,烧写进单板,单板重启后会出现waiting for字样。MakefileMakefile介绍介绍二. 嵌入式Linux内核调试诊断技术由于是通过串口连接单板,需要在虚拟机上添加1个串口。 选择VM-Settings-Hardware-Serial Port 单击Add 添加一个物理串口,并选择Use physical serial p

      《Linux_Boot、内核和驱动调试诊断技术》由会员飞***分享,可在线阅读,更多相关《Linux_Boot、内核和驱动调试诊断技术》请在金锄头文库上搜索。

      点击阅读更多内容
    TA的资源
  • 人教版一年级下册数学第二单元20以内的退位减法测试卷精品【考试直接用】

    人教版一年级下册数学第二单元20以内的退位减法测试卷精品【考试直接用】

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷(实用)word版

    人教版一年级下册数学第二单元20以内的退位减法测试卷(实用)word版

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷及答案(夺冠)

    人教版一年级下册数学第二单元20以内的退位减法测试卷及答案(夺冠)

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷(典型题)

    人教版一年级下册数学第二单元20以内的退位减法测试卷(典型题)

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷精品(a卷)

    人教版一年级下册数学第二单元20以内的退位减法测试卷精品(a卷)

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷及答案【精品】

    人教版一年级下册数学第二单元20以内的退位减法测试卷及答案【精品】

  • 部编版二年级上册道德与法治期中测试卷 (考试直接用)

    部编版二年级上册道德与法治期中测试卷 (考试直接用)

  • 部编版二年级上册道德与法治期中测试卷 带答案(培优)

    部编版二年级上册道德与法治期中测试卷 带答案(培优)

  • 部编版二年级上册道德与法治期中测试卷 含答案(精练)

    部编版二年级上册道德与法治期中测试卷 含答案(精练)

  • 部编版二年级上册道德与法治期中测试卷 及答案【各地真题】

    部编版二年级上册道德与法治期中测试卷 及答案【各地真题】

  • 部编版二年级上册道德与法治期中测试卷 及完整答案【名校卷 】

    部编版二年级上册道德与法治期中测试卷 及完整答案【名校卷 】

  • 部编版二年级上册道德与法治期中测试卷 【考点精练】

    部编版二年级上册道德与法治期中测试卷 【考点精练】

  • 部编版三年级上册道德与法治期末测试卷 (重点)

    部编版三年级上册道德与法治期末测试卷 (重点)

  • 部编版三年级上册道德与法治期末测试卷 (模拟题)word版

    部编版三年级上册道德与法治期末测试卷 (模拟题)word版

  • 部编版三年级上册道德与法治期末测试卷 附答案(预热题)

    部编版三年级上册道德与法治期末测试卷 附答案(预热题)

  • 部编版三年级上册道德与法治期末测试卷 附参考答案(b卷 )

    部编版三年级上册道德与法治期末测试卷 附参考答案(b卷 )

  • 部编版三年级上册道德与法治期末测试卷 答案下载

    部编版三年级上册道德与法治期末测试卷 答案下载

  • 部编版三年级上册道德与法治期末测试卷 含答案【夺分金卷 】

    部编版三年级上册道德与法治期末测试卷 含答案【夺分金卷 】

  • 部编版三年级上册道德与法治期末测试卷 含完整答案【网校专用】

    部编版三年级上册道德与法治期末测试卷 含完整答案【网校专用】

  • 部编版三年级上册道德与法治期末测试卷 及答案(最新)

    部编版三年级上册道德与法治期末测试卷 及答案(最新)

  • 点击查看更多
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.