1.cpu发出的地址信号,数据信号都通过jtag
2.jtag可以控制cpu
当addr = xxxx,停止cpu --->硬件端点
当data = xxxx,停止cpu --->软件断点
3.让jtag直接访问外设
arm9上有两个硬件断点
软件断点必须要求地址可写,不能调试nand,nor flash.
源码级别的调试是有使用前提的:
- 源代码已经重定位好了.处于它的链接地址.
实际上是根据源代码的链接地址修改内存,
1.1使用openocd初始化sdram
1.2 gdb下载程序 - lds脚本各个段必须分开,text,data,bss段分开
3.被调试的程序里含有debug信息
谁来初始化sdram呢?
谁把程序下载到0x30000000
1.openjtag下载初始化sdram的程序
> load_image init/init.bin 0
> resume 0x0
2.cmder下load nand_elf
arm-elf-gdb nand_elf
(gdb) target remote 127.0.0.1:3333
(gdb) load
Loading section .text, size 0x12a0 lma 0x30000000
Loading section .rodata, size 0x34 lma 0x300012a0
Start address 0x30000000, load size 4820
Transfer rate: 26 KB/sec, 2410 bytes/write.
//设置断点
(gdb) break main.c:21
eclipse新建c工程
1. 选择菜单项“File -> New -> C Project”
2. Makefile project->Empty
Projects”、“Other Toolchain”,然后点击“Finish”按钮。
3.Eclipse 工程建立好后, 在“Project” 菜单里,点击去掉“Build Automatically”前面的标
记,表示不自动编译工程
开始调试配置
1.如下操作
-
弹出的窗口如图 2.52 所示, 在里面可以看到 Zylin 字样的调试器。新建一个
注:如果曾经创建过调试配置项,可以选中它后点右键,选择“Duplicate”进行复制,然后再修改,这样可以避免重复劳动。
3.选择要调试的应用程序
接下来设置调试器,如图 2.56 所示: 选择“Debugger” 为“Embedded GDB” ,设置“GDB
debugger”为“C:\Program Files\yagarto\bin\arm-elf-gdb.exe”,设置“GDB command file”为
“e:\eclipse_projects\s3c2440_gdb.init” (注:如果是 S3C2410 开发板,则是 s3c2410_gdb.init;
如果是 S3C6410 开发板,则是 E:\eclipse_projects\6410\s3c6410_gdb.init;如果是 s5pc100,则是
E:\eclipse_projects\s5pc100\s5pc100_gdb.init)