LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Is PCI Map function of ETS working correctly?

- Goal : ETS program controls custom PCI card

 

- Development Environment

Windows XP 32bit

LabWindows/CVI 2012 + LabWindows/CVI Realtime Module + VISA 5.2 Full

(LabView F3 patched)

 

- Problem

VISA API function which maps PCI BAR memory does not work in ETS.

 

 

- Install procedure

: Install ETS software to Target PC (format with USB boot disk, and software install with MAX)

→ VISA Driver Wizard make PCI driver files (ini and inf files) in the Host PC

→ Copy the ini and inf files to ETS target (under \ni-rt\system\)

→ Check the Detection of PCI card in ETS

→ Execute program from Host to Target

 

 

- My test code

: working in Windows, but not working in ETS

 

A-1. Test code with Windows (Working Correctly)

int main (int argc, char *argv[])
{ 
 status = viOpenDefaultRM (&defaultRM);
 status = viOpen (defaultRM, KITECH_PCI_DEVICE, VI_NULL, VI_NULL, &PLX9030);
 
 status = viGetAttribute (PLX9030, VI_ATTR_PXI_MEM_BASE_BAR2, &BAR2_Addr_Base);
 status = viOut32(PLX9030, VI_PXI_BAR2_SPACE, 0x1FFFC , WriteData);
}

A-2. Test code with Windows (Working Correctly)

int main (int argc, char *argv[])
{ 
 status = viOpenDefaultRM (&defaultRM);
 status = viOpen (defaultRM, KITECH_PCI_DEVICE, VI_NULL, VI_NULL, &PLX9030);

 status = viMapAddress(PLX9030, VI_PXI_BAR2_SPACE, 0, 0x20000, VI_FALSE, VI_NULL, &address);

 DataAddress = (ViAddr)((ViPByte)address + 0x1FFFC);
 viPoke32(PLX9030,DataAddress,Write);
 viPeek32(PLX9030,DataAddress,&Read);
}

 

B-1. Test code with ETS (all success, but physical memory bus control signal is not generated)

void CVIFUNC_C RTmain (void)
{
 status = viOpenDefaultRM (&defaultRM);
 status = viOpen (defaultRM, KITECH_PCI_DEVICE, VI_NULL, VI_NULL, &PLX9030);
 
 status = viGetAttribute (PLX9030, VI_ATTR_PXI_MEM_BASE_BAR2, &BAR2_Addr_Base);
 status = viOut32(PLX9030, VI_PXI_BAR2_SPACE, 0x1FFFC , WriteData);
}

B-2. Test code with ETS (all success, physical memory bus control signal is not generated)

void CVIFUNC_C RTmain (void)
{
 status = viOpenDefaultRM (&defaultRM);
 status = viOpen (defaultRM, KITECH_PCI_DEVICE, VI_NULL, VI_NULL, &PLX9030);
 
 status = viMapAddress(PLX9030, VI_PXI_BAR2_SPACE, 0, 0x20000, VI_FALSE, VI_NULL, &address);

 DataAddress = (ViAddr)((ViPByte)address + 0x1FFFC);
 viPoke32(PLX9030,DataAddress,Write);
 viPeek32(PLX9030,DataAddress,&Read); }

 

 

 

 

- Questions

 

: Are the generated driver files fit to ETS?

  (If not, pleae let me know how to make the driver files or modify the files.)

 

  Does the CVI 2012's PCI map function works in the ETS?

 

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

It's the processor's problem.

Core 2 duo series is working, but i7 series is not working.

So I'm woring with Core 2 duo board.

 

 

I have a doubt about the difference of processor's architecture.

 

who can solve this problem?

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