电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

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

  • 资源ID:48604193       资源大小:1.18MB        全文页数:31页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

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

无线接入产品事业部 驱动室 陈敷明 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后立即初 始化串口。此调试思路参考网上如何在单板上电之初 打印信息,具体实现参见源码。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_SHELL 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: 00000002 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.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工具等 调试手段。终端初始化后,内核就有许多调试方法。有些是内核自 带的,有些需要借助第三方工具。 如: 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) 调试阶段可选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自身具备的调试功能,可以使得打印出的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具体操作步骤参见嵌入式Linux调试诊断技术研究之内 核篇.doc 3.2小节3)用BDI连接上单板,运行过程中输入halt指令,即可停止程序 运行,此时通过gdb连接单板即可开始调试。 具体操作步骤如下: BDI>reset BDI>halt 此时程序停住,串口打印停止。 切换到虚拟机中,执行如下指令: >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、内核和驱动调试诊断技术)为本站会员(飞***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.