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

📄 hfctlpmcdrvsetup.c

📁 vxworks下跳频控制的驱动
💻 C
字号:
/*            file number            */
/*
modification history
-,            2004, November, 23th      Release
-,            2005, March, 11th        fix device name string variable pHfctlDevName's Bug.
-,            2005, March, 11th        add HFCtlPmcDevUninstall().
-,            2005, April, 1st         add removing installed ISR operation in HFCtlPmcDevUninstall()  
*/

/****************************************************************
Module:       HFCtlPmcDrvSetup.c
Author:       
Description:  driver setup for Hop-Freq controller PMC card

        
****************************************************************/
/*   included file		*/
#include <vxworks.h>
#include <stdio.h>
#include <taskLib.h>
#include <syslib.h>
#include <fioLib.h>
#include "../../../include/drv/hF1394Pmc/hFCtlPmc.h"

/* define some macro */

/* Global Variables */
char        pHfctlDevName[20] = "";
int         iDrvNum = 0;
HFCTL_DEV   HFCtlPmcDev;
HFCTL_DEV   HFCtlPmcDevTemp;

int         iDebugEnable = 1;
   
/* Forward Declaration */

/******************************************************************************
TITLE:  	HFCtlPmcDevSetup
DESC:   	routine to setup Hop-Freq controller PMC card device and driver
PARAM:  	none
RETURN: 	OK          - operation runs successfully
         ERROR       - operation runs failed
******************************************************************************/
STATUS HFCtlPmcDevSetup(void)
{
   int iStatus;
  
   sprintf(pHfctlDevName, "/HFCtlPmc/0");
   
   iDrvNum = HFCtlDrv();

   if (iDebugEnable)
      {
      printf("HFCtlPmcDevSetup: iDrvNum = %d\n", iDrvNum);
      }

   iStatus = HFCtlDevCreate(pHfctlDevName, &HFCtlPmcDev);
   
   return(iStatus);
}

/******************************************************************************
TITLE:  	HFCtlPmcDevUninstall
DESC:   	routine to Uninstall Hop-Freq controller PMC card device and driver
PARAM:  	none
RETURN: 	OK          - operation runs successfully
         ERROR       - operation runs failed
******************************************************************************/
STATUS HFCtlPmcDevUninstall(void)
{
   int iStatus;
   DEV_HDR *pDevHdrRem = NULL;
   char **pTempNameTail = NULL;

   if (pHfctlDevName[0] == '\0')
      {
      printf("HFCtlPmcDevUninstall: device name ERROR.\n");
      return(ERROR);
      }

   pDevHdrRem = iosDevFind(pHfctlDevName, pTempNameTail);

   if (pDevHdrRem == NULL)
      {
      printf("HFCtlPmcDevUninstall: No device found.\n");
      return(ERROR);
      }

   iosDevDelete(pDevHdrRem);

   iStatus = iosDrvRemove(iDrvNum, TRUE);
   if (iStatus == ERROR)
      {
      printf("HFCtlPmcDevUninstall: the driver has open files.\n");
      }

   iStatus = HFCtlIntRemove();
   if (iStatus == ERROR)
      {
      printf("HFCtlPmcDevUninstall: can't remove installed ISR.\n");
      }

   HFCtlDrvParmReset();
   
   return(iStatus);
}

STATUS PciBaseAddrReadTest(void)
{
   int iStatus;

   iStatus = PciBaseAddrRead(&HFCtlPmcDevTemp, 0);

   return(iStatus);
}

/******************************************************************************
TITLE:  	hfCtlDevDataRdWrTest
DESC:   	test routine to read / write Local address space in HFCTL device 
PARAM:  	iOffset     -  offset address
         iReadTime   -  number of DW to read
         iDebug      -  switch to list Debug info
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevDataRdWrTest(int iOffset, int iReadTime, int iDebug, int iRdWrOn)
{
   int   i;
   int   iStatus;
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned long *pTempData;
   unsigned char *pTempCharData;
   unsigned long *pLocalSpace0Adrs;
   unsigned long *pLocalSpace1Adrs;

   if (iRdWrOn & 0x1)
      {
      /* start a direct slave read */
      pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0 + iOffset);

      if (iDebug)
         {
         printf("hfCtlDevLAS0Config1Test: pLocalSpace0Adrs = 0x%.8x\n", pLocalSpace0Adrs);
         }
   
      for(i = 0; i < iReadTime; i++)
         {
         printf("hfCtlDevLAS0Config1Test: 0x%.8x = 0x%.8x\n", &pLocalSpace0Adrs[i], pLocalSpace0Adrs[i]);
         }
      }

   if (iRdWrOn & 0x2)
      {
      /* start a direct slave write */
      pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0 + iOffset);

      if (iDebug)
         {
         printf("hfCtlDevLAS0Config1Test: pLocalSpace0Adrs = 0x%.8x\n", pLocalSpace0Adrs);
         }
   
      for(i = 0; i < iReadTime; i++)
         {
         pLocalSpace0Adrs[i] = 0xaaaa8888 + i * 5;
         }
      }

   return(OK);
}

⌨️ 快捷键说明

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