Showing results for 
Search instead for 
Did you mean: 

Build Installer for Executable for FPGA on cRIO9034



I am building a LabVIEW executable which utilizes the FPGA in the cRIO-9034.


To run my executable on a PC, I must install the LabVIEW FPGA module. However, I cannot make an installer which includes this.

How can I make an installer for my program if this cRIO doesn't support real-time VIs?

0 Kudos
Message 1 of 5

I'm not sure what you mean by an "installer".  The code on the cRIO is the "Real-time" part of a LabVIEW Real-Time Project, which creates code that runs on both a PC Host and a cRIO Target.  Within the RT Project, you can build an Executable and deploy it to the Host.  If you have the target cRIO connected. you can simply copy the .RTexe file to the cRIO's file system, and set its initialization file to "point" to the executable's location and name it as the Start-up VI.  This article may be relevant for you.


Bob Schor

0 Kudos
Message 2 of 5

I am making a LabVIEW project which is a multi-device DAQ system. I have a cRIO-9034 & a NI USB-7856R (an FPGA) which are part of the program. The NI USB-7856R strictly uses LabVIEW FPGA, not real-time. However, I am making an .EXE (under build specifications) so that I do not need to distribute my code everywhere. I would like to give this program to people who do not necessarily have LabVIEW installed. Hence, I am making an "Installer" (.msi) (under build specifications). 


For my application to work though, the end-user needs to have LabVIEW FPGA module installed, as the PC loads the bitfile and is responsible for transferring data from the FPGA (through DMA FIFOs). However, I am unable to have the FPGA module be included as an additional installer in my .msi


Is there anyway for me to include the required files for my executable to work without the FPGA module installed? (It works fine if it is installed)


Typically, one would have the Real-Time cRIO VI(or executable) pull data off of the FPGA, and then transfer the data from cRIO Real-Time VI to the PC executable. However, the cRIO9034 (or the USB-7856R) doesn't have the ability to have a VI do this (I also would like my application to be 64-bit, which I am able to achieve currently by dynamically loading bitfiles and coding all the FPGA VIs preemptively in 32-bit, then switching to 64-bit).


Any advice?

0 Kudos
Message 3 of 5



     Thank you for your response.  I have never encountered a device such as the USB-7856R, and even after spending a few minutes searching NI's site for more information on this device, I still don't understand how it works nor how to interact with it.  It almost sounds like a device that you "program in the field" to have it do a specific DAQ task over and over again, one that can be "static" (i.e. you load it into the FPGA and it "stays there" through Power Cycles semi-forever, allowing you to create a "specialized single-purpose DAQ" device.


     If this is true, then there must be a method (which my brief reading failed to uncover) by which you, the Developer, deploy the BitFile to this device.  If you can figure out how to do this programmably using LabVIEW, then you've basically "created your BitFile Installer".


Bob Schor

0 Kudos
Message 4 of 5

For my program, the USB-7856R utilizes several bitfiles which need to by dynamically loaded in for different tasks, so a static bitfile approach would not work. Additionally, I still need to interact with the DMA FIFOs to pull data from the FPGA as well as write to front panel objects on the FPGA VI for various tasks. Thus, I would need someway to dynamically load bitfiles, interact with the DMA FIFOs, and interact with the front panel objects.


Effectively, I need a "runtime" version of the LabVIEW FPGA module.


Any other suggestions?


0 Kudos
Message 5 of 5