Forum: Mikrocontroller und Digitale Elektronik OpenSource JTAG SAM7 Programmer?


von Morpheuz (Gast)


Lesenswert?

Hallo,

ich suche einen OpenSource JTAG Programmer für SAM7. OpenSource deshalb, 
da die JTAG-Pins an GPIOs eines anderen ICs hängen und ich daher keinen 
normalen Programmieradapter verwenden kann und den SourceCode anpassen 
muss.

Im Voraus vielen Dank für Tipps

Mfg
Morpheuz

von Dirk (Gast)


Lesenswert?

FT2232 und Openocd ist Opensource

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> OpenSource deshalb, da die JTAG-Pins an GPIOs eines anderen
> ICs hängen und ich daher keinen normalen Programmieradapter
> verwenden kann und den SourceCode anpassen muss.

Du bist Dir aber schon im Klaren darüber, daß die JTAG-Schnittstelle des 
ARMs nur an den dafür vorgesehenen Pins nutzbar ist? Du kannst dafür 
keine anderen Pins verwenden. Da hilft auch kein Anpassen irgendwelchen 
Sourcecodes.

von Morpheuz (Gast)


Lesenswert?

> Du bist Dir aber schon im Klaren darüber, daß die JTAG-Schnittstelle des
> ARMs nur an den dafür vorgesehenen Pins nutzbar ist? Du kannst dafür
> keine anderen Pins verwenden. Da hilft auch kein Anpassen irgendwelchen
> Sourcecodes.

Selbstverständlich! Kuckst du hier:

>> da die JTAG-Pins an GPIOs eines anderen ICs hängen

Stell dir vor ich hätte irgendein IC das GPIOs hat und ich will über 
diese GPIOs den ARM7 programmieren. Das IC mit den GPIOs ist natürlich 
NICHT der ARM7 - das wäre ja furchtbarer Quatsch.

Ich such eine PC-Software die OpenSource ist, damit ich die Software so 
anpassen kann, dass die JTAG-Pins über die GPIOs des anderen ICs gehen. 
Stell dir vor der ARM7 würde an den GPIOs einer z.B. PCI-Bridge hängen.

Mfg
Morpheuz

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

>> da die JTAG-Pins an GPIOs eines anderen ICs hängen

Und? Das kann man auch so interpretieren: "Da die eigentlichen JTAG-Pins 
schon anderweitig belegt sind".

Na gut. Du also willst einen JTAG-Adapter mit eigener Hardware bauen 
und den mit Software die irgendwodrauf läuft ansteuern.

Das wirst Du mit den Sourcen von OpenOCD vermutlich hinbekommen können, 
nur wird das ein Heidenaufriss werden, da Du ja eigene Hardware 
verwenden möchtest.

Was ist das für ein "anderes IC mit GPIOs"?

von Morpheuz (Gast)


Lesenswert?

Hallo,

> Das wirst Du mit den Sourcen von OpenOCD vermutlich hinbekommen können,
> nur wird das ein Heidenaufriss werden, da Du ja eigene Hardware
> verwenden möchtest.

Ich seh das garnicht so. Ich hab nur einen anderen "Kommunikationsweg" - 
der Rest bleibt gleich.

> Was ist das für ein "anderes IC mit GPIOs"?

Es ist tatsächlich eine PCI-Bridge :-)

Aber das Ganze soll nicht nur mit einer PCI-Bridge verwendet werden, 
sondern mir alle Möglichkeiten offen halten irgendwo beliebige JTAG 
Schnittstellen zu implementieren. Von mir aus auch über USB -> AVR -> 
JTAG oder sonstwas.

Ich such doch wirklich nur eine OpenSource-Software die SAM7 per JTAG 
programmiert - mehr will ich doch nicht ... Zweifelt doch bitte nicht 
immer grundsätzlich an den Motiven des Posters :-)


Mfg
Morpheuz

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

AFAIK ist nicht alles in OpenOCD "Open Source". So weit ich mich 
erinnere gibt es eine Abstraktion zur Kommunikationsschicht, die von ARM 
geschützt ist und nicht offengelegt werden darf.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Na, OpenOCD ist die Ausgangsbasis für Deine Vorstellungen. Nur solltest 
Du Dir das Implementieren des "anderen Kommunikationsweges" nicht so 
trivial vorstellen.
Die Variante, die mit FT2232 arbeitet, nutzt eine spezielle JTAG-DLL, 
die die erweiterten Funktionen der im FT2232 enthaltenen MPSSE ausnutzt. 
Das dürfte sich nicht auf irgendwas anderes portieren lassen.

Was Du Dir als Ausgangspunkt anschauen solltest, ist der Quelltext für 
klassische Parallelport-JTAG-Adapter wie den "Wiggler" von Macraigor. 
Das ist nur ein simpler Bustreiber, der direkt an der 
Druckerschnittstelle hängt und der mit "Bit-Banging", also Gewackel an 
den Pins der Druckerschnittstelle angesprochen wird.

Das sollte sich in der Tat auf andere parallel ansteuerbare 
Schnittstellen wie Deine PCI-Bridge umbiegen lassen, sofern Du mal eben 
noch den dafür erforderlichen Windows-Devicetreiber schreibst oder aber 
die Bridge über einfaches Port-I/O angesteuert werden kann und Du so 
etwas wie "giveio.sys" einsetzt.

von Morpheuz (Gast)


Lesenswert?

> Was Du Dir als Ausgangspunkt anschauen solltest, ist der Quelltext für
> klassische Parallelport-JTAG-Adapter wie den "Wiggler" von Macraigor.
> Das ist nur ein simpler Bustreiber, der direkt an der
> Druckerschnittstelle hängt und der mit "Bit-Banging", also Gewackel an
> den Pins der Druckerschnittstelle angesprochen wird.

Ja genau daran hab ich gedacht.

> Das sollte sich in der Tat auf andere parallel ansteuerbare
> Schnittstellen wie Deine PCI-Bridge umbiegen lassen, sofern Du mal eben
> noch den dafür erforderlichen Windows-Devicetreiber schreibst oder aber
> die Bridge über einfaches Port-I/O angesteuert werden kann und Du so
> etwas wie "giveio.sys" einsetzt.

Glaub mir - das ist das kleinste Problem! Die PCI Karte ist bereits mit 
eigenen Treiber in einer Software eingebunden und funktioniert auch. 
Sowas wie GiveIO oder PortTalk fällt damit weg.

Danke für die bisherigen Tipps und ich hoffe dass mich OpenOCD da 
weiterbringt  ... Irgendwie schade, dass es noch nicht so 
ultra-easy-tools wie z.B. AVRDude für die SAM7 gibt.

Mfg
Morpheuz

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Irgendwie schade, dass es noch nicht so
> ultra-easy-tools wie z.B. AVRDude für die SAM7 gibt.

Gibt es doch - Atmels SAMBA.

Nur nicht für eine so undefinierte Schnittstelle wie JTAG (undefiniert 
ist hier die Anbindung an PC-Hardware, da gibt es halt nicht den 
Standard für JTAG, sondern zig unterschiedliche Implementierungen).

Auch ist eine JTAG-Schnittstelle schon für ein bisschen andere Aufgaben 
gedacht als nur irgendwelche Flash-ROMs zu programmieren; beim 
Programmieren über JTAG wird ja auch nicht das Flash direkt 
programmiert, sondern das Nutz-Programm und ein Hilfsprogramm ins RAM 
geladen, um dann mit dem Hilfsprogramm (das zum Controller passen muss) 
das Flash zu programmieren ...
An und für sich ist das eine Debug-Schnittstelle.

von Morpheuz (Gast)


Lesenswert?

>> Irgendwie schade, dass es noch nicht so
>> ultra-easy-tools wie z.B. AVRDude für die SAM7 gibt.

> Gibt es doch - Atmels SAMBA.

SAMBA ist ein Recovery-Tool für den Notfall und nicht für den täglichen 
Einsatz gedacht! Das wird oft missverstanden.

Wie JTAG funktioniert weiß ich. Ich könnte auch eine eigene 
Programmiersoftware schreiben, wenn ich das JTAG Protokoll für die SAM7 
finden würde. Aber ob man da fündig wird ist fragwürdig. Mir wär auch 
schon geholfen, wenn man svf-files erzeugen könnte. SVF-Player hab ich 
schon als OpenSource gesehen.

Mfg
Morpheuz

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> wenn ich das JTAG Protokoll für die SAM7 finden würde

Das ist kein Problem, das ist dokumentiert. Das ist nämlich das 
JTAG-Protokoll des verwendeten ARM7-TDMI-S - Kernes, und das sollte wie 
der Rest des ARMes irgendwo auf 
http://www.arm.com/products/CPUs/ARM7TDMIS.html dokumentiert sein.

Nur die Programmierroutine für das Flash-ROM ist SAM7-spezifisch.

von Dominic R. (dominic)


Lesenswert?

> AFAIK ist nicht alles in OpenOCD "Open Source". So weit ich mich
> erinnere gibt es eine Abstraktion zur Kommunikationsschicht, die von ARM
> geschützt ist und nicht offengelegt werden darf.

Alles im OpenOCD ist Open Source - der einzige nicht quelloffene Teil 
ist FTDI's eigene Library zur Ansteuerung des FT2232, die jedoch durch 
die (L?)GPL lizenzierte libftdi ersetzt werden kann. Die Funktionalität 
der MPSSE des FT2232 ist dokumentiert, und könnte vermutlich sogar als 
Grundlage für ein eigenes Interface verwendet werden.

Der OpenOCD ist allerdings etwas groß für "irgend einen IC". Wie bereits 
erklärt wurde ist es erforderlich, den ARM7TDMI-S im Debug Modus zu 
kontrollieren, um dann die Register des SAM7 Flash Controllers schreiben 
zu können. Es ist also ein vollständiger Debugger nötig, wenn der SAM7 
via JTAG geflashed werden soll.

Bei externen Flashes ist das einfacher, da hier via Boundary-Scan 
einfach alle Pins kontrolliert werden, und so die Buszugriffe simuliert 
werden (wird so z.B. von den openwince jtag-tools gemacht).

Ohne mehr über den "anderen" IC zu wissen, an dessen GPIOs der SAM7 
hängt (bzw. über die gesamte Umgebung), kann ich dir leider kaum 
weiterhelfen.

Gruss,

Dominic

von Feadi F. (feadi)


Lesenswert?

@ Morpheuz:
Nimm einfach die OpenOCD Sourcen und programmier die Ansteuerung für 
Deine Hardware rein. Das ist ein recht einfaches Vorhaben, weil in den 
Sourcen schon die Ansteuerung für 4 andere Interfaces stehen.

Viel Erfolg wünscht:

  

von Morpheuz (Gast)


Lesenswert?

Hallo,

ich hab mir OpenOCD angeschaut und es ist genau das was ich gesucht 
habe. Es dürfte nur eine leichte Fingerübung sein den 
Parallel-Port-Wiggler auf meine Bedürfnisse umzubauen.

Thx a lot!

Mfg
Morpheuz

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.