Forum: Mikrocontroller und Digitale Elektronik Welchen Debugger für Atmel Cortex M3


von Johann (Gast)


Lesenswert?

Ich habe das Atmel Cortel M3 Evaluation Board zugelegt. Das Board 
besitzt einen Atmel SAM3U µC.

Laut Atmel soll der SAM-ICE von Segger für den Download der Firmware 
verwendet werden können. Jedoch habe ich es weder mit dem IAR-IDE noch 
mit Keil hinbekommen.

Die Firmware auf dem Segger SAM-ICE ist bereits von 2008. Ich habe alles 
von Segger heruntergeladen und installiert. Jedoch konnte ich keine 
Firmwareupgrade auf dem SAM-ICE durchführen.

Zu welchen DOWNLOADER und DEBUGGER könnt ihr mir raten?

Ich möchte keinen Open Source Compiler verwenden. Demach sollte er 
leicht in die IDE IAR oder Keil implementierbar sein.

Ich habe bei Segger gelesen das momentan der J-Link das aktuelle Produkt 
ist und dies auch mit IAR und Keil benutzbar ist.

Hat jemand schon den J-Link ausprobiert?

von Jürgen H. (nobody)


Lesenswert?

Servus,

habe hier in der arbeit einen Ulink2. Geht gut aber ein bisserl teuer.
Kann aber dafür trace und auch SWD.

Den Segger EDU hab ich Zuhause. Billig und für daheim echt super. Kann 
auch SWD aber soweit ich weiß keinen trace. Aber muss gestehen hab ich 
daheim auch noch nicht probiert.

Der Ulink geht halt nur mit Keil der Segger auch mir Eclipse oder 
ähnlichen IDE's.

Gruß
Stumpf

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann schrieb:
> Hat jemand schon den J-Link ausprobiert?

Das SAM-ICE von Atmel ist ein Segger J-Link.

Benutzt habe ich ihn schon, aber für die SAM3s bekommst du wohl nicht
mehr (wie früher) die Software von Segger kostenlos (limitiert auf
die Benutzung mit Atmel-Controllern).  Die älteren Versionen wiederum
weigern sich, mit SAM3 zu arbeiten.

Daraufhin habe ich den Segger-Softwarekrempel in die Ecke geworfen und
OpenOCD benutzt.  Geht astrein, und ist mir (im Gegensatz zu dir)
letztlich ohnehin lieber gewesen, da die Toolchain davor bei mir auch
Opensource ist.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Johann schrieb:
> Laut Atmel soll der SAM-ICE von Segger für den Download der Firmware
> verwendet werden können. Jedoch habe ich es weder mit dem IAR-IDE noch
> mit Keil hinbekommen.

Hi,

der blaue JLink a'la SAM-ICE sollte mit der Keil µVision funktionieren. 
Als Debugger dann JLink auswählen.

VG,
/th.

von BWLnow (Gast)


Lesenswert?

Johann schrieb:

> Ich möchte keinen Open Source Compiler verwenden. Demach sollte er
> leicht in die IDE IAR oder Keil implementierbar sein.

Schau dich doch einmal bei Raisonance (http://www.raisonance.com/) um.

von Johann (Gast)


Lesenswert?

Ich habe bei Keil auf JLink umgestellt. Jedoch bekomme ich ich immer 
einen Hinweis das es neuere Version gibt.

Außerdem bekomme ich immer einen Errror wenn ich das Blink 
Beispielprogramm draufspielen will.

Die neuen JLINK sind jedoch schwarz und habe einen anderen Inhalt. 
Deshalb dachte ich das ich den mal ausprobieren. Kostet zwar fast 400€ 
der neue JLink das spielt jedoch momentan keine Rolle.

Von Open Source bin ich momentan geheilt. Irgendwas geht doch immer 
nicht. Miestens ist alleine schon die Installation sehr aufwendig.

von Johann (Gast)


Lesenswert?

Was ist denn TRACE und SDW?

Der Keil ULINK2 kostet ja 500€ und die Pro sogar über 1000€

von Johann (Gast)


Lesenswert?

Ich habe eine die SAM-ICE Hardwareversion 5.4. (Die ist halt schon von 
2008 oder so)

von Random .. (thorstendb) Benutzerseite


Lesenswert?

"früher" gab es JTAG. Dieses IF wurde nun etwas eingedampft, auf eine 
Serial Wire Debug (SWD), mit einem Serial Wire Out (SWO) Pin. Das 
zusammen ergibt das SWJ (Serial Wire/JTAG), wenn der Controller beides 
unterstützt.
Dazu parallel gibt es noch das 1-4Bit/Pin Trace Interface.

An Trace-fähigen Units gibt es die DWT (Data Watch & Trace), die ITM 
(Instrumentation Trace Unit) und die ETM (Embedded Trace Macrocell).

Die DWT kann Speicherzellen (z.B. Variablen) Tracen und ausgeben. 
Weiterhin ermöglicht sie komplexe Breakpoints, z.B. "Break when 'x' is 
read" oder "Break when x==0x55".

In µVision wäre das (Command Window):
BS READ myVar
BS READWRITE myVar==0x55

Dafür hat die DWT 4 Units. Ein einfacher Watch (Variablenwert ausgeben 
oder BP) erfordert eine Unit. Ein komplexer BP (myVar==0x55) erfordert 2 
Watches.

Die ITM hat 32 output-channels, über die das Userprogramm auf der CPU 
Informationen ausgeben kann.
ITM kann weiterhin alle n Instructions (Divder einstellbar) den PC 
samplen und ausgeben, sowie die ISR Entry/Exit/Returns ausgeben. Das 
ermöglicht ein rudimentäres Trace.

Die ETM Unit ermöglicht ein vollständiges Tracing.

Diese 3 Units werden über die Trace Port Interface Unit (TPIU) zu einem 
Datenstrom zusammengefasst, und über den SWO Pin oder das 1-4Bit Trace 
Interface ausgegeben.

Anm.: ETM über SWO macht keinen Sinn und ist deswegen idR. nicht 
auswählbar.

------
Ab hier kann ich nur für µVision / ULINK sprechen:

Der ULINK2 kann den SWO Pin samplen, und die Informationen auf 
verschiedene Fenster ausgeben.
Bei ITM sind die channel 0 und 31 lt. CMSIS Standard für printf (Ch.0) 
und RTOS Status (Ch.31) reserviert.

Im µVision landen die ITM Ch.0 Ausgaben im ITM printf Viewer. Das ist 
ein Terminal mit grundlegender VT100 Funktion, weiterhin kann man die 
Daten als reine ASCII, HEX oder im ASCII/HEX Mixed Mode ansehen.

Die RTOS Daten landen im µVision Falle (RTX) im RTX Status Window und im 
Event Viewer, der die Taskwechsel anzeigt.

---
Der ULINK pro unterstützt den 1-4Bit Trace Port und den SWO in Full 
Speed (jenseits 100MHz, genaue Zahl weiss ich gerade nicht). Die 
Funktionalität ist hier wie die vom ULINK2 (allerdings Faktoren 
schneller), zusätzlich kann ein vollständiger Trace aufgenommen werden. 
Diesen kann man sich entweder im Trace Window anzeigen lassen zur 
Fehlersuche (z.B. bei Hard Fault), oder einfach nur als Code Coverage 
nutzen.
Zur Übertragung mit höherer Bandbreite können die ITM Daten auch per 
4Bit Trace Port übertragen und in ein File geloggt werden (macht Sinn 
für ITM Ch. 1-30).

VG,
/th.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann schrieb:
> Die neuen JLINK sind jedoch schwarz

Das blau ist halt die Atmel-Farbe, die Segger deren OEM-Version dann
verpasst.  Inhaltlich hat sich von der Hardware meines Wissens nichts
geändert (zumindest sollten sie aufwärtskompatibel sein).

> Außerdem bekomme ich immer einen Errror wenn ich das Blink
> Beispielprogramm draufspielen will.
...
> Von Open Source bin ich momentan geheilt.

Naja, deine Aussage "irgendwas geht doch immer nicht" trifft wohl hier
gerade genauso zu.  Selektive Wahrnehmung?

Aber du hast doch für die Software was bezahlt, damit solltest du doch
deren Support befragen können, wie man das SAM-ICE damit nun zum Laufen
bekommt.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> Die neuen JLINK sind jedoch schwarz und habe einen anderen Inhalt.

JLinks gibtz in allerlei Gewand :-)

Schwarz: Original JLink, kommerziell nutzbar
Weiss  : Original JLink, Education Version (mMn. eine schlaue Antwort 
auf die China Replikate)
Blau   : SAM-ICE, der spricht nur mit Atmels µCs
Gelb   : IAR, der mag nur die IAR Toolchain
Schwarz, anderes Gehäuse: mIDAS, Analog Devices Version
OnBoard: Ein mit auf das Board gelöteter Microcontroller, der den JLink 
enthält. Z.B. bei EnergyMicro oder Freescale/Kinetis.

Vielleicht gibtz noch andere, aber mehr hab ich noch nicht in den 
Fingern gehabt :-)


VG,
/th.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Johann schrieb:
> Außerdem bekomme ich immer einen Errror wenn ich das Blink
> Beispielprogramm draufspielen will.

Was für einen Fehler bekommst du?

In Keil µVision:
Der JLink muss unter "Debug" und "Utilities" der Target Options 
eingestellt sein.
Hier wird unterschieden, weil zwei verschiedene Debugger verwendet 
werden können, z.B. NXP FlashMagic nur zum Flashen.

Weiterhin muss unter den Settings für den JLink bei "Debug" JTAG oder SW 
(je nach Anwendung oder was der µC kann) ausgewählt sein. Soll SWO 
verwendet werden, muss hier SW eingestellt sein!

Unter Trace kann man dann Trace enablen und den ITM Ch.0 auswählen, für 
CMSIS printf (retargeting fputc -> ITM_SendChar() nicht vergessen!).

Unter Flash Download muss der korrekte Flash Algorithmus ausgewhlt 
werden.

Ist alles korrekt eingestellt, sollte der JLink die MCU flashen & 
debuggen.


VG,
/th.

von 900ss (900ss)


Lesenswert?

Random ... schrieb:
> Schwarz: Original JLink, kommerziell nutzbar

Meiner ist auch schwarz, aber ich darf ihn nicht kommerziell nutzen. Er 
war der Vorläufer der Education Version (none commercial).
Also rein die Gehäusefarbe als Kriterium reicht nicht.

von BWLnow (Gast)


Lesenswert?

Johann schrieb:
> Was ist denn TRACE und SDW?
>
> Der Keil ULINK2 kostet ja 500€ und die Pro sogar über 1000€

Bei Ebay habe ich schon preiswertere Versionen gesehen.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:
> Naja, deine Aussage "irgendwas geht doch immer nicht" trifft wohl hier
> gerade genauso zu.  Selektive Wahrnehmung?

Gerade aktuell:
Beitrag "Eclipse: "cannot run program make" + findet GDB-command nicht"

**grins**

von Random .. (thorstendb) Benutzerseite


Lesenswert?

BWLnow schrieb:
> Johann schrieb:
>> Was ist denn TRACE und SDW?
>>
>> Der Keil ULINK2 kostet ja 500€ und die Pro sogar über 1000€
>
> Bei Ebay habe ich schon preiswertere Versionen gesehen.

genau:
Beitrag "Cortex-M Debugger J-Link und U-Link2 von Wayengineering ok?"

von Random .. (thorstendb) Benutzerseite


Lesenswert?

900ss D. schrieb:
> Random ... schrieb:
>> Schwarz: Original JLink, kommerziell nutzbar
>
> Meiner ist auch schwarz, aber ich darf ihn nicht kommerziell nutzen. Er
> war der Vorläufer der Education Version (none commercial).
> Also rein die Gehäusefarbe als Kriterium reicht nicht.

ok. Ich schrieb ja auch, das ich nur die gelistet hab, die ich selber 
hier liegen habe. Irrtümer vorbehalten :-)
Trotzdem ein guter Zug vom Segger. Ich würde mir jedenfalls zum Basteln 
keine China Kopie kaufen, wenn ich das Original für nen Fuffi krieg :-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Random ... schrieb:
> Jörg Wunsch schrieb:
>> Naja, deine Aussage "irgendwas geht doch immer nicht" trifft wohl hier
>> gerade genauso zu.  Selektive Wahrnehmung?
>
> Gerade aktuell:
> Beitrag "Eclipse: "cannot run program make" + findet GDB-command nicht"

Ja, Fehler: ein Plugin war nicht richtig installiert ... kann einem
mit kommerzieller Software natürlich nieee passieren. ;-)

Mir ging's ja auch nur darum, dass bei "opensource irgendwas immer
nicht geht", während im gleichem Atemzug beklagt wird, dass Keil
(und wohl auch IAR) genauso ihren Kuddelmuddel bereiten.  Systeme
dieser Komplexität neigen halt immer mal dazu, irgendwo Spirenzchen
zu machen, egal ob Opensource oder kommerziell.  Wenn ich mir
überlege, wie viele Stunden ich schon vertrödelt habe nur für das
$@!#&e Lizenzgewurschtel von IAR, und was man hätte in der gleichen
Zeit sinnvolles tun können.  Oder eben besagte Segger-Software, da
hatte ich ernsthaft erwartet, dass der Betrieb des SAM-ICE damit
schneller zu haben wäre als mit OpenOCD (das in der Tat erstmal einen
gewissen Einarbeitungsaufwand bezüglich der Konfiguration braucht).
Pustekuchen!  Ich hätte mir die Segger-Software dann auch gleich
klemmen können und die dafür vertrödelte Stunde Zeit zum Studium
der OpenOCD-Doku benutzen können, das wäre sinnvoller investiert
gewesen.  Der Kram tut wenigstens, nachdem er einmal konfiguriert
ist, statt mir an den Kopf zu werfen, dass ich nun (trotz SAM-ICE +
Atmel-MCU) noch extra Geld für eine Lizenz blechen solle.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Vorsicht, meine Meinung:

Hast nicht ganz Unrecht, die Komplexität ist nun mal sehr hoch. Ich kann 
hier nur für µVision und etwas Open Source für ARM und AVR sprechen.

Bis ich bei meinem AVR Einstieg vor etlichen Jahren (AVR Studio 
unterstützte damals nur ASM, WinAVR war das Compilerpaket) alles 
zusammenhatte, was ich an make, compiler, script etc. brauchte, das war 
schon ein Weilchen. Ausserdem hab ich im Wesentlichen an dem Dingen C 
gelernt.

Dann hab ich mal mit Code Sourcery und Ride rumgespielt, auch das lief 
nicht von Anfang an (aber schon besser).

Mit IAR hab ich auch ein wenig gearbeitet, aber zu wenig, als dass ich 
etwas drüber sagen könnte.

Das Keil µVision war - als ich damals meine DA geschrieben habe, 
wirklich ein sehr hilfreiches Überraschungspaket, was tatsächlich 
out-of-the-box funktionierte, sodass ich mich voll auf auf das 
Kennenlernen der ARM Welt am Beispiel von LPC2148 und LMI3S828 (Luminary 
Cortex-M3) konzentrieren konnte - und das allein war als Umstieg von AVR 
schon mehr als genug!

Mittlerweile arbeite ich sehr gerne auf beiden Seiten des Keil µVision 
sowie mit diversen Cortex-M3 MCUs (vorwiegend STM32F107 und LPC1768), 
und möchte beides nicht mehr missen :-)

Vor allem bekommt man bei einem kommerziellen Produkt ein mindestens 
gutes Gesamtpaket aus IDE/Debugger und Middleware, was auch 
zusammenspielt. Bei meinem derzeitigen Bastelprojekt hätte ich überhaupt 
keine Lust, mir die ganzen Open Source Komponenten für ein RTOS, TCP 
Stack, USB Stack, Flash FileSystem etc. erst zusammenstückeln zu müssen. 
Das Zeug "läuft einfach" und vor allem, es läuft zusammen!


VG,
/th.

von Johann (Gast)


Lesenswert?

Danke für die Infos Random

Ich habe bis jetzt nur die Testversion, daher kann ich leider den 
Support nicht fragen :-)

Ich bin mir noch nicht sicher ob es die IAR oder die Keil Version sein 
wird, deshalb wollte ich beide mal ausprobieren indem ich das 
Beispielprojekt durcharbeite.

Nun zu meinem Fehler. (Ich kann es erst heute Abend genau beschreiben, 
da ich die Hardware gerade zu Hause habe)

Ich habe den Debug auf JLink umgestellt. Jedoch erinnerich ich mich wage 
das der Fehler mit dem korrekten Flash Algorithmus zu tun hatte. Was 
muss ich denn da wo einstellen? Gibt es dazu ein Tutorial für die Atmel 
Cortex M3.

Da ich nur die Cortex M3 von Atmel benutzen wollte werde ich dann beim 
blauen Segger JLink bleiben.

Bis jetzt habe ich noch keinen Flash Algo ausgewählt, da ich ja den 
internen Flash vom Atmel Cortex M3 verwenden wollte.

Bis jetzt hatte ich halt nur mit den Atmel 8 Bit µC einige Jahre zu tun. 
Da gibt es den Codevision den muss man nur installieren und dann geht 
alles wie von Zauberhand :-)

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Johann schrieb:
> Danke für die Infos Random
null problemo :-)


> Ich habe bis jetzt nur die Testversion, daher kann ich leider den
> Support nicht fragen :-)
Kannst mich gern fragen, was du wissen musst. Ich schau tagsüber immer 
mal wieder hier rein.


> Ich bin mir noch nicht sicher ob es die IAR oder die Keil Version sein
> wird,
Wenn du Fragen zur Keil IDE oder zur verfügbaren Middleware hast, frag 
einfach. Bei IAR kann hier sicherlich jemand anderes weiterhelfen.

> deshalb wollte ich beide mal ausprobieren indem ich das
> Beispielprojekt durcharbeite.
Da ist der JLink immer die beste Wahl, weil der von diversen IDEs 
unterstützt wird.


> Nun zu meinem Fehler. (Ich kann es erst heute Abend genau beschreiben,
> da ich die Hardware gerade zu Hause habe)
>
> Ich habe den Debug auf JLink umgestellt. Jedoch erinnerich ich mich wage
> das der Fehler mit dem korrekten Flash Algorithmus zu tun hatte. Was
> muss ich denn da wo einstellen? Gibt es dazu ein Tutorial für die Atmel
> Cortex M3.
Schau einfach mal in ein Beispielprojekt:
c:\keil\ARM\Boards\
Die sollten auf SAM-ICE oder ULINK konfiguriert sein. Such deinen Chip 
raus, und schau nach, was für ein Flash Algo da eingestellt wurde.


> Da ich nur die Cortex M3 von Atmel benutzen wollte werde ich dann beim
> blauen Segger JLink bleiben.
>
> Bis jetzt habe ich noch keinen Flash Algo ausgewählt, da ich ja den
> internen Flash vom Atmel Cortex M3 verwenden wollte.
Keil µVision unterstützt das eigene Flashen des JLink derzeit nicht. 
Daher musst du zum Flashen den richtigen Flash Alg. einstellen.

Project -> Options for Target (Oder den kleinen Zauberstab) -> Utilities 
-> JLink auswählen -> Settings


VG,
/th.

von Johann (Gast)


Lesenswert?

Ich werde es heute Abend mal ausprobieren.

von Johann (Gast)


Lesenswert?

Wenn ich das richtig sehe dann wird der Cortex M3 von dem SAM-ICE nicht 
unterstützt. siehe Datensheet Seite 44.

Dort steht das alles unter J-Link Version 8 keinen Cortex M3 
unterstützt.

http://www.farnell.com/datasheets/1509847.pdf

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann schrieb:
> Dort steht das alles unter J-Link Version 8 keinen Cortex M3
> unterstützt.

Gut, meins ist eine V8.0.

Kommt denn Keil mit einem simplen Wiggler klar, oder mit einem
einfachen FT2232-basierten JTAG-Adapter?  Unter OpenOCD habe ich
beides schon alternativ zum SAM-ICE benutzt.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:
> Kommt denn Keil mit einem simplen Wiggler klar, oder mit einem
> einfachen FT2232-basierten JTAG-Adapter?  Unter OpenOCD habe ich
> beides schon alternativ zum SAM-ICE benutzt.

Hi,

"klarkommen" ist nicht das Problem, das Interface ist offen. Die Frage 
ist, ob es einen AGDI Treiber für die Debug-Unit für µVision gibt.
http://www.keil.com/appnotes/docs/apnt_173.asp


VG,
/th.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Johann schrieb:
> Ich werde es heute Abend mal ausprobieren.
Läufts?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Random ... schrieb:

> "klarkommen" ist nicht das Problem, das Interface ist offen. Die Frage
> ist, ob es einen AGDI Treiber für die Debug-Unit für µVision gibt.

Das würde für mich natürlich "klarkommen" implizieren.  Wenn ich dir
sage, dass OpenOCD mit allen drei Varianten klar kommt, dann meine
ich ja auch nicht, dass du prinzipiell die Möglichkeit hast, dir den
Sourcecode dafür zu schreiben ;-), sondern dass selbiger bereits
existiert und funktioniert.

von Johann (Gast)


Lesenswert?

Ne leider läuft es nicht. Ich war gestern Abend krank. Ich habe den 
neuen J-Link bei Farnell bestellt. Dort stand leider nicht welches 
Version es ist. Ich hoffe mal das es die VErsion 8 ist,


Den FTDI 2232 verwende ich sehr oft als USB-High Speed. Den kann man 
auch als JTAG betreiben. Wie bereits oben beschrieben kommt es auf den 
Preis nicht an.

Der neue J-Link müste morgen da sein dann werde ich diesen auch gleich 
ausprobieren


Wie teuer ist denn der Keil Compiler?

von Johann (Gast)


Lesenswert?

So ich habe nun den neuen J-Link Verion 8 bekommen. Damit ging es mit 
dem IAR-Compiler gleich.

Achtung falls jemand Windows 7 verwendet, bitte installiert den Compiler 
direkt unter c:\IAR oder c:\Keil

Bitte nicht unter Program Files(x86) da hat man nur eingeschrenkte 
Rechte unter Windows 7, dadruch enthält man nur Fehler beim compilieren 
und Debuggen.

Ich habe anschließend den IAR-Compiler deinstalliert und anschließend 
unter c:\IAR installiert und schon lief alles sofort

von 123 (Gast)


Lesenswert?

ich hab keineerlei probleme damit IAR unter Program Files (x86) 
auszuführen.

man sollte seine Projekte nur nicht im programm verzeichniss ablegen. 
sondern wo anders. Das verzeichniss ist für programme da, nicht für die 
eigenen daten!

von W.S. (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Kommt denn Keil mit einem simplen Wiggler klar

Erstmal nö.
Keil kommt mit jedem JTAG-Adapter klar, für den es eine Treiber-DLL im 
System hat. Wenn also jemand für nen Wiggler oder ein Xilinx-Kabel#3 
oder einen Altera-Byteblaster (oder nochwas anderes) eine passende DLL 
schreibt, dann kommt Keil auch damit klar.

Guck dich mal bei Nuvoton um. Die haben sich einen eigenen billigen 
Programmieradapter auf Basis ihrer eigenen Chips gebastelt und dafür 
gibt es nen Treiber für Keil.

W.S.

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
Noch kein Account? Hier anmelden.