arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试

step1:安装eclipse   cdt  这个google search 一大堆   archlinux  下 yaourt  直接             搞定

step2:在线安装安装eclipse  zylincdt插件   eclipse下  Help==>install new                    software==>work with:  zylincdt -                                                                  http://www.zylin.com/zylincdt 剩下的google search一堆

step3:安装openocd   yaourt搞定最新版  配置文件如下:

[leftover-crazy@leftover-crazy ~]$ vim .openocd/openocd.cfg 

# # 100ASK OpenJTAG # # http://www.100ask.net # interface ft2232 ft2232_device_desc "USB<=>JTAG&RS232 A" ft2232_layout jtagkey ft2232_vid_pid 0x1457 0x5118 # Target configuration for the Samsung 2440 system on chip # Tested on a S3C2440 Evaluation board by keesj # Processor : ARM920Tid(wb) rev 0 (v4l) # Info: JTAG tap: s3c2440.cpu tap/device found: 0x0032409d (Manufacturer: 0x04e, Part: 0x0324, Version: 0x0) if { [info exists CHIPNAME] } { set _CHIPNAME $CHIPNAME } else { set _CHIPNAME s3c2440 } if { [info exists ENDIAN] } { set _ENDIAN $ENDIAN } else { # this defaults to a bigendian set _ENDIAN little } if { [info exists CPUTAPID ] } { set _CPUTAPID $CPUTAPID } else { # force an error till we get a good number set _CPUTAPID 0x0032409d } #jtag scan chain jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME arm920t -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm920t $_TARGETNAME configure -work-area-phys 0x200000 -work-area-size 0x4000 -work-area-backup 1 #reset configuration jtag_nsrst_delay 100 jtag_ntrst_delay 100 reset_config trst_and_srst jtag_khz 12000 #gdb_breakpoint_override hard arm7_9 dcc_downloads enable arm7_9 fast_memory_access enable nand device 0 s3c2440 0 

step4: crosstool-ng 编译交叉工具链 生成如下工具:

arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-addr2line arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-addr2name.awk arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-ar arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-as arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-c++ arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-cc arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-c++filt arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-cpp arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-ct-ng.config arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-g++ arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gcc arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gcc-4.3.2 arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gccbug arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gcj arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gcov arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gdb arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gdbtui arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gfortran arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-gprof arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-jcf-dump arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-ld arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-ldd arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-nm arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-objcopy arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-objdump arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-populate arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-ranlib arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-readelf arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-run arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-size arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-sstrip arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-strings arm/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi-strip  

   此步骤也是google search  呵呵

step5:新建empty makefile工程    以下截图说明:

FILE==>c project 选择makefile project ==》empty project==》选择other toolchain 并填写工程名称

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第1张图片

 

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第2张图片

next==>next==>finish

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第3张图片

test project 右键 properties  ==》Settings 修改如下:

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第4张图片

 

discovery option 修改如下:

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第5张图片

 

接着就可以新建代码文件以及makefile了简单实例如下:

makefile:

all: test.S arm-2440-linux-gnueabi-as -g test.S -o test.o arm-2440-linux-gnueabi-ld -Ttext=0x0 test.o -o test_elf arm-2440-linux-gnueabi-objdump -d -m arm test_elf > test_elf.dis arm-2440-linux-gnueabi-objcopy -I elf32-littlearm test_elf -O binary test.bin clean: rm -f test.o test_elf test_elf.dis test.bin  

test.S:

main: @压栈操作 nop nop ldr sp, =2000 mov ip, sp sub sp, sp, #12 str lr, [sp] @str r14, [sp] str ip, [sp, #4] @ str r12, [sp, #4] str fp, [sp, #8] @ str r11. [ip, #8] sub fp, ip, #4 @函数调用 ldr r0, =hello @取hello标签地址给R0 既参数一的地址 @arm汇编参数传递通过 @R0传递第一个参数 @R1传递第二个参数 @R2传递第三个参数 @R3传递第四个参数 @如果有多于四个参数的传递需要使用堆栈 @sub sp,sp,#4 @mov lr, pc @ldr pc, show @出栈操作 ldr lr, [fp, #-8] ldr ip, [fp, #-4] ldr fp, [fp, #0] mov sp, ip @函数返回 mov pc,lr show: .word 0x33f9303c hello: .asciz "hello Uboot part2! /n"  

接着取消选中project下的 Build Automaticlly

build project 执行make all    clean project 执行make clean

 

 

step6:openocd 配合gdb调试工程配置

选择下的debug configurations     双击zylin embedded debug(native)设置如下:

 

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第6张图片


以下仅修改gdb工具:断点入口可以指定任意lable

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第7张图片

 

接着修改启动时的初始命令  monitor开头的是相对于openocd的   其余为gdb的  代码如下:(参照图片修改)

target remote 127.0.0.1:3333 monitor arm920t cp15 2 0 monitor arm7_9 dbgrq enable monitor halt load break main continue 

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第8张图片接着点击apply即可

 

启动openpcd   可以在external  tool configurations 设置  也可以直接命令行启动  

点击下的external  tool configurations  设置如下两步:

 

 

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第9张图片

 

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第10张图片

 

step7:以上已经完成了所有的配置    下次用到时直接copy project   做相应的简易修改即可

下面是调试过程:  1启动openocd  下拉选择openocd   调试过程中openocd在未停止状态下  只需启动一次

                          2开始调试 下拉选择 test default  

 

                           调试界面如下  剩下的和调试其它程序无差别了  google search  呵呵

 

arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试_第11张图片

                         收工   有够蛋疼的  嘿嘿

你可能感兴趣的:(arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试)