Forum: Mikrocontroller und Digitale Elektronik USB zu LPT JTAG


von JIPSO (Gast)


Lesenswert?

Hallo,

ich bin neu in diesem gebiet, habe hier auch schon im Forum rumgeschaut 
habe aber nie was passendes dazu gefunden.

Es geht darum, ich habe einen Jtag für einen Reciver er wird über einen 
LPT anschluss mit dem PC verbunden (Jtag habe ich selber 
zusammengestellt). Das Klappt auch alles wunderbar ich kann den auch 
Reciver flashen.
Aber mich nervt diese große LPT kabel.

Ich habe mir überlegt ob es nicht möglich wäre, USB stat dem lpt kabel 
zu nehmen. Jetzt steh ich vor einem Problem, ich weiß nicht wie ich es 
machen soll.

Meine Idee ist ich nehme eine größere Platine und löte den "jtag 
interface" ganz normal drauf aber anstatt des SUB D  steckers verbinde 
ich die fasern mit dem USB interface der auch auf der gleichen platine 
draufgelötet wird (USB <> LPT).

ISt sowas möglich ?

von AVRfreak (Gast)


Lesenswert?

Einfach USB mit dem LPT verbinden geht natürlich nicht. USB ist ein 
serielles Interface und LPT ist ein paralleles (auch wenn JTAG seriell 
ist).

Die Verwendung eines im Hanel erhältlichen USB-LPT Adapterkabel (für den 
Anschluss von Druckern gedacht) funktioniert mit den LPT basierenden 
("Wiggler" kompatiblen) JTAG Programmern auch nicht, da die notwendigen 
Timings der einzelnen JTAG-Signale vollkommen verloren gehen, wenn es 
denn überhaupt funktionieren würde, einzelne Datenbits des LPT 
anzusteuern.

Such mal nach "USB2LPT", da findet man eine brauchbare Lösung des 
Problems, da ein spezieller USB-Treiber den Bulk-Transfer ermöglicht.

Ob die besonders preiswerte Variante mit einem Atmel ATMega µC 
ausreichend schnell ist, muss/sollte man mal ausprobieren. Da ja das 
JTAG-Interface nur 6 Signale umfasst, braucht man ja auch keinen 
"vollständigen" LPT-Port und könnte als µC auch einen ATtiny44 im 
platzsparenden DIL 14 Gehäuse verwenden.

von Google Nutzer (Gast)


Lesenswert?

guck mal hier, das sollte funktionieren ...

Beitrag "[V] USB nach Parallel-Wandler (nicht nur Drucker)"

von AVRfreak (Gast)


Lesenswert?

Ja, genau das meinte ich, hab das hier nur nicht auf die Schnelle 
gefunden.

von Andreas K. (a-k)


Lesenswert?

Ich fürchte bloss, dass auch diese Sorte USB/Parallel-Adapter nicht um 
den 1KHz-Takt des USB-Protokolls herum kommt.

Wenn also zwischen Controller und LPT keine Intelligenz steckt, wird das 
das aufgrund unpassenen Timings entweder garnicht, oder nur 
schnarchlangsam funktionieren.

von Google Nutzer (Gast)


Lesenswert?

http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

da ist der beschrieben und laut beschreibung kann er das

von Guido Körber (Gast)


Lesenswert?

Was für ein 1kHz Takt?

Das dürfte wohl eine Verwechselung damit sein, dass USB nun mal 
paketorientiert ist und dadurch keine sinnvollen Datenraten 
herauskommen, wenn man versucht einzelne Bits zu übertragen.

Ohne einen USB Controller, der direkt JTAG kann, wird das zu keinem 
brauchbaren Ergebnis führen. Die USB/LTP Adapter kann man für sowas 
geflissentlich vergessen.

von Christian R. (supachris)


Lesenswert?

@ JIPSO:

Benutz doch gleich den FT2232 von FTDI, der hat ein JTAG-Interface 
eingebaut, und lässt sich leicht über das API ansteuern.

Dieser Adapter von Henrik kann sich auch nicht um die USB Spec drücken.

von Andreas K. (a-k)


Lesenswert?

Guido Körber wrote:

> Das dürfte wohl eine Verwechselung damit sein, dass USB nun mal
> paketorientiert ist und dadurch keine sinnvollen Datenraten
> herauskommen, wenn man versucht einzelne Bits zu übertragen.

USB arbeitet in einem Zeitraster von 1KHz, d.h. wenn du per Bitbanging 
am Parallelport einen Takt erzeugst und jedesmal den Zustand eines Pins 
abfragst, kommt bestenfalls ein Takt von 500Hz dabei raus.

von Christian R. (supachris)


Lesenswert?

Man könnte höchstens per Isochronem Streaming alle 125µs einen Datensatz 
abholen, aber das sind ja auch nur 8Khz dann.
Ansonsten halt das JTAG Protokoll zum Beispiel auf dem Cypress FX2 
implementieren. Ich arbeite gerade mit dem, im BULK-Transfer knallt der 
mit 11 Datenpakete zu je 512Byte in einen Microframe, macht im Windows 
knapp 40MByte/s Streaming.

von Guido Körber (Gast)


Lesenswert?

>USB arbeitet in einem Zeitraster von 1KHz, d.h. wenn du per Bitbanging
>am Parallelport einen Takt erzeugst und jedesmal den Zustand eines Pins
>abfragst, kommt bestenfalls ein Takt von 500Hz dabei raus.


USB benutzt eine 1kHZ Framerate, das ist richtig, High Speed hat dann 
aber Microframes von denen 8 in einem Frame sind.

Deine Aussage mit den 1kHz trifft ausschließlich auf Interrupt Transfers 
bei Full Speed zu.

von AVRfreak (Gast)


Lesenswert?

Lange Rede, kurzer Sinn:

Hab mal schnell diesen USB2LPT-Adapter mit einem ATtiny461 (hatte ich 
gerade zur Hand) aufgebaut und damit bei einen DVB-S Receiver (Edison 
Tyran, hab ich hier gehabt) den Bootlader-Code (64 KByte) per 
JTAG-Interface geflasht. Funktioniert bestens, aber es ist natürlich 
deutlich langsamer als mit einem direkten LPT-Anschluss. Man benötigt 
ca. die vierfache Zeit, d.h. ca. 40 min für 64 KByte mit dem 
USB2LPT-Adapter gegenüber ca. 10 min mit einem LPT-Port. Was will man 
mehr, sobald der Bootlader auf der Box o.k. ist, kann man die Firmware 
(ca. 2 MByre) wieder per RS-232 in ca. 5 min mit 115.200 Baud flashen.

von AVRfreak (Gast)


Lesenswert?

Noch als Ergänzung eine Anmerkung zur erreichbaren Flash-Zeit:

In dem Receiver ist ein 29M160 Flash-Chip und mit Optimierung der 
Timingparameter flasht man die 64 KByte des Boot-Loaders mit dem 
USB2LPT-Adapter über das JTAG-Interface in ca. 15 min. Die ca. 40 min 
kamen mir doch sehr langsam vor und waren hauptsächlich durch für den 
USB-Transfer ungünstig gewählte Timing-Parameter bedingt. Mit 
Optimierung der Timing-Parameter ist das USB2LPT-Interface also ein 
brauchbarer Ersatz für einen LPT-Port.

Hab mal versucht ein Layout mit einem ATtiny44 (reicht ja für die 6 
Jtag-Signale zum Flashen) im DIL-Gehäuse zu entwerfen und man bekommt 
das mit einer kleinen einseitigen Leiterplatte und bedrahteten 
Bauelementen (also keine SMDs) realisiert.

von Rudolph (Gast)


Lesenswert?

Das Ding braucht 64 KB für einen RS232 Bootloader? Wuff.

von AVRfreak (Gast)


Lesenswert?

Der eigentliche Boot-Loader wird wahrscheinlich keine 64 KByte 
benötigen, aber Boot-Block im Flash-EPROM (29M160) ist wohl 64 KByte 
groß und muss/kann nur als 64 kByte Block geflasht werden.

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.