Hallo zusammen, ich bin auf dem Weg in die ARM-Welt und versuche gerade einen Überblick zu bekommen was an Dev-Tools so alles gut und böse ist. Jetzt habe ich gehört das alle ARM7 keine Möglichkeit zur Echtzeit Emulation, d.h. Variablen in Echtzeit verfolgen und Vernküpfte Breakpoints haben weil ihnen das Interface fehlt. Hierfür kommen nur die ARM9 in Frage. Ist das richtig so ? Man kann aber ein Trace über einen JTAG-Trace aufzeichen ? Danke für eure Tipps Grüße Jörg
Naja, nicht so ganz, kommt stark auf die jeweiligen Typen an. Angenommen die Chips haben ein ETM interface (kostet 10 Pins falls es auf dem Chip ist), dann kann in Echtzeit der Code verfolgt werden. Je nach Bandbreite des ETM, siehe Datenblatt, ist eine Verfolgung einer oder mehrerer Variablen auch moeglich. Bei einem 4-bit breiten ETM ist es ratsam, sich auf eine Variable zu beschraenken, bei 8-bit breitem ETM oder der Kombination ETM + ETB lassen aich auch mehrere Variablen in Echtzeit verfolgen. Mehrfache Breakpoints im Flash ist so ne Sache. Die ARM7 Architektur bietet nur 2 sogenannte Hardware Breakpoints an aber beliebig viele Software Breakpoints. Wenn also im SRAM Debugging stattfindet, gibt es Breakpoints nach Herzenslust, im Flash ist das sehr limitiert. Da hat allerdings die Firma Segger mit dem J-Link eine tolle Erweiterung gemacht, die beliebig viele Flashbreakpoints zulaesst. Trace ueber JTAG ist nicht moeglich, nur Breakpoints, d.h. man weiss nachher wo man ist, z.B. in der Fehlerroutine, aber wie man dorthin gekommen ist bleibt ein Raetsel bei Chips die nur JTAG haben. Tip: Im ARM7 gibt es meines Wissens nach nur NXP mit ETM, im ARM 9 Bereich haben die anderen Hersteller das auch als notwendig angesehen. Im ARM7 Bereich gibt es nur das 4-bit breite ETM, im ARM9 auch das 8-bit breite. Flash Breakpoints von Segger gibts fuer die NXP LPC2000 Chips einfach zum runterladen, fuer andere muss man da schon etwas in die Tasche greifen. ETM steht fuer "Embedded Trace Macrocell", ETB steht fuer "Embedded Trace Buffer" und fuer beides gibt es gute informationen auf der ARM Webseite. Trace Optionen fangen so ca. bei 1K Euro an, z.B. J-Trace Segger, aber nach oben sind die Grenzen weit gesteckt. Siehe auch Hitex, Lauterbach, iSystems, Signum mit dem JTAGjet-Trace ... usw. Sehr breites Angebot in Preis und Leistung. Robert
Hi Robert Danke für deine Antwort. Ich bin heute nach einem ganzen Tag telefonieren ein Stück weiter gekommen. Das Segger J-link mit RDI Software wird es wohl werden , weil ich von anderen Systemen mit Emulations-Prozessor unlimited Breakpoints gewohnt bin. ETM ist verstanden , aber man kann ja Variablen mit einer begrenzten zeitlichen Auflösung auch mit DCC verfolgen. Hier wird ein anderes internes Modul (DCC) und eine Monitor_Software zum DMA verwendet ? Welchen Zusammenhang von IDE, JTAG und DCC es gibt ist mir derzeit aber noch schleierhaft. Wird den der DCC Zugriff in das JTAG Protokoll gemappt ? Ich hab jetzt jedenfalls ein Olinex mit LPC2148 bestellt. Jetzt fehlt nur noch eine IDE. Ich werde hier im Forum nochmal die anderen 100 Threads zum Thema studieren ,welche IDE es den sein soll. Dann kann ich nur hoffen das der Start nicht allzu holperig wird... Grüße Jörg
Hallo Joerg, ich mag die Funktionen des J-Link auch! Welche IDE; Am besten werden die LPC2000 von Keil, IAR und Rowley unterstuetzt. Natuerlich ist Yagarto auch eine Moeglichkeit. Segger arbeitet mit all den IDEs, am meisten getestet mit IAR weil es da Kits gibt. Evtl. ein Starter Kit von IAR mit J-Link bei www.lpctools.com bestellen. Kostet zwar etwas mehr Fracht, die jungs sitzen naemlich in den USA aber da gibt es Board + J-Link zum Preis von ansonsten Board allein. Weiss nicht onb es solche Kits in Europa billger gibt. Solche packages gibts auch von Keil, allerdings unterstuetzt das U-Link nicht die unlimited Flash Breakpoints, ansonsten aber ebenfalls sehr zu empfehlen. Fuer professionelle Anwender, der auch ab und zu Untertuetzung benoetigt, wuerde ich ein Tool kaufen, als Hobbyanwender wahrscheinlich runterladen. Gruss, Robert
Noch eine kleine Ergänzung zum Thema DCC: DCC (Direct communication channel) ist eine Möglichkeit, via JTAG mit der CPU zu kommunizieren. Diese kann zu verschiedenen Zwecken genutzt werden, z.B. Terminal I/O, Echtzeit monitoring von Variablen oder Speicher oder um mit einem RTOS zu kommunizieren dass über diese Fähigkeiten verfügt. Was immer benötigt wird ist ein Stück software im Target, dass DCC bedient, also die entsprechenden Infos zur Verfügung stellt. Das ganze kann wie gesagt zum Echtzeit-Lesen von Speicher und damit Variablen verwendet werden. Wird bei IAR auch gemacht im "Live-Watch" window. Geht aber prinzipiell auch ohne IAR. Beispiel code für's target in der Dokumentation des J-Links. Rolf
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.