Hallo,
wollte ein einfach Startprogramm auf einem AT91SAM7SE256 auführen
lassen. Dabei benutze ich Eclipse, als Debugger arm-elf-gdb und als
external tool OpenOCD. Für die verbindung benutze ich das ARM-USB-OCD
Kabel von Olimex. Die Toolchain äuft unter windows 7, 64 bit version.
Das config-file sieht folgendermasen aus:
1 | #interface
|
2 | interface ft2232
|
3 | ft2232_device_desc "Olimex OpenOCD JTAG A"
|
4 | ft2232_layout "olimex-jtag"
|
5 | ft2232_vid_pid 0x15BA 0x0003
|
6 | jtag_speed 5
|
7 |
|
8 | #daemon configuration
|
9 | telnet_port 4444
|
10 | gdb_port 3333
|
11 | daemon_startup attach
|
12 |
|
13 | #use combined on interfaces or targets that can't set TRST/SRST separately
|
14 | reset_config trst_and_srst srst_pulls_trst
|
15 |
|
16 | #jtag scan chain
|
17 | #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
|
18 | jtag_device 4 0x1 0xf 0xe
|
19 |
|
20 | #target configuration
|
21 | #target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
|
22 | target arm7tdmi little run_and_halt 0
|
23 | daemon_startup reset
|
24 |
|
25 | #flash configuration
|
26 | flash bank at91sam7 0 0 0 0 0
|
Der Programmcode ist einfach:
1 | #include <stdio.h>
|
2 |
|
3 | int a;
|
4 |
|
5 | int main()
|
6 | {
|
7 | a=5;
|
8 | return 0;
|
9 | }
|
und das Makefile:
1 | COMPILER=arm-elf-
|
2 |
|
3 | COPY=$(COMPILER)objcopy
|
4 |
|
5 | OUTFILE=hello
|
6 |
|
7 | LDFLAGS+=-Wl,--cref
|
8 | LDFLAGS+=-lc -lgcc
|
9 | ASFLAGS=-D__ASSEMBLY__ -D$(TARGET) -g -mcpu=arm7tdmi -c $(OPTIM) -Wall -I$(INCL)
|
10 |
|
11 | all: hello
|
12 |
|
13 | hello: main.o
|
14 | $(COMPILER)gcc $(LDFLAGS) -n -o $(OUTFILE).elf main.o
|
15 | $(COPY) --strip-debug --strip-unneeded $(OUTFILE).elf -O binary $(OUTFILE).bin
|
16 |
|
17 | main.o: main.c
|
18 | $(COMPILER)gcc -c -g main.c
|
19 |
|
20 | clean:
|
21 | del /F *.o *.bin *.elf *.map
|
Bei Initialize hab ich :
target remote localhost:3333
Bei run:
monitor reset 1
load
continue
Nun ergibt sich das ausführen des debuggers und external tools
folgendes:
target remote localhost:3333
0x0010d2d0 in ?? ()
monitor reset 1
usage: reset ['run', 'halt', 'init', 'run_and_halt', 'run_and_init]
load
`C:\Studium\Eclipse_Projects\HalloWeltSE256\hello.elf' has changed;
re-reading symbols.
Loading section .init, size 0x20 lma 0x8000
Loading section .text, size 0x220c lma 0x8020
Loading section .fini, size 0x1c lma 0xa22c
Loading section .rodata, size 0xc lma 0xa248
Loading section .eh_frame, size 0x4 lma 0xa254
Loading section .ctors, size 0x8 lma 0xa358
Loading section .dtors, size 0x8 lma 0xa360
Loading section .jcr, size 0x4 lma 0xa368
Loading section .data, size 0x934 lma 0xa36c
Start address 0x8100, load size 11168
Transfer rate: 12 KB/sec, 259 bytes/write.
continue
Was bedeutet das 0x0010d2d0 in ?? ()?
Für Hilfe wär ich seh dankbar, da ich noch nicht so wirklich in der
sache drin stecke.