[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
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
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"
target remote 127.0.0.1:3333 monitor arm920t cp15 2 0 monitor arm7_9 dbgrq enable monitor halt load break main continue
下面是调试过程: 1启动openocd 下拉选择openocd 调试过程中openocd在未停止状态下 只需启动一次
调试界面如下 剩下的和调试其它程序无差别了 google search 呵呵