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