⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pciini.cpp

📁 Vxworks 下的视频采集程序
💻 CPP
字号:
#include<vxworks.h>
#include<syslib.h>
#include"pciini.h"
//#include"xdefine.h"
      
static  unsigned char       _cBus;
static  unsigned char       _cDeviceNO;
static  unsigned char       _funID;
//static  WORD                _wDeviceIndex= NULL;
WORD PCI_ReadDWORD (  UINT nREG, DWORD * pdwVal )
{
   if(pciConfigInLong(_cBus,_cDeviceNO,/*_funID*/PCI_FUNCTION_ID,nREG,pdwVal)==TRUE){
    	printf(" inok ");
   	return TRUE;}
    else{
    	printf(" inerr ");
   	return FALSE;}
//	(*pdwVal)=sysInByte(nREG);
	/*unsigned char       cc;
    DWORD               dd, dwTemp;
    WORD                ll, hh;

    nREG &= 0xFFFC;
    _asm
    {
        mov     ah, PCI_FUNCTION_ID
        mov     al, READ_CONFIG_DWORD
        mov     bh, _cBus
        mov     bl, _cDeviceNO
        mov     di, nREG
        int     1Ah
        mov     cc, ah
;        mov     dd, ecx
    }
    _getecx ( & dwTemp );

    PCI_ReadWORD ( nREG, & ll );
    PCI_ReadWORD ( nREG+ 2, & hh );
    dd= MAKELONG ( ll, hh );

    if ( dd != dwTemp )
        assert  ( NULL );
    _PCI_CheckStatus ( cc );

    * pdwVal= dwTemp;

///    * pDword= dd;
    return cc;*/
}
//***************************************************************************
//  Function    :   ::PCI_GetIOBaseIdx
//  Abstract    :
//  Arguments   :   bIdx        : bIdxth IO-Port, Read first if bIdx= NULL.
//  Return      :   FALSE       : if failure
//  Side Effect :
//  Notes       :
//***************************************************************************
WORD PCI_GetIOBaseIdx ( BYTE bIdx, DWORD * pdwWord )
{
    DWORD               dwTemp;
    WORD                nAddr;

    int                 i, iCount;
    unsigned char       cc;
    	if(pciFindDevice(0x1050,0x9921,0,&_cBus,&_cDeviceNO,&_funID/*PCI_FUNCTION_ID*/)!=OK)
	return FALSE;	
    nAddr= 0x10;
    iCount= NULL;
    for ( i= 0; i< 6; i++ )
    {
        cc= PCI_ReadDWORD ( (UINT)nAddr, & dwTemp );
        printf(" %x",dwTemp);
        if ( ! dwTemp )
            continue;

        if ( dwTemp & 0x00000001 )
        {
            iCount++;
            dwTemp &= 0xFFFFFFFE;
            printf ( "Get IO base%d= %lx;\n", iCount, dwTemp );
            printf("******%x,%x,%x\n",_cBus,_cDeviceNO,_funID);

            if ( iCount == bIdx )
                break;

            if ( ! bIdx )
                break;
        }

        nAddr+= 0x04;
        dwTemp= NULL;   // clear it
    }

    * pdwWord= dwTemp;
    if ( dwTemp )
        return TRUE;
    else
        return FALSE;
}

WORD PCI_GetIOBase ( DWORD * pdwWord )
{
    return  PCI_GetIOBaseIdx ( NULL, pdwWord );
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -