Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88199
  • 博文数量: 22
  • 博客积分: 938
  • 博客等级: 准尉
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-16 21:27
文章存档

2010年(22)

我的朋友

分类: 嵌入式

2010-06-15 09:42:51

使用AXD在内存中调试u-boot


一、使用的软件与工具:
H-JTAG v0.6.1
CITK2410开发板(带bootloader
AXD Debugger for ARM Developer Suite 1.2
并口线与JTAG                                                                         
 
二、主要的过程:
1)正确连接JTAG线,板子上电
2)安装H-JTAG v0.6.1软件。然后打开H-JTAG,点击 Detect Target
对于使用s3c2410,执行Detect Target后得到如下结果:
 
 
3)打开AXD Debugger, 点击Options-->Configure Target…
①这时出现以下Choose Target对话框:
 
②接着点击add,增加一个Target Environments.
在安装H-JTAG v0.6.1的目录下有H-JTAG.dll动态链接库,点击增加即可。
 
③现在发现AXD已经可以正确的显我们开发析的信 息。
 
4)在AXD上 点击System Views-->command line interfaceALT+L
    在出现的command line interface窗 口中输入以下命令: 
 
Debug >loadbinary C:\u-boot.bin 0x33f80000
Debug >loadsymbols C:\u-boot.axf
Debug >setpc 0x33f80000
 
    这里下载到内存的地址为0x33f80000, 是根据u-boot中的TEXT_BASE变 量设置,这里可以省去调试过程中对地址的转换。在u-boot对应开发板的目录下的config.mk文件中可以找到这个变量。
u-boot.axf是由编译后得到的u-boot直接改名得到的。
 
也可以将命令按行写到一个文件中,然后使用ob命令 执行,这样可以节省时间。
例如可以将以上命令存为一个run.txt的文件, 放在D盘。然后在command line interface中输入命令:
 
Debug >ob D:\run.txt
 
所有的命令在GUI里面也是有的,可以利用批处理文 件(OB命令)来免去敲命令和点菜 单的麻烦
                             
 
这时就可以在内存中对u-boot调试啦。             
 
三、在调试的过程中,可以先使用crosstool工 具arm-linux-objdumpu-boot反编译。
例如,在u-boot的目录下,执行以下命令:
 
[root@localhost WORK]# /opt/crosstool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-objdump -S u-boot > u-boot.S
 
得到的u-boot.S汇编源代码与u-boot符号表System.map结合起 来将是跟踪调试过程中的得力助手。
 
四、附录:
一些用到的命令的解释
LoadBinary = 将一个文件导入SDRAM
LoadSymbols = 导入符号表
SetPC = 设置PC寄存器
Run = 开始运行
OB + 文件名 = 按照批处理文件运行
如果有命令不清楚的话,在命令行下,输入 help ,可 以打开帮助文件!
 
以上的调试方法对于u-boot的第一阶段调试比较 好,但对于第二阶段效果就不是太好。
阅读(2395) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~