Forum: Mikrocontroller und Digitale Elektronik Seggert J-Link Vorteile?


von Alex (haidanai)


Lesenswert?

Hallo,
durch einen Besuch vom Distributor wurde J-Link von Segger mit Ozone 
empfohlen. Jetzt stellt sich mir die Frage, welche praktischen 
Vorteile
hat dieser Debugger gegenüber dem Atmel ICE3?
Als Prozessoren kommen SAMD21, SAME53 und zukünftig evtl. PIC32 zum 
Einsatz.
- Kann J-Link auch Trace (oder eingeschränkt)?
- Kann J-Link Data Breakpoints, wenn der Prozessor das selbst nicht 
unterstützt?
- Lohnt sich J-Link Pro / Ultra+ ?
- Was ist euch daran negativ aufgefallen?
Wie sieht es mit der Unterstützung bei Atmel Studio 7 / MPLAB X aus?
Danke für praktische Erfahrungen.

von Motopick (motopick)


Lesenswert?

> Atmel ICE3

Atmels Liste der "Verfehlungen" ist zu lang, um zumindest bei mir
ernsthaft als Alternative zu erscheinen:
- Treiberbau mit Demoversionen von DDKs/SDKs
- Spannungsregler die schon beim scharfen hinsehen abrauchen
- unzuverlaessige Winzsteckverbinder

Und Segger scheint die J-Links, und deren Updatefaehigkeit, auch
als Gelddruckmaschine anzusehn.
Ich habe hier 2 J-Link V8 und einige in Boards Embedded J-Links.

Bei einer Neuanschaffung wuerde ich mich vorher zumindest genau
umsehen ob es wieder etwas von Segger werden sollte.

Ozone ist m.W. "nur" ein Debugger. Mir reichen bei "normalen"
Controllern eigentlich immer die Moeglichkeiten der Debugger
der jeweiligen IDE, also IAR C-Spy oder der von Keils MDK.
Bei Signalprozessoren ist aber ein zusaetzlicher Trace, bzw.
die graphische Darstellung, schon ein nettes Feature.

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


Lesenswert?

Alex schrieb:

> - Kann J-Link auch Trace (oder eingeschränkt)?

"J-Link" ist ein ziemlich weit gefasster Begriff.

Welches der J-Links welche Features unterstützt, siehst du hier:

https://www.segger.com/products/debug-probes/j-link/models/model-overview/

> - Kann J-Link Data Breakpoints, wenn der Prozessor das selbst nicht
> unterstützt?

Das hat mit J-Link nicht so viel zu tun.

GDB konnte das schon immer, aber das wird saulangsam. Die Strategie ist 
dann nämlich, dass die Software im Single-Step abgearbeitet wird und 
nach jedem Schritt geschaut wird, ob sich das entsprechende Datum 
geändert hat. Da kannst du mehr als einen Kaffee trinken in der Zeit …

> - Lohnt sich J-Link Pro / Ultra+ ?

Siehe verlinkte Matrix.

> - Was ist euch daran negativ aufgefallen?

Das Gefeilsche um den Preis. Der vom Atmel-ICE ist allerdings inzwischen 
auch schon mehr als doppelt so hoch wie zur Einführung durch Atmel.

> Wie sieht es mit der Unterstützung bei Atmel Studio 7 / MPLAB X aus?

Keine Ahnung, nehme ich nicht.

Motopick schrieb:
> unzuverlaessige Winzsteckverbinder

Dafür musst du dich bei ARM bedanken. Den Mikro-10-Pin-Verbinder für 
Cortex-M haben die festgelegt. Atmel hat sich nur dran gehalten.

> Spannungsregler die schon beim scharfen hinsehen abrauchen

Meinst du damit den Dragon? Den Regler hätten sie auch gleich ganz 
weglassen können, aber sie wären dann aber außerhalb der Specs gewesen 
(von USB bzw. dem ATmega2560). Ansonsten ist es natürlich nicht trivial, 
einen Eingangspannungsbereich von 4,3 bis 5,3 V auf 4,5 V (oder mehr) 
sicher zu regeln, ohne eine aufwändige Wandlertopologie wie SEPIC zu 
nehmen (der Dragon sollte ja vor allem billig sein).

> Ozone ist m.W. "nur" ein Debugger.

Allerdings nicht der schlechteste – schreibe ich als alter GDB-Fan. 
Finde ich besser als all diesen Studio-Krams, und das nicht nur, weil es 
auch eine Linuxversion davon gibt.

von Alex (haidanai)


Lesenswert?

>> - Lohnt sich J-Link Pro / Ultra+ ? Siehe verlinkte Matrix.
Bei den angegebenen Sachen weiss ich nicht, ob mir die in der Praxis was 
bringen. Für was soll "High Speed Sampling Bandwidth" da sein?
Wann / wofür kommt "Download speed into RAM" zum Einsatz?
Und nochmal die Frage:
Welche praktischen Vorteile hat J-Link gegenüber ICE3???

PS:
Ich arbeite beruflich damit und mache anspruchsvolle Echtzeit embedded 
Projekte.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Alex schrieb:

> Als Prozessoren kommen SAMD21, SAME53 und zukünftig evtl. PIC32 zum
> Einsatz.

Atmel ICE kann keine PICs. PICKIT4 schon. PICKIT4 unterstützt so 
ziemlich alles, was Microchip aktuell anbietet (PICs, AVR, ARM).

> - Kann J-Link auch Trace (oder eingeschränkt)?
ETB ja. Für ETM brauchst Du einen J-Trace.

> Wie sieht es mit der Unterstützung bei Atmel Studio 7 / MPLAB X aus?
MPLABX unterstützt J-Link für PIC32. Bei ATSAM weiß ich es jetzt nicht 
genau. Andere PICs kann der JLINK nicht, dafür brauchst Du ein PICKIT4.

Atmel/Microchip Studio verwende ich nicht.

fchk

von Frank K. (fchk)


Lesenswert?

Alex schrieb:

> Welche praktischen Vorteile hat J-Link gegenüber ICE3???

Dass nicht nur Atmel unterstützt wird.

fchk

von Vanye R. (vanye_rijan)


Lesenswert?

> Welche praktischen Vorteile hat J-Link gegenüber ICE3???

Segger ist sehr zuverlaessig und vor allem Hersteller uebergreifend.
Wenn du kein Bastler bist sondern professionell so wirst du das
schaetzen weil du mit den unterschiedlichsten Familien von verschiedenen
Herstellern arbeitest.
Du kannst mit zwei oder gar noch mehr Debuggern gleichzeitig an einem
Rechner arbeiten. Sehr sinnvoll wenn man z.B irgendwas mit Kommunikation
macht und beiden Teilnehmern unter die Haube schauen will.
Es gibt Versionen die du ueber Ethernet betreiben kannst
was nett ist wenn du auf eine Kiste willst wo der Techniker gerade
in Australien ist oder du mal schnell kucken moechtest was in der
Fertigung schief laeuft.
Sie haben eine ziemlich gute Dokumentation die dir alles erlaubt
wenn man sie nur liesst.

Die Firma ist halt professionell in dem Sinne das du sie dafuer
bezahlst das sie deine Probleme mit dem Debugger loesen und das
klappt eigentlich ganz gut. Die Billigteile der Hersteller leiden
oftmals unter einem gewissen Mangel an Liebe. Dafuer kosten sie
fast nichts.

Aber natuerlich muss es nicht unbedingt Segger sein. Du kannst
auch bei Lauterbach kaufen. .-)

Vanye

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


Lesenswert?

Frank K. schrieb:
> Alex schrieb:
>
>> Welche praktischen Vorteile hat J-Link gegenüber ICE3???
>
> Dass nicht nur Atmel unterstützt wird.

Das ist allerdings eine reine Softwarelimitierung auf der PC-Seite. Der 
Hardware ist es egal, wer den Cortex-M hergestellt hat, den du da dran 
hängst. Ich habe eine Zeitlang für ein Kundenprojekt einen STM32 damit 
debuggt, weil das Atmel-ICE in meiner Umgebung weniger zickig war als 
der ST-Link. (An Details und genaue Ursache kann ich mich nicht mehr 
erinnern, zu lange her. Funktionierte jedenfalls klaglos.)

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


Lesenswert?

Vanye R. schrieb:
> Du kannst
> auch bei Lauterbach kaufen. .-)

Dagegen sieht allerdings Ozone fürchterlich modern aus. ;-) Das 
Lauterbach-GUI mutet irgendwie wie voriges Jahrhundert an.

von Harald K. (kirnbichler)


Lesenswert?

Frank K. schrieb:
> Atmel ICE kann keine PICs. PICKIT4 schon. PICKIT4 unterstützt so
> ziemlich alles, was Microchip aktuell anbietet (PICs, AVR, ARM).

Um noch eine Alternative in den Raum zu werfen: MPLAB Snap.

https://www.microchip.com/en-us/development-tool/PG164100

Der unterstützt AVRs, PICs und SAM-Arme. Und er hat nicht den futzeligen 
Steckverbinder im 0.05"-Raster, sondern eine bastel- und sogar 
Steckbrettfreundliche achtpolige Buchsenleiste im 0.1"-Raster. Der 
USB-Anschluss ist leider eine Micro-USB-Buchse.

Ob aber irgendeine Software außer Microchip Studio und MPLAB X damit 
etwas anfangen kann, entzieht sich meiner Kenntnis.

von Vanye R. (vanye_rijan)


Lesenswert?

> Das ist allerdings eine reine Softwarelimitierung auf der PC-Seite.
> Der Hardware ist es egal, wer den Cortex-M hergestellt hat, den
> du da dran hängst.

Ganz so einfach ist das nicht. Es gibt auch Controller wo die einzelnen
Cores hinter einem speziellen Multiplexer versteckt sind, TI hat das
zum Beispiel. Da muss der Debugger den auch bedienen koennen und
beim RT2040 ist das ja auch so aehnlich.

Ausserdem weiss der Debugger dann ja nicht wo das Ram liegt und wie 
gross
es ist. Das ist manchmal auch ganz nett. Ich glaube die virtuellen
seriellen Schnittstellen brauchen sowas.

Vanye

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


Lesenswert?

Vanye R. schrieb:

> Ganz so einfach ist das nicht. Es gibt auch Controller wo die einzelnen
> Cores hinter einem speziellen Multiplexer versteckt sind

OK, Multicores sind da nochmal eine andere Nummer.

Ich kenne den von dir genannten nicht, würde mich aber jetzt nicht 
wundern, wenn das einfach nur ein IO-Register ist, welches vom Debugger 
aus passend eingestellt werden muss (und dann für alle Cores die gleiche 
Adresse hat). Dann wäre es auch nur wieder an der Ansteuersoftware, das 
zu tun.

> Ausserdem weiss der Debugger dann ja nicht wo das Ram liegt und wie
> gross
> es ist.

Wer sollte das sonst wissen, wenn nicht der Debugger?

Die Hardware (+ Firmware) interessiert das nicht. Die bekommt erzählt, 
wohin sie greifen soll.

von Andreas M. (amesser)


Lesenswert?

Jörg W. schrieb:
> Ansonsten ist es natürlich nicht trivial,
> einen Eingangspannungsbereich von 4,3 bis 5,3 V auf 4,5 V (oder mehr)
> sicher zu regeln, ohne eine aufwändige Wandlertopologie wie SEPIC zu
> nehmen (der Dragon sollte ja vor allem billig sein).

Auf dem RP2040 Pico ist ein Buck-Boost der aus allem zwischen 3 V und 
5.5V konstante 3.3V macht. Der ganze RP2040 kostet nichtmal 5 Euro...

Jörg W. schrieb:
> Dagegen sieht allerdings Ozone fürchterlich modern aus. ;-) Das
> Lauterbach-GUI mutet irgendwie wie voriges Jahrhundert an.

Dafür funktioniert sie und ist performant. Zudem läuft Trace32 auf so 
ziemlich jedem Betriebssystem und sieht immer gleich aus. Die Oberfläche 
kann man auch an den GDB anbinden, benutzen wir für Remote Debugging 
über Netzwerk bei Baugruppen ohne JTAG/SWD. Dazu noch die mächtige 
Skriptsprache vom T32... Wir haben hier auch Multi-Core System da kann 
man dann parallel alle Cores über einen Debugger analysieren. Dann der 
Support, meiner ist jetzt gute 12 Jahre alt, mit dem nächsten SW Update 
debugge ich damit dann auch RiscV. Möchte ich nicht mehr missen. Für 
Privat allerdings wohl etwas teuer, da nehme ich dann gdb + openocd.

Ich hatte mal nen UDE Debugger von PLS zum Testen, das Teil war das 
absolute Grauen, haufweise unkontrollierbare Magie im Hintergrund, beim 
Starten des Debuggvorgangs hat der direkt mal nen Reset auf dem Target 
gemacht. Sowas geht gar nicht.

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


Lesenswert?

Andreas M. schrieb:

> Auf dem RP2040 Pico ist ein Buck-Boost der aus allem zwischen 3 V und
> 5.5V konstante 3.3V macht. Der ganze RP2040 kostet nichtmal 5 Euro...

Ob der vor 15 Jahren auch so wenig gekostet hätte?

Darüber reden wir ja hier bei Dragon.

Gemessen am gewünschten Zweck / Zielpublikum des Dragon wären sie 
wirklich besser beraten gewesen, sich um den Grenzfall (es liegen nur 
die garantierten 4,3 V an der USB-Buchse an, aber der Controller braucht 
formal mindestens 4,5 V, um mit 16 MHz getaktet werden zu dürfen) keine 
Rübe gemacht hätten und keinen Spannungsregler erst vorgesehen hätten. 
Das war ja letztlich auch der übliche "Reparatur"-Ansatz, wenn der 
Regler geschossen war: auslöten und überbrücken.

> Jörg W. schrieb:
>> Dagegen sieht allerdings Ozone fürchterlich modern aus. ;-) Das
>> Lauterbach-GUI mutet irgendwie wie voriges Jahrhundert an.
>
> Dafür funktioniert sie und ist performant.

Mag sein, aber hässlich wie Sau ist das Ding trotzdem. Eigentlich 
unglaublich, dass man in der Lage ist, mit Qt sowas hässliches zu bauen. 
:-)

(Privat wäre mir deren Kram allerdings auch viel zu teuer. Ein J-Link 
Edu kann man sich privat dagegen schon noch leisten.)

Um zurück zur Eingangsfrage zu kommen: funktionieren tut Ozone 
durchaus auch.

: Bearbeitet durch Moderator
von Dieter S. (ds1)


Lesenswert?

Jörg W. schrieb:
>
> Dagegen sieht allerdings Ozone fürchterlich modern aus. ;-) Das
> Lauterbach-GUI mutet irgendwie wie voriges Jahrhundert an.

Dafür kann der Lauterbach TRACE32 deutlich mehr als nur ARM und RISC-V.

von Klaus H. (klummel69)


Lesenswert?

Was ich bei Segger J-Link inzwischen schätze sind die Software Tools.
https://wiki.segger.com/UM08001_J-Link_/_J-Trace_User_Guide#J-Link_Software_and_Documentation_Pack

Die funktionieren recht gut und haben bei mir weniger Probleme gemacht 
als die Tools anderer Hersteller. So Dinge wie schnelle Debug Ausgabe 
über den RTT Viewer möchte ich nicht mehr missen.

von Harald K. (kirnbichler)


Lesenswert?

Jörg W. schrieb:
> Mag sein, aber hässlich wie Sau ist das Ding trotzdem. Eigentlich
> unglaublich, dass man in der Lage ist, mit Qt sowas hässliches zu bauen.

Mit Netbeans gelingt das auch; die MPLAB X IDE ist damit ... "erstellt".

Ist Ozone noch schlimmer?

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


Lesenswert?

Dieter S. schrieb:
> Jörg W. schrieb:
>>
>> Dagegen sieht allerdings Ozone fürchterlich modern aus. ;-) Das
>> Lauterbach-GUI mutet irgendwie wie voriges Jahrhundert an.
>
> Dafür kann der Lauterbach TRACE32 deutlich mehr als nur ARM und RISC-V.

Wobei das eine mit dem anderen nichts zu tun hat. Lauterbach ist ja auch 
einiges teurer als Segger, dafür kann man schon auch paar Features mehr 
erwarten.

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


Lesenswert?

Harald K. schrieb:
> Ist Ozone noch schlimmer?

Ich finde es etwas angenehmer. Ein kleines bissel überladen, aber man 
kann wenigstens die einzelnen Fensterchen auch rauslösen und bspw. auf 
den zweiten Bildschirm schieben.

von Alex (haidanai)


Lesenswert?

Also euch allen schon mal ein Dankeschön für eure Einschätzungen - auch 
wenn es zeitweise etwas vom Thema abgedriftet ist.
Die Infos über Alternativen, die ich gar nicht "auf dem Schirm" hatte,
sind interessant.
Was mich int der täglichen Arbeit oft plagt, ist dass wenn man die 
höchste Optimierungsstufe aktiviert hat, das Programm fast nicht mehr 
debugbar ist.
(Breakpoints halten nicht mehr, lokale Variable wegoptimiert, und 
Single-Step hüpft im Programmcode wild umher).
Aber das ist halt der Compiler und die Debuginfo die er erzeugt.
Oder kann das IAR oder der J-Link auf wundersame Weise besser?

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


Lesenswert?

Alex schrieb:
> Aber das ist halt der Compiler und die Debuginfo die er erzeugt.

Nicht die Debuginfo, sondern der Code, der so erzeugt wird. Die 
Debuginfo kann natürlich nur das abbilden, was auch als Code da ist.

Die Kunst des Embedded-Debuggers (also der Person ;-) ist es dann, sich 
die nötigen Hilfsmittel zu schaffen, das trotzdem noch zu debuggen, ohne 
dabei die Optimierung ausschalten zu müssen und dadurch etwas ganz 
anderes zu debuggen: volatile-Variablen, die man sich später im Debugger 
ansehen kann; ein simpler NOP kann stets einen Breakpoint erhalten; ein 
paar GPIOs zum Herumwackeln, damit man den Programmfluss auf dem 
Logikanalysator nachvollziehen kann.

von Klaus H. (klummel69)


Lesenswert?

Jörg W. schrieb:
> Die Kunst des Embedded-Debuggers (also der Person ;-) ist es dann, sich
> die nötigen Hilfsmittel zu schaffen

Volle Zustimmung. Ich ergänze um schnelle Debug/Logging Ausgaben ins RAM 
oder über performante Schnittstellen.

Ich würde trotz allem die volle Optimierung auf Performance nur nutzen, 
wenn sie wirklich notwendig ist. Wenn beim Start der Entwicklung bereits 
klar ist, dass die Plattform an die Grenzen von Speicher/Performance 
kommt, macht man was falsch.

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


Lesenswert?

Klaus H. schrieb:
> Ich würde trotz allem die volle Optimierung auf Performance nur nutzen,
> wenn sie wirklich notwendig ist.

Darin unterscheiden wir uns. ;-)

Ich benutze sie eigentlich immer. Weniger Optimierung versteckt 
potenzielle Fehler – bis hin zu -O0, bei dem der Compiler keine 
Codeflussanalyse macht und alle dahingehenden Warnungen (nicht 
initialisierte Variablen, nicht erreichbarer Code etc.) nicht mehr 
ausgeben kann.

von Klaus H. (klummel69)


Lesenswert?

Jörg W. schrieb:
> Darin unterscheiden wir uns. ;-)

OK, ich oute mich, Default ist bei mir auch "-O1".
Dadurch fällt viel toter Code weg, ala

const int i=0;
if (i>0) {...}

Trotzdem bleibt der Code noch einigermaßen debugbar.

: Bearbeitet durch User
von Andreas M. (amesser)


Lesenswert?

Unsere Firmwaren sind auf den meisten Targets ohne "-Os" oder "-O2" gar 
nicht mehr ausführbar. Wir müssen unsere Platformen lange unterstützen 
was in unserem Umfeld oft auch neue Funktionen/Features mit einschließt. 
Da ist also der RAM, der vor 10 Jahren da war die Grenze an der wir uns 
orientieren müssen.

Alex schrieb:
> Aber das ist halt der Compiler und die Debuginfo die er erzeugt.
> Oder kann das IAR oder der J-Link auf wundersame Weise besser?

Nein, das ist im Lauterbach auch nicht anders. Einzelschritt ("Steppen") 
ist dann einfach nicht mehr möglich bzw man muss wissen was man tut. Ich 
gehe dann gerne dazu über in der Assembler-Ansicht zu steppen. (Bei 
Lauterbach gibts da dann so ne gemischte Ansicht C/Assembler, weis nicht 
wie das bei den anderen ist). Einzelschritt kann alleine schon wegen 
Interrupten schwierig werden.

Das braucht man in vielen Fällen aber auch gar nicht. Inzwischen finde 
ich die meisten Fehler schneller durch Code-Review der entsprechenden 
Stellen im Quellcode auf Basis des beobachteten Fehlverhaltens 
(Netzwerk, externe Schnittstellen). Manchmal muss kurz mit dem Debugger 
ein paar Zustandsvariablen prüfen. Für härtere Fälle haben wir Debug/Log 
Messages die wir über die Netzwerkschnittstelle ausgeben. Wenn man da 
UDP Frames mit dem syslog Port als Quelle oder Destination nimmt, dann 
zeigt einem das der Wireshark direkt in Textform an.

In wirklich üblen Fällen ist dann mal ein Trace (via ETM oder SWD) 
notwendig, das kommt aber inzwischen sehr selten vor. Das nutzen wir 
eher nochmal zum Zeitmessen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas M. schrieb:
> Dafür funktioniert sie und ist performant.

Exakt.

> Zudem läuft Trace32 auf so ziemlich jedem Betriebssystem

Das stimmt leider nicht mehr. WIMRE hat Lauterbach im Release 2022.02 
völlig überraschend die Unterstützung für VMS und SunOS als 
Host-Plattformen entfernt. Und dementsprechend gibt es auch keine 
Unterstützung mehr für PODBUS-Controller als Qbus-Einsteckkarte.

> und sieht immer gleich aus.

Ja, und sie ist dabei nicht im geringsten überladen, im Gegensatz zu so 
mancher anderer Software, bei der man sich irgendwann gar nicht mehr 
zurechtfindet.

> Die Oberfläche
> kann man auch an den GDB anbinden, benutzen wir für Remote Debugging
> über Netzwerk bei Baugruppen ohne JTAG/SWD.

Es geht in beiden Richtungen, d.h. T32 am GDB, aber auch ein T32 als 
gdbserver. Alternativ kann man den T32 Monitor auf dem Target 
laufenlassen, mit dem sich das GUI verbindet.

> Dazu noch die mächtige Skriptsprache vom T32...

Die Skriptsprache PRACTICE ist im Vergleich zu modernen Sprachen wie 
Python schon etwas aus der Zeit gefallen und bedürftige mal dringend 
einer Runderneuerung. Aber dafür ist sie weitgehend kompatibel 
geblieben, außer beim Erzeugen eigener Menüeinträge. Aber das ist ein 
Luxusproblem.

> Wir haben hier auch Multi-Core System da kann
> man dann parallel alle Cores über einen Debugger analysieren.

Genau, und das können sogar Core komplett unterschiedlicher Architektur 
sein, die über eine JTAG-Chain zusammengeknüppert wurden. Oder auch 
mehrere Softcores oder Hard- und Softcore wie z.B. Cortex-A9 und 
Microblaze auf einem Zynq.

> Dann der
> Support, meiner ist jetzt gute 12 Jahre alt, mit dem nächsten SW Update
> debugge ich damit dann auch RiscV. Möchte ich nicht mehr missen.

Genau. Meiner ist von 2004 und wird immer noch voll unterstützt. 
Irgendwann (mit ARM Cortex-M) brauchte ich ein neues Anschlusskabel, in 
dem der Lizenzschlüssel steckt, aber das ist auch schon 14 Jahre her.

> Für
> Privat allerdings wohl etwas teuer, da nehme ich dann gdb + openocd.

Nicht nur für privat. Auch in vielen Unternehmen gibt es da gewisse 
Vorbehalte, insbesondere von Leuten, die damit nicht arbeiten dürfen.

> Ich hatte mal nen UDE Debugger von PLS zum Testen, das Teil war das
> absolute Grauen, haufweise unkontrollierbare Magie im Hintergrund, beim
> Starten des Debuggvorgangs hat der direkt mal nen Reset auf dem Target
> gemacht. Sowas geht gar nicht.

Oh, das ist interessant. Dann kann ich ja ganz froh sein, vor etlichen 
Jahren keinen UDE gekauft zu haben. Damals waren die Leute von PLS doch 
sehr bemüht, mir das Teil zu verkaufen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas M. schrieb:
> In wirklich üblen Fällen ist dann mal ein Trace (via ETM oder SWD)
> notwendig, das kommt aber inzwischen sehr selten vor. Das nutzen wir
> eher nochmal zum Zeitmessen.

Bei dem allerübelsten Fall, den ich jemals untersucht habe, reichte auch 
das nicht aus. Stattdessen musste ich mich rückwärts durch das 
Disassemblat eines Logikanalysators (HP16700) durcharbeiten und jeden 
Registerinhalt prüfen. Nach rund zwei Wochen konzentrierter Arbeit 
konnte ich dann herausfinden, dass ein Registerinhalt, der mit einer 
STM-Anweisung beim Funktionsaufruf auf den Stack geschrieben wurde, beim 
Zurücklesen mittels LDM nicht übereinstimmte, sondern ein Bit gekippt 
war. Das lag daran, dass auf einigen(!) Leiterplatten einige falsche 
SRAMs bestückt waren, d.h. die 5V-Ausführung statt der 3,3V-Ausführung. 
Erschwerend kam hinzu, dass die Komparatorschwellen von LA, CPU und SRAM 
natürlich nicht identisch waren.

von Andreas M. (amesser)


Lesenswert?

Andreas S. schrieb:
> Oh, das ist interessant. Dann kann ich ja ganz froh sein, vor etlichen
> Jahren keinen UDE gekauft zu haben. Damals waren die Leute von PLS doch
> sehr bemüht, mir das Teil zu verkaufen.

Die hatten sich mir auf der Embedded World aufgedrängt, wollten uns 
unbedingt ein Demogerät zu Verfügung stellen. Das lief von Anfang an 
unrund war mir zu umständlich zu bedienen. Wir habens dann 
zurückgegeben. Allerdings muss man sich in T32 auch erst einarbeiten 
damit man mit umgehen kann. Kann auch gut sein dass ich mich schon zu 
sehr an T32 gewöhnt habe und ich inzwischen zu alt zum Umstellen bin.

Andreas S. schrieb:
> Das lag daran, dass auf einigen(!) Leiterplatten einige falsche
> SRAMs bestückt waren, d.h. die 5V-Ausführung statt der 3,3V-Ausführung.
> Erschwerend kam hinzu, dass die Komparatorschwellen von LA, CPU und SRAM
> natürlich nicht identisch waren.

Das ist natürlich fies. Das wird jetzt wirklich OT: Wir hatten ebenfalls 
mal ein Problem mit einer ungünstig gerouteten SDRAM Datenleitung. Die 
Firmware ist sporadisch abgestürzt wenn über PCI ein DMA gemacht wurde. 
Da gabs dann eine Einkopplung vom PCI Bus in die Datenleitung. 
Witzigerweise nur bei einem ganz bestimmten DMA Muster, sonst nicht. Und 
auch nur in bestimmten PCs.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas M. schrieb:
> Das ist natürlich fies. Das wird jetzt wirklich OT: Wir hatten ebenfalls
> mal ein Problem mit einer ungünstig gerouteten SDRAM Datenleitung. Die
> Firmware ist sporadisch abgestürzt wenn über PCI ein DMA gemacht wurde.
> Da gabs dann eine Einkopplung vom PCI Bus in die Datenleitung.
> Witzigerweise nur bei einem ganz bestimmten DMA Muster, sonst nicht. Und
> auch nur in bestimmten PCs.

Solch ein Kundenprojekt hatte ich auch schon einmal. Ich wurde damit 
beauftragt, einen angeblichen Fehler im Netzwerkstack von Linux zu 
untersuchen, weil es bei manchen Socket-Operationen einen Kernel Dump 
gab. Ich erkannte jedoch recht zügig, dass in den Speicherauszügen immer 
zwei Bits (Bit 2 und/oder Bit 18) gesetzt waren, und wusste auch, dass 
das DDR-RAM mit 16 Bit angebunden war. Ich ließ mit daher von dem 
zuständigen Hardwareentwickler das Leiterplattenlayout zeigen. Und siehe 
da, das RAM war eigentlich ordentlich angebunden, aber eine Datenleitung 
passte nicht. Statt mit einer direkten, kurzen Anbindung hing sie über 
eine längeren Umweg am Prozessor.

Anfangs bestritt der Hardwareentwickler diesen Zusammenhang und meinte, 
er hätte noch nie derartige Probleme erlebt. Das stimmte auch, denn 
bisher hatte er nur irgendwelche Microcontroller der 8 MHz-Klasse mit 
internen Speichern verbaut und keinen 400 MHz-Prozessor mit fettem 
externen DRAM. Der Entwicklungsleiter (sehr erfahrener ASIC-Entwickler) 
ordnete dann aber eine entsprechende Layoutkorrektur an. Und siehe da, 
es gab keine komischen Abstürze und Kernel Dumps mehr.

Ich räume durchaus ein, dass das Layout schon ein wirkliches Kunstwerk 
war, da die eine Seite der Leiterplatte als Kontaktflächen für eine 
Folientastatur ausgelegt war und somit als Verdrahtungslage fast 
wegfiel. Und es durften natürlich auch keine Durchkontaktierungen in den 
"Kämmen" der Kontaktflächen auftauchen. Aus Kostengründen durften auch 
nur insgesamt vier Lagen und erst recht keine Blind Vias eingesetzt 
werden. Es konnte nicht einmal eine durchgängige Masselage eingesetzt 
werden, da auch die Lage für Verdrahtungen verwendet werden musste. 
EMV-mäßig war das ein ganz heißes Eisen, und ich begleitete den Kunden 
auch ins EMV-Labor, wo über jedes Zehntel-dB verhandelt wurde. Ich 
konfigurierte dann vor Ort an den Takteinstellungen des Mikroprozessors 
und Ethernet-Controllers so lange herum, bis der Test gerade eben 
bestanden war und der Prüfingenieur das ganze absegnete. Mit anderen 
Anschlussleitungen hätte das schon wieder ganz anders ausgesehen, da es 
teilweise wirklich nur darum ging, die Resonanzen einer bestimmten 
Leitung zu minimieren.

von Martin M. (mcmaier)


Lesenswert?

Andreas S. schrieb:
> Aus Kostengründen durften auch nur insgesamt vier Lagen und erst recht keine > 
Blind Vias eingesetzt werden.

Ist doch überall das gleiche: Wir müssen sparen, koste es was es 
wolle... ;-)

Alex schrieb:
> Jetzt stellt sich mir die Frage, welche praktischen
> Vorteile hat dieser Debugger gegenüber dem Atmel ICE3?

In der alten Firma hatte ich früher den Atmel SAM-ICE, der war im 
Prinzip ein gebrandeter J-Link und auch von Segger entwickelt. Weiß 
nicht, ob das bei dem ICE3 auch noch so ist. Der Vorteil eines J-Link 
ist jedenfalls, dass der mit Controllern aller gängigen Hersteller 
klarkommt. Was ich auch sehr nützlich finde ist die Flash-GUI von Segger 
(J-Flash). Im J-Link ist je nach Modell die Lizenz enthalten, für den 
SAM-ICE mussten wir die damals extra kaufen.

Außerdem sind die J-Link bei den gängigen IDEs meist schon 
vorkonfiguriert und funktionieren auf Anhieb. Laut deren Aussage auch 
bei Atmel Studio:
https://www.segger.com/products/debug-probes/j-link/technology/ides/atmel-studio/

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Martin M. schrieb:
> Andreas S. schrieb:
>> Aus Kostengründen durften auch nur insgesamt vier Lagen und erst recht keine >
> Blind Vias eingesetzt werden.
>
> Ist doch überall das gleiche: Wir müssen sparen, koste es was es
> wolle... ;-)

Da von dem besagten Gerät > 100 k Stück vom Band fallen sollten, lohnte 
es sich durchaus, auch auf Einsparpotentiale im oberen Cent- oder gar 
Eurobereich zu achten.

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


Lesenswert?

Martin M. schrieb:
> Weiß nicht, ob das bei dem ICE3 auch noch so ist.

Nein, das AtmelICE ist eine Weiterentwicklung des JTAGICE3, völlige 
Atmel-Entwicklung.

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.