JTAG

Begonnen von temp12, 25. Sep 2008, 13:44

« vorheriges - nächstes »
Nach unten

temp12

Hi alle,

weiss jemand, ob ich für BOOP einen JTAG-Adapter benutzen kann? Ich habe irgendwo hier gelesen, dass einige erfolglos versucht haben, JTAG zu verwenden?

Danke

Telekatz

Debuggen mit JTAG geht. Ein Programm mit JTAG ins RAM laden und starten müsste auch gehen. BOOP flashen mit JTAG geht nicht.

famos

Zitat
Debuggen mit JTAG geht. Ein Programm mit JTAG ins RAM laden und starten müsste auch gehen. BOOP flashen mit JTAG geht nicht.


Stimmt, da hat mir Vista einen Streich gespielt. Unter Windows 2000 konnte ich sogar ins Flasch schreiben. Keil mit uLink2 unterstützt diverse Flasch Typen. Nur habe ich noch kein Programm zum laufen gebracht (Startupcode Probleme).

Gruss famos

gunnar

Hallo Telekatz,


Debuggen mit JTAG geht. Ein Programm mit JTAG ins RAM laden und starten müsste auch gehen. BOOP flashen mit JTAG geht nicht.


Ich habe versucht, einen Wiggler Nachbau (http://www.anvilex.de/Extern/Datasheets/DS_P009_06.pdf) mit der Betty zu verbinden. Ich kann aber mittels urjtag nicht die Device ID auslesen. Beim TAE Adapter klappt das, also ist die Umgebung ansonsten in Ordnung.
Ich habe die Verbindung so gemacht:
Pin B.   Belegung Betty    Pin Wiggler    Belegung Wiggler
1   TMS      7      TMS
2   TDO      13      TDO
3   TDI      5      TDI
4   RTCK      offen
5   nTRST   3      TRST
6   TCK      9      TCK
7   VCC      1+2      VCC
8   GND      4,6,8...20   GND
9   nRes      offen (später Taster nach GND)
10   BootEn      offen (später Schalter nach GND)
11   RX      offen (später Handykabel)
12   TX      offen (später Handykabel)

Ist bei der Verbindung etwas falsch? Muss Pin5 (nTRST) invertiert benutzt werden? Sollte ich ihn vielleicht offen lassen, beim PCD des Scart Adapters ist (n)TRST ja gar nicht erst herausgeführt und JTAG geht dort trotzdem. Muss man das JTAG Interface am LPC irgendwie einschschalten? Ich habe irgendwo gelesen (aber noch nicht probiert) man soll dazu einen 10K Widerstand von RTCK nach GND legen. An anderer Stelle stand, man soll BootEnable auf GND legen. Wie hat es bei Dir  geklappt?
Hast Du irgendwo eine bsdl für den lpc2220 gefunden?

Eigentlich will ich den PCD des TAE Adapters programmieren, ich dachte mir nur es wäre besser erstmal mit dem LPC2220 in der Betty etwas Erfahrungen mit OpenOCD und Urjtag zu sammeln, bevor ich mit diesen Tools dem PCD zuleibe rücke...

Viele Grüße

Gunnar


Telekatz

Hallo Gunnar,

die Belegung sieht richtig aus. Ein 10K Widerstand von RTCK nach GND ist bei mir auch nicht notwendig damit JTAG funktioniert. Die entsprechenden Pins werden von Boop als JTAG Pins konfiguriert.

Ich verwende ein JTAG Interface auf Basis des FTDI bei dem nTRST und nRes verbunden wird. JTAG funktioniert allerdings auch dann, wenn in OpenOCD keine Resetpins definiert sind (reset_config none).

Der Fehler wird daran liegen, dass Boop in den idle und power down Modus geht. Dann funktioniert JTAG nicht mehr. Schreibe in die erste Zeile von cpu_idle() in der main.c ein return; und der idle und power down Modus ist deaktiviert.

void cpu_idle ()
{ return;
/* fall through if a key was pressed */


Gruß
Telekatz

gunnar

Hallo Telekatz,


Die Belegung sieht richtig aus. Ein 10K Widerstand von RTCK nach GND ist bei mir auch nicht notwendig damit JTAG funktioniert. Die entsprechenden Pins werden von Boop als JTAG Pins konfiguriert.


An welcher Stelle im Code steht das?


Der Fehler wird daran liegen, dass Boop in den idle und power down Modus geht. Dann funktioniert JTAG nicht mehr. Schreibe in die erste Zeile von cpu_idle() in der main.c ein return; und der idle und power down Modus ist deaktiviert.

void cpu_idle ()
{ return;
/* fall through if a key was pressed */



Volltreffer, genau das war es! :-)
Zitat

jtag> detect
IR length: 4
Chain length: 1
Device Id: 01001111000111110000111100001111 (0x000000004F1F0F0F)
  Manufacturer: ARM
Cannot open /opt/urjtag//share/urjtag/arm/PARTS
  Unknown part!
chain.c(149) Part 0 without active instruction
chain.c(200) Part 0 without active instruction
chain.c(149) Part 0 without active instruction


Kannst Du noch die von Dir verwendete OpenOCD Config schicken und falls Du das hast das BSDL File zum LPC2220?
Wenn alles zusammen ist und bei mir funktioniert, werde ich im Wiki was über Jtag, Debugging und BoundaryScan schreiben.

Viele Grüße
Gunnar

Telekatz

Hallo Gunnar,

Zitat

An welcher Stelle im Code steht das?


Das Steht im Startup Code (crt.s)
ldr r0, =PINSEL2
ldr r1, =0x0de049d4
str r1, [r0]


Zitat
Kannst Du noch die von Dir verwendete OpenOCD Config schicken und falls Du das hast das BSDL File zum LPC2220?

Config File ist im Anhang, ein BSDL File hab ich nicht.

Gruß
Telekatz

famos

Hallo,

wie sieht es eigentlich mit in-circuit debugging über JTAG aus?

Gruss famos

Telekatz

Zum debuggen verwende ich GDB und Insight. Einstellungen siehe Anhang.

Gruß
Telekatz

famos

Hallo Telekatz,

mit welchem System arbeitest Du? Linux, Cygwin, Winarm?? Der Screenshot sieht nach Windows aus.
Wenn das was ich gefunden habe richtig ist: "Insight is a graphical user interface to GDB" (scheint ein PHP Script zu sein),  benötigst Du noch ein JTAG Adapter. Wie sieht der Adapter aus? FTDI, Parallelport Wiggler? Was sind Deine Erfahrungen mit dieser Konfiguration? Scheint nicht trivial zu sein.

Vielen Dank
famos

Telekatz

Hallo Famos,

Ich verwende Windows mit Winarm. Mein JTAG Adapter basiert auf einen FT2232 von FTDI. Dem ist ein CPLD nachgeschaltet um flexibel in der Beschaltung zu sein.

Funktionieren tut das ganze eigentlich ganz gut, JTAG anstecken, OpenOCD starten, Insight starten, boop_rom.elf laden und verbinden.
Allerdings kann man nur die zwei Hardware Breakpoints des LPC2220 verwenden, Softwarebreakpoints funktionieren im Flash nicht. Und wie bereits erwähnt den Energiesparmodus in Boop deaktivieren.

Gruß
Telekatz

famos

Zitat
Ich verwende Windows mit Winarm. Mein JTAG Adapter basiert auf einen FT2232 von FTDI. Dem ist ein CPLD nachgeschaltet um flexibel in der Beschaltung zu sein.

Funktionieren tut das ganze eigentlich ganz gut, JTAG anstecken, OpenOCD starten, Insight starten, boop_rom.elf laden und verbinden.
Allerdings kann man nur die zwei Hardware Breakpoints des LPC2220 verwenden, Softwarebreakpoints funktionieren im Flash nicht. Und wie bereits erwähnt den Energiesparmodus in Boop deaktivieren.


Selbstgebaut oder gekauft? Findet man dazu Infos im Wiki?

Danke
famos

Telekatz

Selbstgebaut. Infos findet man keine dazu im Wiki, schien mir nicht Massenmarkttauglich genug.

Gruß
Telekatz

famos

Hallo Telekatz,

sieht interessant aus. Würde mich freuen wenn man die Unterlagen irgendwo downloaden könnte. Ganz nach dem Motto Wissen ist das Einzige, dass sich vermehrt wenn man es teilt. Es werden sicher viele nichts mit dem anfangen könne, aber für die, die sich damit beschäftigen ist das sehr informativ. Über ARM Debugging mit freeware Programmen finden man wenig brauchbares. Und dies scheint mir nicht gebastelt --> Nachbau also möglich.


Gruss
famos

gunnar

Hallo Famos,

ich habe diesen JTAG Adapter für 8€ Preisvorschlag + Versand (Brief) bei Ebay gekauft und der funktioniert ganz gut bei mir:
http://shop.anvilex.com/pi2/pd10.html
Wenn man einen Parallelport hat und erstmal in die Materie hineinschnuppern will ist das wohl der günstigste Einstieg. Vom gleichen Anbieter habe ich auch das Altera Kabel genommen und damit erfolgreich über Quartus am CPLD auf dem Scart Adapter herumgespielt.
Aus dem embedded-projects Shop habe ich einen MSP430 JTAG Adapter gekauft, ca 15€. Flashen und Debuggen geht damit ohne große Einstellungen einfach von der Hand. Für den MCS51 kompatiblen Controller auf dem ScartAdapter wollte ich eine kleine Software für das AvrUsbLab machen, das ich sonst zum Programmieren von AVR Controllern nehme.
http://wiki.ullihome.de/index.php/USBAVR-ISP/de
So kann ich einen hübschen Zoo von Controllern programmieren und größtenteils auch debuggen. Anwendungszwecke habe ich schon einige im Hinterkopf. Praktisch ist, dass alle zur Betty gehörende Hardware über die CC1100 kommunizieren können, egal welchen Controller sie nun gerade benutzen. Für fast alles gibt es funktionierenden Code in Boop, das ist ideal zum Lernen und Spielen. :-)

Bei den ARMs kann man mittels GDB auf jeden Fall Code ins Ram laden und dort ausführen. Das Flashen über JTAG geht nicht so einfach, aber da kann man ja ein Tool machen, das im Ram des ARM läuft und von dort aus das Flash beschreibt. So macht es ja auch das LPCTool.

Wenn ich das mit dem Debuggen von Betty und PCD des TAE Adapters raushabe werde ich eine Wikiseite darüber machen.

Viele Grüße
Gunnar

Nach oben