Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

IMAQ

I have an application written around the NI-1428 cameralink frame capture card. We are trying to move this system (card + software) to a 64-bit platform, (XP 64 bit) and when I run the application and initiate a frame capture sequence I get the message:

 

"IMAQ Error: This 32-bit device is operating on a 64 bit OS with more than 3GB physical memory. This configuration could allocate 64 bit memory which is unsupported by the device. To solve this problem reduce the amount of physical memory."

 

I have installed the newest IMAQ that supports 64 bit. The NI-1428 card was purchased 2 weeks ago, so it is using the latest technology.

 

My question: Is there any way to use the 1428 card on my computer without removing memory from the computer?

 

Thanks, 

dbcavan

 

 

0 Kudos
Message 1 of 3
(2,974 Views)

Hi dbcavan,

 

We actually have very limited number of drivers and software that are supported on XP 64. The reason for this is that XP 64 is not widely used. However, we have some limited support on Vista 64 with the most current version of IMAQ. To see how to use IMAQ with Vista 64 take a look here.

0 Kudos
Message 2 of 3
(2,955 Views)

dbcavan,

 

Sorry, but Olivia's advice might not quite set you on the right track. While it is true that we do not officially support XP64, the behavior of the driver is the same between both of them.

 

What you are running into is that the PCI and PXI 1428 boards have only a 32-bit DMA engine onboard as they were introduced quite some time ago. Newer boards such as the PCIe-1427, PCIe-1429, and PCIe-1430 all have 64-bit DMA support (or can be firmware upgraded to support this). I apologize that your sales rep did not know this or did not point you to one of our KBs about the 1428's 64-bit limitations (such as http://digital.ni.com/public.nsf/allkb/8F88EFCCB94AE3408625722900579A4D?OpenDocument).

 

With only 32-bit DMA capability, the IMAQ driver must ensure that all image buffers are allocated in the <32-bit memory address range. Since the IMAQ C API allows users to allocate their own buffers directly, there is no way to ensure via the C API that those buffers will always be located in the correct range. Rather than allow the user's application to "sometimes" work with the possibility of occasionally failing with an error while locking all the buffers if it detects the memory happens to be outside of the <32-bit range, we preemptively disallow this configuration. In other development environments such as LabVIEW, the API does not give you explicit control over buffer allocation, allowing the driver to allocate buffers internally and ensure that image buffers are always located <32-bits. This is why we _do_ support acquiring on a 32-bit board with >3GB of memory when you use LabVIEW but not C.

 

Now, assuming you can modify your application to go through the driver for allocating image buffers via imgCreateBuffer() rather than allocating them yourself, I believe we have some workarounds to tell the driver to bypass this error condition and let you acquire. Let me know if you are interested in this.

 

Again, I'm sorry that you recently purchased the 1428 board without the full understanding of its 64-bit support, but hopefully we can get you up and running.

 

Eric

0 Kudos
Message 3 of 3
(2,946 Views)