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

📄 hfctldevcfgfunc.c

📁 vxworks下跳频控制的驱动
💻 C
📖 第 1 页 / 共 2 页
字号:

   printf("hfCtlDevDMA0FuncConfigList: DMACSR0 = 0x%.8x\n", *pTempCharData);

   /* get DMA register DMAARB0 */
   iStatus = HFCtlPmcGetRegDmaArbitration(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMAARB0 = 0x%.8x\n", *pTempData);

   /* get DMA register DMATHR */
   iStatus = HFCtlPmcGetRegDmaThreshold(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMATHR = 0x%.8x\n", *pTempData);

   /* get DMA register DMADAC0 */
   iStatus = HFCtlPmcGetRegDmaDAC0(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMADAC0 = 0x%.8x\n", *pTempData);

   return(OK);
}


/******************************************************************************
TITLE:  	hfCtlDevLAS0ConfigTest
DESC:   	test routine of hfCtlDevLAS0ConfigList() and hfCtlDevLAS0Config() 
PARAM:  	fd       - file descriptor
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevLAS0ConfigTest(int iReadTime, int iDebug)
{
   int   i;
   int   iHfCtlFd;
   int   iStatus;
   char  hfCtldevName[15];
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned long *pTempData;
   unsigned char *pTempCharData;
   unsigned long *pLocalSpace0Adrs;
   unsigned long *pLocalSpace1Adrs;

	sprintf(hfCtldevName, "/HFCtlPmc/0");
   
   /* open the device */
   iHfCtlFd = open(hfCtldevName, O_RDWR, 0644);

   if (iHfCtlFd == ERROR)
      {
      printf("hfCtlDevLAS0ConfigTest: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = hfCtlDevLAS0ConfigList(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0ConfigTest: hfCtlDevLAS0ConfigList() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }
      
#if 0
   iStatus = hfCtlDevLAS0Config(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0ConfigTest: hfCtlDevLAS0Config() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }

/*   
   printf("hfCtlDevLAS0ConfigTest: AFTER config LAS0!\n");
*/     /* comment by chenxuhao at 2004-12-2 */
   
   iStatus = hfCtlDevLAS0ConfigList(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0ConfigTest: hfCtlDevLAS0ConfigList() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }
#endif /* if 0 */
   
   /* start a direct slave read */
   pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0);

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

   /* start a direct slave write */
   pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0);

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

   /* start a direct slave read */
   pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0);

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

   /* close the device */
   close(iHfCtlFd);

   return(OK);
}


/******************************************************************************
TITLE:  	hfCtlDevLAS0Config1Test
DESC:   	test routine of hfCtlDevLAS0ConfigList() and hfCtlDevLAS0Config() 
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 hfCtlDevLAS0Config1Test(int iOffset, int iReadTime, int iDebug, int iRdWrOn)
{
   int   i;
   int   iHfCtlFd;
   int   iStatus;
   char  hfCtldevName[15];
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned long *pTempData;
   unsigned char *pTempCharData;
   unsigned long *pLocalSpace0Adrs;
   unsigned long *pLocalSpace1Adrs;

	sprintf(hfCtldevName, "/HFCtlPmc/0");
   
   /* open the device */
   iHfCtlFd = open(hfCtldevName, O_RDWR, 0644);

   if (iHfCtlFd == ERROR)
      {
      printf("hfCtlDevLAS0Config1Test: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = hfCtlDevLAS0ConfigList(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0Config1Test: hfCtlDevLAS0ConfigList() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }
      
#if 0
   iStatus = hfCtlDevLAS0Config(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0Config1Test: hfCtlDevLAS0Config() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }

/*   
   printf("hfCtlDevLAS0Config1Test: AFTER config LAS0!\n");
*/     /* comment by chenxuhao at 2004-12-2 */
   
   iStatus = hfCtlDevLAS0ConfigList(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0Config1Test: hfCtlDevLAS0ConfigList() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }
#endif /* if 0 */
   
   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;
         }
      }

#if 0
   /* start a direct slave read */
   pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0);

   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]);
      }
#endif /* if 0 */

   /* close the device */
   close(iHfCtlFd);

   return(OK);
}

/******************************************************************************
TITLE:  	hfCtlDevLAS0ConfigListTest
DESC:   	test routine of hfCtlDevLAS0ConfigList()  
PARAM:  	fd       - file descriptor
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevLAS0ConfigListTest()
{
   int   i;
   int   iHfCtlFd;
   int   iStatus;
   char  hfCtldevName[15];
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned long *pTempData;
   unsigned char *pTempCharData;
   unsigned long *pLocalSpace0Adrs;
   unsigned long *pLocalSpace1Adrs;

	sprintf(hfCtldevName, "/HFCtlPmc/0");
   
   /* open the device */
   iHfCtlFd = open(hfCtldevName, O_RDWR, 0644);

   if (iHfCtlFd == ERROR)
      {
      printf("hfCtlDevLAS0ConfigTest: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = hfCtlDevLAS0ConfigList(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevLAS0ConfigTest: hfCtlDevLAS0ConfigList() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   /* close the device */
   close(iHfCtlFd);

   return(OK);
}

/******************************************************************************
TITLE:  	hfCtlDevDMA0FuncConfigListTest
DESC:   	test routine of hfCtlDevDMA0FuncConfigList()  
PARAM:  	NONE
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevDMA0FuncConfigListTest()
{
   int   i;
   int   iHfCtlFd;
   int   iStatus;
   char  hfCtldevName[15];
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned long *pTempData;
   unsigned char *pTempCharData;
   unsigned long *pLocalSpace0Adrs;
   unsigned long *pLocalSpace1Adrs;

	sprintf(hfCtldevName, "/HFCtlPmc/0");
   
   /* open the device */
   iHfCtlFd = open(hfCtldevName, O_RDWR, 0644);

   if (iHfCtlFd == ERROR)
      {
      printf("hfCtlDevDMA0FuncConfigListTest: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = hfCtlDevDMA0FuncConfigList(iHfCtlFd);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDMA0FuncConfigListTest: hfCtlDevDMA0FuncConfigList() failed!\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   /* close the device */
   close(iHfCtlFd);

   return(OK);
}

/******************************************************************************
TITLE:  	hfCtlDevDMA0FuncConfigListTest
DESC:   	test routine of hfCtlDevDMA0FuncConfig()  
PARAM:  	iRead          -  switch to read or write
         iDmaByteSize   -  dma size in Bytes
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevDMA0FuncConfigTest(int iRead, int iDmaByteSize)
{
   int   i;
   int   iHfCtlFd;
   int   iStatus;
   char  hfCtldevName[15];
   unsigned long ulDmaDataPciAdrs;
   unsigned long *pDmaDataAdrs;
   unsigned long *pLocalSpace0Adrs;

   HFCTL_PCIDMA  hfCtlPciDma;

   pDmaDataAdrs = malloc(iDmaByteSize);

   if (pDmaDataAdrs == NULL)
      {
      printf("hfCtlDevDMA0FuncConfigTest: memory allocation failed!\n");
      return(ERROR);
      }

   bfill((unsigned char *)pDmaDataAdrs, iDmaByteSize, 0);

#if 0
   for(i = 0; i < (iDmaByteSize / 4); i++)
      {
      printf("hfCtlDevDMA0FuncConfigTest: pDmaDataAdrs[%d] = 0x%.8x\n", i, pDmaDataAdrs[i]);
      }
#endif /* if 0 */

   ulDmaDataPciAdrs = (unsigned long)LOCAL2PCI_MEM((unsigned long)pDmaDataAdrs);

#if 0
   printf("hfCtlDevDMA0FuncConfigTest: pDmaDataAdrs = 0x%.8x\n", pDmaDataAdrs);
   printf("hfCtlDevDMA0FuncConfigTest: ulDmaDataPciAdrs = 0x%.8x\n", ulDmaDataPciAdrs);
#endif /* if 0 */

	sprintf(hfCtldevName, "/HFCtlPmc/0");
   
   /* open the device */
   iHfCtlFd = open(hfCtldevName, O_RDWR, 0644);

   if (iHfCtlFd == ERROR)
      {
      printf("hfCtlDevDMA0FuncConfigTest: Unable to open HfCtlDev device!\n");
      free(pDmaDataAdrs);
      return(ERROR);
      }

   if (iRead)
      {
      printf("hfCtlDevDMA0FuncConfigTest: iRead = %d\n", iRead);

      hfCtlPciDma.pciAddress = ulDmaDataPciAdrs;
      hfCtlPciDma.LocalAddress = 0;
      hfCtlPciDma.count = iDmaByteSize;
      hfCtlPciDma.lockAdrs = FALSE;
      hfCtlPciDma.Read = TRUE;

      iStatus = hfCtlDevDMA0FuncConfig(iHfCtlFd, &hfCtlPciDma);
      if (iStatus == ERROR)
         {
         printf("hfCtlDevDMA0FuncConfigTest: hfCtlDevDMA0FuncConfig() failed!\n");
         free(pDmaDataAdrs);
         close(iHfCtlFd);
         return(ERROR);
         }

#if 0
      for(i = 0; i < (iDmaByteSize / 4); i++)
         {
         printf("hfCtlDevDMA0FuncConfigTest: pDmaDataAdrs[%d] = 0x%.8x\n", i, pDmaDataAdrs[i]);
         }
#endif /* if 0 */

      cacheInvalidate(DATA_CACHE, pDmaDataAdrs, iDmaByteSize);

      for(i = 0; i < (iDmaByteSize / 4); i++)
         {
         printf("hfCtlDevDMA0FuncConfigTest: pDmaDataAdrs[%d] = 0x%.8x\n", i, pDmaDataAdrs[i]);
         }
      }
   else
      {
      for(i = 0; i < (iDmaByteSize / 4); i++)
         {
         pDmaDataAdrs[i] = 0x12345678 + i * 8;
         }

      cacheFlush(DATA_CACHE, pDmaDataAdrs, iDmaByteSize);

      for(i = 0; i < (iDmaByteSize / 4); i++)
         {
         printf("hfCtlDevDMA0FuncConfigTest: pDmaDataAdrs[%d] = 0x%.8x\n", i, pDmaDataAdrs[i]);
         }
      
      hfCtlPciDma.pciAddress = ulDmaDataPciAdrs;
      hfCtlPciDma.LocalAddress = 6 * 4;
      hfCtlPciDma.count = iDmaByteSize;
      hfCtlPciDma.lockAdrs = FALSE;
      hfCtlPciDma.Read = FALSE;

      iStatus = hfCtlDevDMA0FuncConfig(iHfCtlFd, &hfCtlPciDma);
      if (iStatus == ERROR)
         {
         printf("hfCtlDevDMA0FuncConfigTest: hfCtlDevDMA0FuncConfig() failed!\n");
         free(pDmaDataAdrs);
         close(iHfCtlFd);
         return(ERROR);
         }

      /* start a direct slave read */
      pLocalSpace0Adrs = (unsigned long *)(HFCtlPmcDev.boardDataSpace0);
   
      for(i = 0; i < (iDmaByteSize / 4); i++)
         {
         printf("hfCtlDevLocalSpace0ReadTest: 0x%.8x = 0x%.8x\n", &pLocalSpace0Adrs[i + 6], pLocalSpace0Adrs[i + 6]);
         }
      }
   
   /* free the memory */
   free(pDmaDataAdrs);

   /* close the device */
   close(iHfCtlFd);

   return(OK);
}

⌨️ 快捷键说明

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