Hallo, ich bin mitlerweile an dem Punkt angekommen, an dem mir printf-debugging nicht mehr ausreicht. Um noch mehr lernen zu können brauche ich mehr Mittel. Ich arbeite unter Linux (OpenSuse) und möchte auch damit debuggen. Ich bastle viel mit ATMega-AVR (hauptsächlich ATMega644) und möchte in naher Zukunft erste Experimente mit Cortex M3 machen. Was mir noch fehlt sind Antworten auf einige Fragen die ich habe. Wenn mir da einer Helfen könnte wär das super. Mein aktueller Stand ist, das ich drei Dinge benötige um unter Linux cross-debuggen zu können: 1. JTAG Interface 2. gdb debug server 3. debugger frontend (gdb, Insight, DDD) Eine Funktionale Kombination scheint JTAG-ICemk2 + avarice + DDD zu sein. Die 300€ für das Gerät kann ich mir aber nicht leisten. Daher habe ich mir hier bei mikrocontroller.net einige Links zu debuggern angeschaut. Auf den meisten Herstellerseiten gibts aber nur Windows Treiber und Software, was mir nicht weiter hilft. Irgendwie bin ich beim Olimex AVR-JTAG-USB hängen geblieben. Allerdings steht da nur dass er die selben Controller wie das Original unterstützt. Auf der Atmel Homepage gibt es aber dazu keine Datenblätter. Weiß einer wo man die unterstützten Controller in Erfahrung bringt? Des weiteren würde mich interessieren welche gdb server es gibt, und welche Hardware sie unterstützen. Ich habe oft vom avarice gelesen, allerdings noch keine liste mit unterstützter Hardware gefunden. Es gibt eine Sourceforge Seite aber keinerlei Infos. Wär schön wenn jemand ein paar Tipps / Alternativen für mich hat. Vielen Dank, toni
Thomas Weinhold schrieb: > Irgendwie bin > ich beim Olimex AVR-JTAG-USB hängen geblieben. Allerdings steht da nur > dass er die selben Controller wie das Original unterstützt. Auf der > Atmel Homepage gibt es aber dazu keine Datenblätter. Weiß einer wo man > die unterstützten Controller in Erfahrung bringt? Vergiß den am besten ganz schnell wieder. Die unterstützten µC sind: ATmega16, ATmega32, ATMega323, ATmega162, ATmega169, ATmega128 Steht aber auch so im auf der Seite verlinkten user guide: http://www.olimex.com/dev/pdf/avr-usb-jtag.pdf Bei Atmel ist dazu nichts mehr zu finden, weil das Teil schon seit etlichen Jahren obsolet ist und dafür nichts mehr entwickelt wird. Wenn Dir das ICEmkII zu teuer ist, warum dann kein Dragon? Zumindest unter Windows wird der auch von avarice unterstützt.
Thomas Weinhold schrieb: > Ich habe oft vom avarice gelesen, > allerdings noch keine liste mit unterstützter Hardware gefunden. Hier mal ein paar Ausgaben von avarice 2.9 aus WinAVR-20100110:
1 | >avarice -h |
2 | AVaRICE version 2.9, Jan 7 2010 22:42:57 |
3 | |
4 | Usage: avarice [OPTION]... [[HOST_NAME]:PORT] |
5 | |
6 | Options: |
7 | -h, --help Print this message. |
8 | -1, --mkI Connect to JTAG ICE mkI (default) |
9 | -2, --mkII Connect to JTAG ICE mkII |
10 | -B, --jtag-bitrate <rate> Set the bitrate that the JTAG box communicates |
11 | with the avr target device. This must be less |
12 | than 1/4 of the frequency of the target. Valid |
13 | values are 1000/500/250/125 kHz (mkI), |
14 | or 22 through 6400 kHz (mkII). |
15 | (default: 250 kHz) |
16 | -C, --capture Capture running program. |
17 | Note: debugging must have been enabled prior |
18 | to starting the program. (e.g., by running |
19 | avarice earlier) |
20 | -c, --daisy-chain <ub,ua,bb,ba> Daisy chain settings: |
21 | <units before, units after, |
22 | bits before, bits after> |
23 | -D, --detach Detach once synced with JTAG ICE |
24 | -d, --debug Enable printing of debug information. |
25 | -e, --erase Erase target. |
26 | -E, --event <eventlist> List of events that do not interrupt. |
27 | JTAG ICE mkII and AVR Dragon only. |
28 | Default is "none,run,target_power_on,target_sleep,target_wakeup" |
29 | -f, --file <filename> Specify a file for use with the --program and |
30 | --verify options. If --file is passed and |
31 | neither --program or --verify are given then |
32 | --program is implied. |
33 | -g, --dragon Connect to an AVR Dragon rather than a JTAG ICE. |
34 | This implies --mkII, but might be required in |
35 | addition to --debugwire when debugWire is to |
36 | be used. |
37 | -I, --ignore-intr Automatically step over interrupts. |
38 | Note: EXPERIMENTAL. Can not currently handle |
39 | devices fused for compatibility. |
40 | -j, --jtag <devname> Port attached to JTAG box (default: /dev/avrjtag). |
41 | -k, --known-devices Print a list of known devices. |
42 | -L, --write-lockbits <ll> Write lock bits. |
43 | -l, --read-lockbits Read lock bits. |
44 | -P, --part <name> Target device name (e.g. atmega16) |
45 | |
46 | -p, --program Program the target. |
47 | Binary filename must be specified with --file |
48 | option. |
49 | -r, --read-fuses Read fuses bytes. |
50 | -R, --reset-srst External reset through nSRST signal. |
51 | -V, --version Print version information. |
52 | -v, --verify Verify program in device against file specified |
53 | with --file option. |
54 | -w, --debugwire For the JTAG ICE mkII, connect to the target |
55 | using debugWire protocol rather than JTAG. |
56 | -W, --write-fuses <eehhll> Write fuses bytes. |
57 | -x, --xmega AVR part is an ATxmega device. |
58 | HOST_NAME defaults to 0.0.0.0 (listen on any interface). |
59 | ":PORT" is required to put avarice into gdb server mode. |
60 | |
61 | e.g. avarice --erase --program --file test.bin --jtag /dev/ttyS0 :4242 |
62 | |
63 | |
64 | >avarice -k |
65 | AVaRICE version 2.9, Jan 7 2010 22:42:57 |
66 | |
67 | List of known AVR devices: |
68 | |
69 | Device Name Device ID Flash EEPROM |
70 | --------------- --------- ------- ------- |
71 | at90can128 0x9781 128 KiB 4 KiB |
72 | at90can32 0x9581 32 KiB 1 KiB |
73 | at90can64 0x9681 64 KiB 2 KiB |
74 | at90pwm2 0x9381 8 KiB 0.5 KiB |
75 | at90pwm216 0x9483 16 KiB 0.5 KiB |
76 | at90pwm2b 0x9383 8 KiB 0.5 KiB |
77 | at90pwm3 0x9381 8 KiB 0.5 KiB |
78 | at90pwm316 0x9483 16 KiB 0.5 KiB |
79 | at90pwm3b 0x9383 8 KiB 0.5 KiB |
80 | at90usb1287 0x9782 128 KiB 4 KiB |
81 | at90usb162 0x9482 16 KiB 0.5 KiB |
82 | at90usb646 0x9682 64 KiB 2 KiB |
83 | at90usb647 0x9682 64 KiB 2 KiB |
84 | atmega128 0x9702 128 KiB 4 KiB |
85 | atmega1280 0x9703 128 KiB 4 KiB |
86 | atmega1281 0x9704 128 KiB 4 KiB |
87 | atmega1284p 0x9705 128 KiB 4 KiB |
88 | atmega128rfa1 0xA701 128 KiB 4 KiB |
89 | atmega16 0x9403 16 KiB 0.5 KiB |
90 | atmega162 0x9404 16 KiB 0.5 KiB |
91 | atmega164p 0x940A 16 KiB 0.5 KiB |
92 | atmega165 0x9407 16 KiB 0.5 KiB |
93 | atmega165p 0x9407 16 KiB 0.5 KiB |
94 | atmega168 0x9406 16 KiB 0.5 KiB |
95 | atmega168p 0x940B 16 KiB 0.5 KiB |
96 | atmega169 0x9405 16 KiB 0.5 KiB |
97 | atmega16hva 0x940C 16 KiB 0.2 KiB |
98 | atmega2560 0x9801 256 KiB 4 KiB |
99 | atmega2561 0x9802 256 KiB 4 KiB |
100 | atmega32 0x9502 32 KiB 1 KiB |
101 | atmega323 0x9501 32 KiB 1 KiB |
102 | atmega324p 0x9508 32 KiB 1 KiB |
103 | atmega325 0x9505 32 KiB 1 KiB |
104 | atmega3250 0x9506 32 KiB 1 KiB |
105 | atmega3250p 0x956E 32 KiB 1 KiB |
106 | atmega325p 0x955D 32 KiB 1 KiB |
107 | atmega328p 0x950F 32 KiB 1 KiB |
108 | atmega329 0x9503 32 KiB 1 KiB |
109 | atmega3290 0x9504 32 KiB 1 KiB |
110 | atmega3290p 0x950C 32 KiB 1 KiB |
111 | atmega329p 0x9503 32 KiB 1 KiB |
112 | atmega32c1 0x9586 32 KiB 1 KiB |
113 | atmega32hvb 0x9510 32 KiB 1 KiB |
114 | atmega32m1 0x9584 32 KiB 1 KiB |
115 | atmega32u4 0x9587 32 KiB 1 KiB |
116 | atmega406 0x9507 40 KiB 0.5 KiB |
117 | atmega48 0x9205 4 KiB 0.2 KiB |
118 | atmega48p 0x920A 4 KiB 0.2 KiB |
119 | atmega64 0x9602 64 KiB 2 KiB |
120 | atmega640 0x9608 64 KiB 4 KiB |
121 | atmega644 0x9609 64 KiB 2 KiB |
122 | atmega644p 0x960A 64 KiB 2 KiB |
123 | atmega645 0x9605 64 KiB 2 KiB |
124 | atmega6450 0x9606 64 KiB 2 KiB |
125 | atmega649 0x9603 64 KiB 2 KiB |
126 | atmega6490 0x9604 64 KiB 2 KiB |
127 | atmega88 0x930A 8 KiB 0.5 KiB |
128 | atmega88p 0x930F 8 KiB 0.5 KiB |
129 | attiny13 0x9007 1 KiB 0.1 KiB |
130 | attiny167 0x9487 16 KiB 0.5 KiB |
131 | attiny2313 0x910A 2 KiB 0.1 KiB |
132 | attiny24 0x910B 2 KiB 0.1 KiB |
133 | attiny25 0x9108 2 KiB 0.1 KiB |
134 | attiny261 0x910C 2 KiB 0.1 KiB |
135 | attiny43u 0x920C 4 KiB 0.1 KiB |
136 | attiny44 0x9207 4 KiB 0.2 KiB |
137 | attiny45 0x9206 4 KiB 0.2 KiB |
138 | attiny461 0x9208 4 KiB 0.2 KiB |
139 | attiny48 0x9209 4 KiB 0.1 KiB |
140 | attiny84 0x930C 8 KiB 0.5 KiB |
141 | attiny85 0x930B 8 KiB 0.5 KiB |
142 | attiny861 0x930D 8 KiB 0.5 KiB |
143 | attiny88 0x9311 8 KiB 0.1 KiB |
144 | atxmega128a1 0x974C 136 KiB 2 KiB |
145 | atxmega128a1revd 0x9741 136 KiB 2 KiB |
146 | |
147 | > |
Warum reicht die printf-Methode nicht mehr aus? Ein Protokoll in Form eines "log files" ist m. A. nach jedem Debugger überlegen, auch weil es später in der Produktionsphase unschätzbare Dienste erweisen kann. Spätestens unter Hochlast mit vielen Threads geht's eh nicht anders. Aber jeder Jeck ist anders :-) Abgesehen davon, wenn die Reise Richtung Cortex-M3 gehen soll, dann kaufe Dir ein STM32VL Discovery. Kostet 13 EUR inkl. Programmierer und Debugger via USB. gdb-Anbindung unter Linux, alles als Open-Source. Aber rechne mit Problemen, die arm-utilities sind noch nicht ganz ausgereift, ich hab's inzwischen stabil am Laufen und bin sehr zufrieden. Alternativ ein LPCXpresso für 24 EUR. NXP legt diesem eine Code Red IDE Umgebung bei. Damit soll wohl Debugging funktionieren, mir kam dieses Ding nicht auf die Platte, da es zwingend mit root-Rechten zu installieren ist und ggf. z. B. libusb überschreibt. Auch mit dem Teil bin ich sehr zufrieden. In beiden Fällen soll es sogar möglich sein, den Programmierer/Debugger auch "separat" einsetzen zu können. Da musst Du ggf. selbst recherchieren. Wenn ich mir diese Preise ansehe, dazu die Leistung des Cortex-M3, dann stellt sich die Frage nach AVR-Debugging nicht mehr. Es gibt nur ein Hindernis, und das nennt sich DIP.
Das ist doch mal eine Aussage. Ich denke wenn avarice den Dragon unter Windows unterstützt wird das auch unter Linux funktionieren. Der Dragon an sich hat ja eine lange Liste von unterstützten Controllern, das finde ich gut. Muss man noch irgend etwas beachten, ein Datenblatt für den Dragon scheint es ja nicht zu geben? An sonsten werde ich mir das Gerät wohl zulegen. Vielen Dank für die Info!
Roland H. schrieb: > Warum reicht die printf-Methode nicht mehr aus? Ein Protokoll in Form > eines "log files" ist m. A. nach jedem Debugger überlegen, auch weil es > später in der Produktionsphase unschätzbare Dienste erweisen kann. > Spätestens unter Hochlast mit vielen Threads geht's eh nicht anders. > Aber jeder Jeck ist anders :-) > > Abgesehen davon, wenn die Reise Richtung Cortex-M3 gehen soll, dann > kaufe Dir ein STM32VL Discovery. Kostet 13 EUR inkl. Programmierer und > Debugger via USB. gdb-Anbindung unter Linux, alles als Open-Source. Aber > rechne mit Problemen, die arm-utilities sind noch nicht ganz ausgereift, > ich hab's inzwischen stabil am Laufen und bin sehr zufrieden. > > Alternativ ein LPCXpresso für 24 EUR. NXP legt diesem eine Code Red IDE > Umgebung bei. Damit soll wohl Debugging funktionieren, mir kam dieses > Ding nicht auf die Platte, da es zwingend mit root-Rechten zu > installieren ist und ggf. z. B. libusb überschreibt. Auch mit dem Teil > bin ich sehr zufrieden. > > In beiden Fällen soll es sogar möglich sein, den Programmierer/Debugger > auch "separat" einsetzen zu können. Da musst Du ggf. selbst > recherchieren. > > Wenn ich mir diese Preise ansehe, dazu die Leistung des Cortex-M3, dann > stellt sich die Frage nach AVR-Debugging nicht mehr. Es gibt nur ein > Hindernis, und das nennt sich DIP. Also Multithread versuch ich erst garnicht auf dem AVR. Ein OS mit 2kB RAM dürfte schwierig werden. Auch das printf debugging funktioniert nur dann, wenn es nicht printf ist, das man debuggen will ;) . Die ersten Experimente mit Cortex M3 werden noch etwas dauern. Von daher lohnt es sich für mich schon noch für den AVR Geld auszugeben (wenn es im Rahmen bleibt). Die DIP Problematik sehe ich nicht. Für den Einstieg hatte ich an ein Starterkit gedacht. Für richtige Projekte mach ich auch schon mal ein Platinendesign. Für so ein discovery Board bin ich nicht zu begeistern. Mir ist es lieber wenn ich zwei Geräte habe: Einen Programmierer/Debugger und das Target. Wenn die Teile aber seperat einsetzbar sind wäre das für Hobby/Educational Zwecke Ok, Das schau ich mir dann aber an wenn die Zeit reif ist. Ich danke Dir auf jeden Fall.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.