INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

PCI-Express mit LabVIEW



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.06.2008, 17:03
Beitrag #1

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
PCI-Express mit LabVIEW
Hi @ all

Es gibt seit einiger Zeit FPGA-Platinen zu kaufen, die über eine PCI-Express-Interface verfügen. Daher liegt es nahe Daten über PCI-Express zu versenden. Gibt es möglichkeiten in LabVIEW den PCI-Express-Bus anzusprechen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.06.2008, 08:37 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2008 08:39 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
PCI-Express mit LabVIEW
' schrieb:Hi @ all

Es gibt seit einiger Zeit FPGA-Platinen zu kaufen, die über eine PCI-Express-Interface verfügen. Daher liegt es nahe Daten über PCI-Express zu versenden. Gibt es möglichkeiten in LabVIEW den PCI-Express-Bus anzusprechen?

Hardware Zugriff ist nicht etwas was eine Applikation aus Userspace auch nur versuchen sollte. Dazu gibt es Kernel Device Driver. Zwar kannst Du theoretisch mit InPort und OutPort auf die Register zugreifen aber PCI ist PnP, d.h. die Adressen können ganz einfach veränderen und müssen mit PnP Funktionen des OSes immer erst abgefragt werden.

Zudem benützt PCI meist auch mapped memory was die InPort und OutPort Funktionen nicht können.

Last but not least sind InPort und OutPort relativ langsam da sie für jeden Registerzugriff einen Roundtrip zum Kerneltreiber und zurück machen müssen. Solche Roundtrips kosten Zeit da es dabei nicht nur einen Prozess umzuschalten gibt (Multitasking) aber auch noch in den privilegierten Ring1 Kernelmode umgeschaltet werden muss.

Ein Kerneltreiber direkt für die Karte kann Operationen optimalisieren und zusammenfassen in komplexere Funktionen die viele Registerzugriffe gleichzeitig tut, wobei jede dieser Funktionen jeweils nur eine Roundtrip erfordert.

Um einen solchen Kerneltreiber in einer Applikation benützen zu können muss man dann noch eine sogenannte Userspace DLL haben die die Umsetzung des Kerneltreiber APIs in gut funktionierende Funktionen macht und diese Userspace DLL importierst Du dann in LabVIEW mittels der Call Library node.

Direkter Hardwarezugriff von Applikationen aus ist echt etwas aus guten alten DOS Zeiten wo eine Applikation alles tun dürfte inklusiv den ganzen Computer crashen, aber da drauf ist LabVIEW aus vielen Gründen nie gelaufen und könnte es auch nicht.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2008, 12:31
Beitrag #3

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
PCI-Express mit LabVIEW
LabVIEW selber hat ja eine PCI-Express Karte im Angebot. Daher müssen sie das Fachwissen, wie ich die Daten über den PCI-Express-Bus bekomme besitzen. Gibt es denn LabVIEWplugins, mit deren Hilfe ich auf den PCI-Express Bus zugreifen kann zu kaufen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2008, 12:43 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2008 12:55 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
PCI-Express mit LabVIEW
' schrieb:LabVIEW selber hat ja eine PCI-Express Karte im Angebot. Daher müssen sie das Fachwissen, wie ich die Daten über den PCI-Express-Bus bekomme besitzen. Gibt es denn LabVIEWplugins, mit deren Hilfe ich auf den PCI-Express Bus zugreifen kann zu kaufen?

Bitte nimm zur Kenntnis dass LabVIEW mit welcher Hardware dann auch nichts direkt selber tut. Das geht immer durch Treiber. LabVIEW bietet auch keine PCIExpress Karte an, sondern der Hersteller von LabVIEW und das ist National Instruments.

Natürlich hat National Instruments das Wissen wie eine PCIExpress Karte anzusprechen ist. Nicht nur das die haben sogar einen eigenen PCIExpress Businterfacecontroller für ihre Hardware entwickelt und deren DeviceTreiber sind dann auch ganz spezifisch für diesen Controller optimalisiert.

Und die entsprechenden Kerneldevicetreiber sind Bestandteil der entsprechenden Treiber wie NI-488.2, NI-VXI, NI-DAQmx, etc, etc. LabVIEW greift dann ganz einfach mittels VI Libraries auf das Userspace API dieser Treiber.

Direkte Kontrolle des PCI Buses (oder jeder anderen Hardware) ohne dazwischen liegendem Device Treiber (ob das jetzt ein Standarddevicetreiber von Windows ist wie für Disk Access etc. oder ein eigener wie für die NI Hardware) macht in heutigen OS'es ganz einfach keinen Sinn mehr.

Allerdings kommen die meisten Hardware Developer Kits (zu denen wohl auch Dein Board gehört) bereits mit vorgefertigten Devicetreibern für verschiedene Betriebssysteme. Damit kannst Du die Register des Businterfaces und in beschränktem Masse die dahinter liegende Customhardware kontrollieren. Ansprechen dieses TreiberAPIs, das dann die Anbindung mit PnP des OS auch gleich übernimmt, mittles Call Library Node ist wohl die einfachste Art um so eine Hardware zu kontrollieren.

Um dann optimalisierten Zugriff auf Deine Customhardware zu bekommen wirst Du aber um die Erstellung eines eigenen Kerneldevicetreibers und der entsprechenden Userspace API DLL nicht herumkommen. Und das ist ganz sicher nicht etwas für unbedarfte C Programmierer. Kerneldevicetreiberentwicklung ist auch wenn Du von einem bestehenden Treibertemplate ausgehen kannst wirklich die etwas höhere Kunst des Programmierens und ein einziger falscher Pointer kann Dir wirklich das ganze OS so durcheinander bringen dass nur noch der Powerschalter helfen kann.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2008, 22:10
Beitrag #5

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
PCI-Express mit LabVIEW
Ich weiß das man einen Treiber benötigt. Jedoch muss man das Rad nicht jedes mal neu erfinden, denn die PCI-Express-Bus ist eine Standardinterface, das weltweit benutzt wird, und die Daten werden in einem vorgegebenen einheitlich Vormat übertragen. Ich suche nur eine Standardbibliothek, die ich in LabVIEW einbinden kann.

Ich denke wir brauchen hier nicht Seitenweise über Kerneltreiberprogrammierung lange zu diskutieren, denn wir sind ein kleines Unternehmen, wo nach einer absehbaren Zeit Ergebnisse vorzeugbar sein müssen, damit man auch immer den Zeitfaktor im Auge behält. Ich muss immerhin die Digitalisierung, Datenverarbeitung, Datenübertragung auf dem FPGA realisieren. Zudem schreibe ich auch die Anwendersoftware auf dem PC. Damit dies alles in wenigen Wochen funktioniert, muss man auf Standardfunktionen, die schon vorhanden sind zurückgreifen, da hat man keine Zeit Wochen am Kerneltreiber zu programmieren.

Um wieder zurück zum Thema zu kommen. Ich suche eine Library, mit der ich dann auf den PCI-Express-Bus zugreifen kann. Soetwas muss es doch geben. Vielleicht kennt jemand ja ein Softwareschiede, wo man soetwas kaufen kann. Ich bin für jeden Tip dankbar
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2008, 22:21
Beitrag #6

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
PCI-Express mit LabVIEW
' schrieb:(...)
Um wieder zurück zum Thema zu kommen. Ich suche eine Library, mit der ich dann auf den PCI-Express-Bus zugreifen kann. Soetwas muss es doch geben. Vielleicht kennt jemand ja ein Softwareschiede, wo man soetwas kaufen kann. Ich bin für jeden Tip dankbar

Muss man denn immer kaufen?
Mal in die Opensourceprojekte zu dem Thema reingeschaut?

Ansonsten würde ich vllt eher an ein anderes Interface denken: USB2.0, Firewire, SATA,SAS,Fibre-Channel,10G-Ethernet,Inifinband.
Wobei das Problem der Datenverarbeitung bei den Bandbreiten, die die Interfaces bieten auch noch existiert..

Und wegen Datenverarbeitung im FPGA würde ich mal richtung SDR (Software defined Radio) suchen, da werden u.U. 2x 30MHZ Basisbänder komplett digitalisiert und dann im FPGA z.b. das DVB-T-Signal daraus als Datenstrom via USB2.0 ausgegeben.

auch eine aktuelle DUAL oder QUADCORE-CPU hat ihre Limits.. da sind FPGAs und DSP oft besser geeignet..
just my two cent..

Gruß,
Rob

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2008, 00:02
Beitrag #7

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
PCI-Express mit LabVIEW
Ich will doch einfach nur PCI-Express. Auch bei Firewire und USB und SATA usw benötige ich funktionen, die es auch nicht so einfach gibt. Vor allem hat USB nicht gerade die Bandbreite, denn da sollen 2 mit 40MHz abgetastete Signale rüber. Ethernet hat so viel Overhead. Außerdem will man so etwas nicht da Ethernet meist schon für andere Sachen benutzt wird. Von mir aus kann es auch Open Source sein, nur muss es funktionieren.

PCIe ist halt schon als IP-Core im FPGA implementiert. Da legt man die Daten an setzt ein Flag und los gehts. Jetzt muss halt nur noch die PC-Seite realisiert werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2008, 00:14 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2008 00:33 von rolfk.)
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
PCI-Express mit LabVIEW
' schrieb:Ich weiß das man einen Treiber benötigt. Jedoch muss man das Rad nicht jedes mal neu erfinden, denn die PCI-Express-Bus ist eine Standardinterface, das weltweit benutzt wird, und die Daten werden in einem vorgegebenen einheitlich Vormat übertragen. Ich suche nur eine Standardbibliothek, die ich in LabVIEW einbinden kann.
Nur weil der PCIe Bus ein Standard ist heisst das noch lange nicht dass auch alle Controllerchips für PCIe boards das genau gleiche Registerinterface implementieren. Soweit geht die Standardisierung dann wirklich nicht!

Und wenn Du dann noch ein FPGA als Businterface benützen willst kannst Du da völlig verschiedene Registeranordnungen, Anzahl Datenkanäle, mögliche Interrupts etc. etc. haben. Ein anders FPGA image laden et voila der Interface Chip ist komplet anders strukturiert und der Treiber X der gerade noch so gut mit diesem Board funktionierte greift brutal in die Leere.

Zitat:Ich denke wir brauchen hier nicht Seitenweise über Kerneltreiberprogrammierung lange zu diskutieren, denn wir sind ein kleines Unternehmen, wo nach einer absehbaren Zeit Ergebnisse vorzeugbar sein müssen, damit man auch immer den Zeitfaktor im Auge behält. Ich muss immerhin die Digitalisierung, Datenverarbeitung, Datenübertragung auf dem FPGA realisieren. Zudem schreibe ich auch die Anwendersoftware auf dem PC. Damit dies alles in wenigen Wochen funktioniert, muss man auf Standardfunktionen, die schon vorhanden sind zurückgreifen, da hat man keine Zeit Wochen am Kerneltreiber zu programmieren.

Dann kaufe ein Hardware Developerkit das eine fixfertigen PCIe Chip enthält und normalerweise auch mit einem Developerdevicetreiber kommt und meist auch mit den Sources zu diesem Devicetreiber enthält, so dass Du sie selber an die Gegebenheiten vom Rest Deines Boards anpassen kannst.

Intel X38 oder AMD 780G chipsets sind eine Möglichkeit. Aber auch TI hat da sicher was und Freescale und NS wohl auch.

Und wenn Du ein fixfertiges Prototypboard mit FPGA PCIe Interface gefunden hast wird das hoffenltich auch mit einem Devicetreiber verfügbar sein. Sonst macht das ganze Board keinen Sinn.

Mögliche Boards so auf die Schnelle:

http://www.eurekatech.com/products/pci/pcie_board.htm mit sources für Treiber und so
http://www.enterpoint.co.uk/moelbryn/broaddown4.html
http://www.twinind.com/catalog.php?id=14#sc54 ebenfalls mit SDK verfügbar

Man könnte das auch mit Open Source und Open Hardware (z.B. http://www.opencores.org/) tun aber dafür muss man schon ziemlich viel verstehen und das kostet auch immer sehr viel Zeit. Ein komplettes Entwicklersystem von Firmen wie TI, NS, Freescale oder dergleichen mit allen benötigten Files und hoffentlich auch source Code ist da schon wesentlich schneller.

Zitat:Um wieder zurück zum Thema zu kommen. Ich suche eine Library, mit der ich dann auf den PCI-Express-Bus zugreifen kann. Soetwas muss es doch geben. Vielleicht kennt jemand ja ein Softwareschiede, wo man soetwas kaufen kann. Ich bin für jeden Tip dankbar.

Ich denke halt nicht, dass es da eine Library gibt die einfach so für PCIe allgemein funktioniert sondern höchstens für bestimmte PCIe Controllerbausteine. Die Zeit wo nicht nur der physikalische Bus sondern auch das logische Registerinterface zu einem Bus standardisiert ist, wird wohl noch lange nicht kommen.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.06.2008, 13:32
Beitrag #9

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
PCI-Express mit LabVIEW
Ok ich wuste halt nicht das jede Hardware sich anders verhält. Ich werde sicherlich ein Board kaufen. Xilinx bietet dort ja auch einige an. Ich hoffe mal das die Treiber dann auch ausgereift sind.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2011, 12:21
Beitrag #10

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
RE: PCI-Express mit LabVIEW
(25.06.2008 08:37 )rolfk schrieb:  Zwar kannst Du theoretisch mit InPort und OutPort auf die Register zugreifen

Genau das möchte ich machen, doch ich habe nicht die gerinste Idee wie ... kann mir da jemand helfen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: