U-Boot-2009-03移植笔记(调试篇)

对于驱动开发,系统移植来说,我们的代码可能会出现无数种bug,但是结果只有一个:驱动失败!本文简单介绍以下openjtag的裸机调试.

开发环境

操作系统:ubuntu10.04

硬件设备:xinna2440

软件:openocd 0.3.1、u-boot-2009-03

调试方法

首先我们必须得对我们的程序每条指令位于哪个地址了如指掌,所以,我们需要对我们编译好的u-boot进行反编译:使用arm-linux-objdump命令。

在u-boot源码根目录,运行:arm-linux-objdump -d u-boot > u-boot.S,这样,反编译后的代码,就在u-boot.S中,我们用vim打开看看

很清楚的看到,我们的程序在0x33f80090处调用了nand_init_ll函数,那么我们就在这里设置好断点。但是有一点要注意,我们程序的链接起始地址是0x33f80000,所以,对于地址0x33f80090在sram中的真实地址是0x00000090,所以我们要在地址0x00000090处设置断点.

在openocd中,当你halt住cpu之后,可以使用bp命令设置断点

 

设置好断点之后,我们直接输入bp命令,不加任何参数,可以看到目前设置了几个断点。现在,我们把cpu的pc寄存器指向0x0地址,准备从头运行程序

 

然后,我们使用resume命令,让cpu恢复运行状态,然后程序会在0x00000090处停下来,如下图:

然后我们使用step命令,可以让程序单步执行

用这种调试方法,我们可以精确的知道,我们的程序跑到了哪里,对我们诊断问题有非常大的帮助。

转载于:https://www.cnblogs.com/smartcoder/archive/2013/05/28/3104079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值