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
> 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.
> 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
>> 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"?
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
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.
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.
> 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
> 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.
>> 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
> 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.
> 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
@ 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:
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