Hallo, ich versuche einen FPGA über JTAG zu programmieren, dafür verwende ich das von Xilinx zur Verfügung gestellte XAPP058. Leider verstehe ich anhand des Quelltextes nicht wie ich die xsvf Datei an die xsvfExecute Routine übergeben kann. In der MainRoutine wird eine XSVF Datei aus einem Dateisytem geöffnet. Ich würde nun gerne einfach den Binärcode als Array anlegen und den Pointer darauf übergeben. (da ist mir auch soweit klar wie ich es machen kann) Ich sehe in dem Quelltext keinen Pointer der den Inhalt der xsvf weitergibt. Gruß Andi
es gibt ein gutes Programm zum Programmieren für Xilinx Bausteine. xc3sprog von Uwe Bonnes Es nutzt nicht das xsvf Format sondern das bit Format. Wenn du umbedingt xsvf nutzen willst, dann schaue dich bei openocd um. Da gibt es eine Implementierung für xsvf und svf. René
da ich dies im Zusammenhang einer Bachelor Arbeit brauche muss ich das XSVF Format verwenden und würde mich daher über ein paar hilfreiche Tipps zum anwenden der Application Note freuen aber danke schonmal für die links da werd ich auch mal schauen
Andi M. schrieb: > da ich dies im Zusammenhang einer Bachelor Arbeit brauche muss ich das > XSVF Format verwenden und würde mich daher über ein paar hilfreiche > Tipps zum anwenden der Application Note freuen > > aber danke schonmal für die links da werd ich auch mal schauen Von Xilinx gibts den XSVF-Player als Source-Code ... Man muss nur noch die Funktionen (über)schreiben, die physikalisch auf die JTAG-Pins zugreifen. Ich glaub, das war sogar XAPP058. Ich hab den XSVF-Player verwendet, um ein Konfigurationsprom eines Spartan 2 über eine PCI9030 PCI-Bridge zu flashen und das funktionierte wunderbar ... Deine Fragestellung ist irgendwie unklar ... ich würde dich daher bitten, deine Frage nochmal neu und verständlich zu formulieren. Es ist nicht verständlich, wo du genau Probleme hast ... Grüße, Steuerbert
okay dann versuch ich es mal andersherum dass ich die ports anders ansprechen muss habe ich verstanden und dies auch schon an den von mir verwendeten uC angepasst also die aufrufe in der port.c datei. in der datei micro.c wir mit fopen die xsvf datei geöffnet da ich aber einen uC benutze steht in der beschreibung der Main Funktion, dass ich direkt xsvfExecute() aufrufen soll das verstehe ich auch noch was ich jetzt nicht verstehe ist, woher der uC wissen soll was er per JTAG programmieren soll, da ich die stelle nicht finde an der z.B. ein Pointer auf den Inhalt der XSVF datei (oder ein array mit deren Inhalt) zeigt. hoffe es wird jetzt was klarer wo es bei mir hängt :) gruß andi
Andi M. schrieb: > oder ein array mit deren Inhalt Das mußt du anlegen und übergibst dem globalen Pointer xsvf_data die Anfangsadresse. Ich habe das so gemacht:
1 | void ProgramFPGA(void) |
2 | {
|
3 | unsigned char *xsvf_data_start; |
4 | |
5 | if( (xsvf_data_start = (unsigned char *)malloc(999999)) == NULL ) { |
6 | wprintf(_T(". \nZu wenig Speicher. \nProgrammierung beendet.\n")); |
7 | *jtagport = 0x0120; |
8 | return; |
9 | }
|
10 | xsvf_data = xsvf_data_start; |
11 | |
12 | int bytes=fread(xsvf_data, sizeof(char), 999999, Progfile); |
13 | // Enable JTAG-Programmierport
|
14 | *jtagport = 0x0020; |
15 | |
16 | // Cpld programmieren
|
17 | int iErrorCode = XSVF_ERROR_NONE; |
18 | iErrorCode = xsvfExecute(); |
19 | |
20 | // Speicher aufraeumen
|
21 | free(xsvf_data_start); |
22 | |
23 | // Tristate JTAG-Port
|
24 | *jtagport = 0x0120; |
25 | if(CmdlineMode) wprintf(_T("\nProgrammierung erfolgreich beendet.\n")); |
26 | }
|
Aber ich kann hier mit dem Speicher auch locker um mich schmeissen (malloc), denn das Ganze läuft auf einer PC-Plattform... ;-)
super dankeschön genau das hab ich gesucht nur irgendwann sieht man vor lauter quelltext nichts mehr :) sonst hätte ich das ja nicht übersehen können hab erstmal ne kleine test datei damit sollte ich mit dem vorhandenen speicher auskommen für das eigentliche projekt muss ich mir dann was überlegen wie ich das auslesen stückschenweise mache aber erstmal schau ich mir jetzt genau an wie die das machen gruß andi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.