07.01.2010, 15:06
(Dieser Beitrag wurde zuletzt bearbeitet: 07.01.2010 15:39 von jg.)
Beitrag #1
|
hotzenplotz
LVF-Neueinsteiger
Beiträge: 3
Registriert seit: Jan 2010
2009
2009
de
90443
Deutschland
|
DMA host to target, Datentransfer funktioniert nicht.
Hallo,
ich bekenne mich des Crosspostings ( http://forums.ni.com/ni/board/message?boar...hread.id=466426 ) schuldig, aber ich bin echt verzweifelt, da mein Problem mit Sicherheit nur eine Kleinigkeit ist, die ich übersehe. Leider sitze ich schon seit Tagen daran und finde einfach keine Lösung. Habe auch sämtliche Beispiele durchgearbeitet aber finde nicht den Haken. Ich hoffe, hier kann mir jemand weiterhelfen.
Mein Problem:
Ich möchte vom Host zum FPGA Daten übertragen, nutze dazu einen DMA-FIFO. Push des Arrays im host vi, pull der Daten auf dem target. Simuliere ich nun das Target auf dem dev computer, funktioniert das Ganze auch. Lasse ich das target vi jedoch auf dem realen Target laufen, funktionierts nicht mehr.
Im Anhang der Code vom host (
) und vom target (
). Hoffentlich konnte ich mein Problem deutlich machen.
LV2009, cRIO-9072
Vielen Dank im Voraus.
|
|
|
07.01.2010, 16:24
Beitrag #2
|
chrissyPu
LVF-Stammgast
Beiträge: 467
Registriert seit: Jun 2006
2014 PDS
2006
DE_EN
64283
Deutschland
|
DMA host to target, Datentransfer funktioniert nicht.
Also,
wenn du das ganze genau so programmierst, wie hier dargestellt und nur das erste Element des FIFO auf dem FPGA-Target ankommt (so steht es im anderen Post), dann macht es doch ganz genau das, was es soll. Die Sequenz auf dem Target liest ein Element und schaut, wieviel Elemente noch im FiFo sind (wobei das definitiv nicht deterministisch ist, wie Du das programmiert hast - nutz doch mal die Referenz als Datenflusskontrolle...). Dann läuft eine Schleife, die wartet, ob der button "Stopp" gedrückt wird (wobei ich mich da frage, warum Du das machst - du weißt doch anscheinend wieviele Elemente im FiFo drin sind - kann man auch gut mit einer For-Schleife machen) und das tust du im host-VI (zumindest in dem Teil, den du hier zeigst) nicht.
Ohne VIs kann ich Dir da glaub ich auch nicht weiterhelfen... Noch ein paar weitere Gedanken:
- FiFos haben mal eine Zeitlang glaube ich nur U32-Datentypen verarbeitet. Vielleicht liegt das daran.
- Hast Du mal über eine Ablaufkontrolle über Interrupts nachgedacht? Sonst musst Du immer pollen, ob ein Status irgendwie schon erreicht wurde, da sind die Wait for Interrupt-Elemente finde ich immer einfacher zu handeln...
Grüße,
ch
|
|
|
08.01.2010, 08:47
Beitrag #3
|
hotzenplotz
LVF-Neueinsteiger
Beiträge: 3
Registriert seit: Jan 2010
2009
2009
de
90443
Deutschland
|
DMA host to target, Datentransfer funktioniert nicht.
Also mal kurz zu meinem Aufbau:
Hier gehts es eigentlich nur darum, die grundsätzliche Funktion zu testen. Nachdem also vom Host der FIFO gefüllt wurde (mit einigen Werten aus dem Frontpanel), sollte ich so über Drücken der Taste "Next" auf dem Target vi nach und nach alle Werte auslesen können, mit zusätzlicher Kontrollanzeige wie viele Werte noch im FIFO vorhanden sind. Genau das funktioniert aber auf dem realen Target nicht, bei der Simulation/Emulation auf dem Dev Computer schon. Und genau das verstehe ich nicht.
|
|
|
08.01.2010, 08:51
(Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2010 08:58 von chrissyPu.)
Beitrag #4
|
|
|
08.01.2010, 09:00
(Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2010 15:03 von jg.)
Beitrag #5
|
hotzenplotz
LVF-Neueinsteiger
Beiträge: 3
Registriert seit: Jan 2010
2009
2009
de
90443
Deutschland
|
DMA host to target, Datentransfer funktioniert nicht.
Hallo ch,
Hier sind die beiden VIs:
writeFIFO.vi (Größe: 35,23 KB / Downloads: 306)
readFIFO.vi (Größe: 26,96 KB / Downloads: 292)
Indikatoren und Stop-Button erreiche ich doch ganz einfach über ein Frontpanel (habe ich die Frage richtig verstanden?).
|
|
|
08.01.2010, 11:44
Beitrag #6
|
chrissyPu
LVF-Stammgast
Beiträge: 467
Registriert seit: Jun 2006
2014 PDS
2006
DE_EN
64283
Deutschland
|
DMA host to target, Datentransfer funktioniert nicht.
Hi,
danke für die VIs (damit das Jens jetzt nicht schreiben muss: Die Version fehlt). Version ist leider auch der Grund, dass ich sie nicht lesen kann (drück mich noch vor der 2009-Installation).
Zur Bedienung: Ich hab zwar nur eine R-Serie, habe aber mal mit einem Kollegen gesprochen: Ein cRIO kannst Du m.E. nur über verknüpfte Netzwerkvariablen in deinem Host-VI oder über eine Weboberfläche, die das Frontpanel vom RT-Target abbildet, bedienen. Allerdings kann man auch für den Fall, dass man das ganze auf dem RT laufen lässt, auf dem Host das VI, das auf dem RT läuft, öffnen und bedienen, nur kommen die Befehle dann nicht am RT an, sondern laufen irgendwie ins Leere. Könnte das ganze daran liegen? Deine Aussage "ganz einfach über ein Frontpanel" macht mich da nämlich ein bisschen stutzig...
ch
|
|
|
11.01.2010, 10:50
Beitrag #7
|
dlambert
LVF-Gelegenheitsschreiber
Beiträge: 89
Registriert seit: May 2009
2010
2007
en
12359
Deutschland
|
DMA host to target, Datentransfer funktioniert nicht.
Der FPGA ist Hardware und demzufolge kann man auch nicht auf Button ( hier NEXT) des FPGA-VI's klicken. Das FPGA Panel ist ein reiner Indikator zum Debuggen.
Auf das NEXT Control muss per RT zugegriffen werden. Dann sollte es gehen.
Hope it helps
Christian
|
|
|
| |