Guten Tag,
schon 3 Tage kämpfe ich mich durchs Internet um eine Lösung zu finden,
bin aber nicht fündig geworden, deswegen hoffe das jemand mir vielleicht
etwas helfen kann.
Mein Problem, ich habe ein CPLD board, mit JTAG Anschluss, aber ohne
Möglichkeit per USB dem anzuschliesen, kein Anschluss auf dem Board. Ich
habe ein Rechner ohne LPT Anschluss, also habe ich eine PCI-Karte mit 2
Seriele und ein LPT Anschluss, die aber nicht erlaubt das mann die
IO-Ändern (keine Jumpers oder ähnliches auf der Karte). Und ich habe ISE
Xilinx WebPack.
Wenn ich versuche auf dem CPLD zu brennen, findet das Programm der LPT
Anschluss nicht, ich habe schon alle mögliche Einstellungen versucht,
immer ohne erfogt. Was kann ich machen, gibt es die Möglichkeit unter
ISE Xilinx die Portadresse vom LPT port zu ändert, die ist nähmlich
nicht standard und lautet E880.
Mein ATmega128 kann ich übereichenderweise flashen, ich benutze hierfür
Ponyprog2000, da habe ich nur ein paar kleine Änderungen an der .ini
Datei machen müssen, wenn es unter Xilinx Software auch so Einfach ist
dann bitte klär mich auf, oder schreib mir bitte was man noch machen
konnte. Vielleicht anderes Programm außer Xilinx zum flashen?, ich habe
leider nicht ähnliches gefunden, bin leider neu in der Welt der CPLDs
und FPGAs, Vielen Dank im Vorraus.
Grüß.
Mein Rechner hat auch kein LPT noch nicht einmal seriel nur USB.
Ich verwende zum Programmieren deshalb:
Xilinx Platform Cable USB HW-USB-II (USB to JTAG)
bei Trenz kostet das 211€ das ist nich gerade billig aber es
funktioniert.
etwas billiger ist:
Digilent XUP USB-JTAG Programming Cable
67€
Das hab ich aber noch nicht ausbrobiert.
(Entschuldigung ich habe vorhin ein Neuer Eintrag aufs Versehen gemacht.
Nicht absichtlich.)
vielen Dank, aber der Vorschlag auf der Homepage funktionierte nicht und
die Hardware ist mir zu teuer, wenn ich mir überlege das ich für die
platine gerade mal die Hälfte ausgegeben habe.
Gib es vielleicht die Möglichkeit das ich ein Adapter löte, mit dem Ich
vom JTAG zu USB gehe, denn der JTAG ist auf der Platine schon integriert
und führt heraus durch sub-D (für Drucker), von dort aus mit einem
Adapter dazwischen zu USB, ist das möglich?, so das ich bei Xilinxs
WebPack dann per USB mein CPLD flashen kann?.
Wenn das möglich ist kann mir jemand ein Link, zu der Bauanleitung
geben?, danke im Vorraus.
Grüß
latin schrieb:
> (Entschuldigung ich habe vorhin ein Neuer Eintrag aufs Versehen gemacht.> Nicht absichtlich.)
Ich habe den überflüssigen Thread gelöscht.
> Wenn das möglich ist kann mir jemand ein Link, zu der Bauanleitung> geben?, danke im Vorraus.Beitrag "Xilinx USB schematic jetzt verfügbar"
> und die Hardware ist mir zu teuer,
Jeder setzt seinen Fokus anders...
> wenn ich mir überlege das ich für die platine gerade mal die Hälfte> ausgegeben habe.
An der falschen Stelle gespart?
> Gib es vielleicht die Möglichkeit das ich ein Adapter löte, mit dem Ich> vom JTAG zu USB gehe, denn der JTAG ist auf der Platine schon integriert> und führt heraus durch sub-D (für Drucker), von dort aus mit einem> Adapter dazwischen zu USB, ist das möglich?, so das ich bei Xilinxs> WebPack dann per USB mein CPLD flashen kann?.
Was willst du denn? Wozu der ganze Aufwand/Aufstand?
Es gibt eine funktionierende Lösung: Das Xilinx oder das digilent
USB-Kabel.
Für 67 Euro kannst du sowas niemals selber basteln.
Oder kauf dir in der Bucht für 5 Euro einen anderen LPT-Adapter.
Wie sollte man dir denn sonst noch helfen?
Geht nicht, ich habe Windows 7 drauf, aber auch unter XP oder Vista, war
es nicht möglich die Adresse zu ändern.
Ich glaube mal hier im Forum gelesen zu haben das jemand eine PCI LPT
karte hatte bei der die Prog. von CPLDs funktioniert hatte, er konnte
die Karte Jumpern und so die IO-Port Adresse ändern. Ich kann das an
meine PCI LPT karte nicht, die hat überhaubt keine Jumpers, vielleicht
eine Software die das erledigt, oder simuliert, so das die ISE Software
glaubt eine echte LPT Schnittstelle zu haben?
Ansonsten gibts immer noch die Möglichkeit die Konfiguration selbst
vorzunehmen, dann kann man sich die Addresse raussuchen.
Sollte wirklich nicht so schwer sein...svf erzeugen, svf auslesen, daten
an Addresse übertragen, fertig.
Dauert vielleicht 2-3 Tage und hinterher kann man etwas und hat eine
universelle Software.
Ich würde dir auch meinen code zur Verfügung stellen, jedoch bin ich die
nächsten Tage nicht zu Hause und mit dabei habe ich ihn nicht.
Einfach mal in den xilinx app notes stöbern, da gibts eine die GENAU
beschreibt wie man ein svf parsen und übertragen kann. Mehr muss man
nicht wissen, alle Information zur Programmierung stehen im svf selbst.
Das ist wirklich Idiotensicher.
Für den Anfang ggf auch mal bei fpga4fun vorbeischauen und das Jtag
tutorial durchlesen und ausprobiern (idcode auslesen usw)
Iulius schrieb:
> Ansonsten gibts immer noch die Möglichkeit die Konfiguration selbst> vorzunehmen, dann kann man sich die Addresse raussuchen.> Einfach mal in den xilinx app notes stöbern, da gibts eine die GENAU> beschreibt wie man ein svf parsen und übertragen kann. Mehr muss man> nicht wissen, alle Information zur Programmierung stehen im svf selbst.
Ist die XAPP 058.
Aber eine ordentliche PCI Karte, die man auf 0x378 stellen kann, ist
sicher ein einfacherer Weg.
Vielen Dank erstmals,
Iulius ich würde mich sehr freuen wenn du mir deinen Code zur Verfügung
stellst, ich bin leider kein Meister der Programmierung und mit CPLDs
muss ich mich wegen Ausbindung befassen. Soll ich dir meine
Email-Adresse geben oder wie kann man das am besten machen?.
Wegen Adresse ändern der Karte, ging nicht, ich fand im Internet das man
WindowsXP ohne ACPI installieren kann um somit die IRQs frei ändern zu
können, tja, das geht nicht wenn ich ACPI auschaltet und WindowsXP (mit
gedrückte f5) starte, um ohne ACPI zu installieren meldet sich
irgendwann das Installationssetup mit einem HEADER Fehler Nummer 0x019
wenn ich mich nicht irre, also keine Installation möglich, vielleicht
liegt das ganz am Board, das ist ein Asus Commando.
Grüß.
Ich kann meinen code hier reinstellen, aber wird erst nächstes
wochenende(ab 17ten) was, vorher komme ich nicht zuhause an den Rechner.
(Hab leider vergessen zu Synchronisieren, mir selbst fehlen meine
Projekte auch)
Falls dann noch Interesse besteht poste nochmal, sonst vergess ich es
eh.
Natürlich ist es einfacher die Addresse zu ändern. GGf gibt es sogar
andere software die die änderung erlaubt.
Hast mal nach svf oder xsfv-player gegoogled ?
Da kommt sicher auch irgentwas raus.
Würde mich nichtmal wundern wenn es code dazu im netz gibt.
Irgendwie hoert sich das ganze kopflos an. Ich hoere immer nur "geht
nicht", aber nicht, was exakt wo gemacht wurde und wo welche
Fehlermeldungen auftreten.
Du hast ausserdem noch nichteinmal verraten, auf welchen System das
stattfindet, ich vermute aber Windows...
1. Siehst Du den Parallelport im Bios? Welcher Mode ist eingestellt?
2. Siehst Du den Parallelport im Geraetemanager? Mit welcher Addresse?
3. Sind die noetigen WinDrv Treiber geladen? Ich verweise nochmals auf
die Checkliste unter http://www.xilinx.com/support/answers/15742.htm
Wenn Du es schaffst, unter Windows PARVDM fuer Deinen Parallelport zu
aktivieren, oder Windows automatisch PARVDM aktiviert, dann kannst Du
auch XC3SPROG von Sourceforge verwenden.
1. Das Betriebssystem ist Windows 7, wobei ich auch XP installiert habe
und dort auch nicht läuft.
2. Im BIOS steht nicht über parallelports, deswegen auch keine
Möglichkeit Mode einzustellen, das Mainboard ist ein ASUS Commando,
leider ein Gamer Board ohne com oder serial anschluss.
3. Da ich eine PCI-Karte habe mit 2 serial und 1 parallel Port und diese
auch installiert habe, ist diese auch im Geräte Manager zu sehen, dort
ohne probleme installiert, nur, und das ist das Problem, mit eine
Adresse die nicht zu den Seriel/Parallelanschluss passt, also von
Windows irgendwie virtuell vergeben, vermute wegen ACPI, der sich aber
nicht ausschlaten lässt, denn dann fährt windows nicht mehr hoch.
4. Die WinDrv Treiber sind geladen.
5. Und der verweiss auf der Internetseite
http://www.xilinx.com/support/answers/15742.htm
habe ich schon durchgelesen und angewendet ohne erfolgt.
Ich will wirklich nimandem auf die nerven gehen, wenn das wirklich nicht
geht, dann bleibt mir nicht anders übrich als ein alter rechner zu
kaufen und es damit versuchen, ich habe schon fast migräne vom ganzen.
Trotzdem bedanke ich mich für die Interesse bisher.
el_latin schrieb:
> 3. Da ich eine PCI-Karte habe mit 2 serial und 1 parallel Port und diese> auch installiert habe, ist diese auch im Geräte Manager zu sehen, dort> ohne probleme installiert, nur, und das ist das Problem, mit eine> Adresse die nicht zu den Seriel/Parallelanschluss passt, also von> Windows irgendwie virtuell vergeben, vermute wegen ACPI, der sich aber> nicht ausschlaten lässt, denn dann fährt windows nicht mehr hoch.
Egal, ob ACPI oder nicht, für PCI-Karten ist es völlig normal, dass
sie Adressen irgendwo im Adressraum belegen, nicht jedoch die
historischen ISA-kompatiblen Adressen.
Dummerweise bietet Windows keinen generischen Parallelport-Treiber
an, mit dem man ohne Kenntnis der Hardware-Details einfach x-beliebige
(also nicht druckerbezogene) Ein-/Ausgaben über einen Parallelport
machen kann. Noch schlimmer, es gibt nichtmal einen simplen und auf
allen Windows-Versionen gangbaren Weg, um beispielsweise vom logischen
Namen LPT1 auf dessen IO-Adresse schließen zu können. Been there, done
that -- oder besser gesagt, wir haben mal diskutiert, sowas ins
AVRDUDE (Flash-Programmierer für AVRs) einzubauen. Das Vorhaben haben
wir aufgegeben, dort muss man ggf. den expliziten IO-Port auf der
Kommandozeile eingeben (was natürlich ein potenzielles Sicherheitsloch
ist).
Da sind die aktuellen Opensource-Unixe (Linux, *BSD) deutlich besser
dran: dort gibt es die Möglichkeit, über den ganz normalen Parallel-
porttreiber auch Bitein-/-ausgaben zu machen, und das lässt sich
sogar noch treiberseitig schön gegen die Druckfunktion verriegeln.
Da ist es dann völlig Banane, welche IO-Adresse die Karte benutzt.
Vielleicht findest du ja einen alten Laptop mit Parallelport, an
den du deinen Programmer hängen kannst, da gibt es dann sogar noch
einen Xilinx-Protokoll-kompatiblen Dämon, mit dem man via TCP
programmieren kann, ohne dass man auf diesem Computer den ganzen
ISE/Impact-Kram erst installieren müsste.
@Jörg Wunsch
Doch, mit \\.\$VDMLPT1 gibt es unter Win32 ein nahes Aequivalent zu
/dev/parport. Schau Dir mal hamlib oder xc3sprog an, die verwenden das.
Allerdings finde ich keine Dokumentation, wie man es zum Laufen bringt,
wenn es nicht will. Auf den meisten Rechnern hat es mit wilden De- und
Neuinstallieren des Parallelporttreibers und des PARVDM Services und
vielen Neustarts geklappt...
Uwe Bonnes schrieb:
> Doch, mit \\.\$VDMLPT1 gibt es unter Win32 ein nahes Aequivalent zu> /dev/parport.
Hast du was genaueres?
Ehrlich gesagt, ist meine Motivation, da noch Arbeit reinzustecken,
relativ gering. Ich würde mir kaum freiwillig ein Windows installieren,
ich weiß meine Freizeit besser totzuschlagen. :-)
> Auf den meisten Rechnern hat es mit wilden De- und> Neuinstallieren des Parallelporttreibers und des PARVDM Services und> vielen Neustarts geklappt...
Klingt nicht allzu Vertrauen erweckend.
Michael Sauron schrieb:
> Das Xilinx Ding kostet ja 4 mal so viel, aber was kann es mehr ?
Reicht dir nicht, dass es schöner verpackt ist und von Xilinx kommt?
1
The XUP-USB programming cable is compatible with Xilinx’s Platform Cable USB
@Joerg:
Use the source, Joerg!
Ich entwickle auf und fuer Linux. Damit aber auch Mitarbeitern mit
Windows auf dem Rechner mit unseren JTAG Kabeln Bausteine programmieren
koennen, brauchte ich ein Aequivalent fuer /dev/parport unter Win32.
Die entscheidenen Stelle im Code sehen etwa so aus:
Oeffen:
...
#ifdef _linux_
ioctl (fd, PPRELEASE);
close (fd);
#elif defined(_FreeBSD_)
close (fd);
#elif defined(_WIN32_)
CloseHandle((HANDLE)(fd));
#endif
...
int IOParport::write_data(int fd, unsigned char data)
{
int status;
#ifdef _linux_
status = ioctl(fd, PPWDATA, &data);
return status == 0 ? XC3S_OK : -XC3S_EIO;
#elif defined (_FreeBSD_)
status = ioctl(fd, PPISDATA, &data);
return status == 0 ? XC3S_OK : -XC3S_EIO;
#elif defined(_WIN32_)
DWORD dummy;
status = DeviceIoControl((HANDLE)(fd), NT_IOCTL_DATA, &data,
sizeof(data), NULL, 0, (LPDWORD)&dummy, NULL);
return status != 0 ? XC3S_OK : -XC3S_EIO;
#else
return -XC3S_ENIMPL;
#endif
}
Interessant, Uwe. Hast du Lust, mit mir darüber auf der avrdude-dev
Mailingliste mal zu diskutieren (und insbesondere mit denen, die
AVRDUDE tatsächlich unter Windows benutzen)? Das wäre ja wirklich
mal was, besser als dieses leidige direkte Port-IO.