02-20-2013 07:12 AM
- 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?
07-22-2014 01:05 AM
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?