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

📄 hfctldevaccesstest.c

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

   if (iStatus == ERROR)
      {
      printf("hfCtlDevLocalSpace0ReadTest: HFCtlPmcSetRegLocalBusSpace0RegionDesc() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   /* get Local configuration register LBRD0 */
   iStatus = HFCtlPmcGetRegLocalBusSpace0RegionDesc(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevLocalSpace0ReadTest: HFCtlPmcGetRegLocalBusSpace0RegionDesc() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevLocalSpace0ReadTest: after set LBRD0, LBRD0 = 0x%.8x\n", *pTempData);
      }

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

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

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

   if (iDevTestDebug)
      {
      printf("hfCtlDevLocalSpace0ReadTest: 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 + 0x1000);

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

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

STATUS hfCtlDevRegLMISC2RWTest(int iReadTime)
{
   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("hfCtlDevRegLMISC2RWTest: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   /* get Local configuration register LMISC2 */
   if (iDevTestDebug)
      {
      printf("hfCtlDevRegLMISC2RWTest: pTempCharData = 0x%.8x = 0x%.2x\n", pTempCharData, *pTempCharData);
      }

   iStatus = HFCtlPmcGetRegLocalMisc2(iHfCtlFd, pTempCharData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegLMISC2RWTest: HFCtlPmcGetRegLocalMisc2() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegLMISC2RWTest: LMISC2 = 0x%.8x\n", *pTempCharData);
      }

   /* set Local configuration register LMISC2 */
   ucRegCharData = 0x01;

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegLMISC2RWTest: ucRegCharData = 0x%.8x\n", ucRegCharData);
      }

   iStatus = HFCtlPmcSetRegLocalMisc2(iHfCtlFd, ucRegCharData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegLMISC2RWTest: HFCtlPmcSetRegLocalMisc2() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   /* get Local configuration register LMISC2 */
   iStatus = HFCtlPmcGetRegLocalMisc2(iHfCtlFd, pTempCharData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegLMISC2RWTest: HFCtlPmcGetRegLocalMisc2() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegLMISC2RWTest: after set LMISC2, LMISC2 = 0x%.8x\n", *pTempCharData);
      }

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

STATUS hfCtlDevRegEnablePciInt(int iReadTime)
{
   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("hfCtlDevRegEnablePciInt: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = HFCtlPmcGetRegInterruptCtlStatus(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegEnablePciInt: HFCtlPmcGetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegEnablePciInt: INTCSR = 0x%.8x\n", *pTempData);
      }

   ulRegData = (*pTempData) | DATA_BIT8 | DATA_BIT11;

   iStatus = HFCtlPmcSetRegInterruptCtlStatus(iHfCtlFd, ulRegData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegEnablePciInt: HFCtlPmcSetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   iStatus = HFCtlPmcGetRegInterruptCtlStatus(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegEnablePciInt: HFCtlPmcGetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegEnablePciInt: after set INTCSR, INTCSR = 0x%.8x\n", *pTempData);
      }

#if 0
   taskDelay(10);

   ulRegData = (*pTempData) & (~DATA_BIT8) & (~DATA_BIT11);
   
   iStatus = HFCtlPmcSetRegInterruptCtlStatus(iHfCtlFd, ulRegData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegEnablePciInt: HFCtlPmcSetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   iStatus = HFCtlPmcGetRegInterruptCtlStatus(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegEnablePciInt: HFCtlPmcGetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegEnablePciInt: after clear INTCSR, INTCSR = 0x%.8x\n", *pTempData);
      }
#endif /* if 0 */

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

STATUS hfCtlDevRegDisablePciInt(int iReadTime)
{
   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("hfCtlDevRegDisablePciInt: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = HFCtlPmcGetRegInterruptCtlStatus(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegDisablePciInt: HFCtlPmcGetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegDisablePciInt: INTCSR, INTCSR = 0x%.8x\n", *pTempData);
      }

   taskDelay(10);

   ulRegData = (*pTempData) & (~DATA_BIT8) & (~DATA_BIT11);
   
   iStatus = HFCtlPmcSetRegInterruptCtlStatus(iHfCtlFd, ulRegData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegDisablePciInt: HFCtlPmcSetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   iStatus = HFCtlPmcGetRegInterruptCtlStatus(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegDisablePciInt: HFCtlPmcGetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegDisablePciInt: after clear INTCSR, INTCSR = 0x%.8x\n", *pTempData);
      }

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

STATUS hfCtlDevRegReadPciIntCSR()
{
   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("hfCtlDevRegReadPciIntCSR: Unable to open HfCtlDev device!\n");
      return(ERROR);
      }

   iStatus = HFCtlPmcGetRegInterruptCtlStatus(iHfCtlFd, pTempData);

   if (iStatus == ERROR)
      {
      printf("hfCtlDevRegReadPciIntCSR: HFCtlPmcGetRegInterruptCtlStatus() failed.\n");
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevRegReadPciIntCSR: INTCSR, INTCSR = 0x%.8x\n", *pTempData);
      }

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

   return(OK);
}

STATUS hfCtlDevDmaReadTest(int iOffset, int iDmaByteSize)
{
   int   i;
   int   iDmaTempSize;
   int   iWaitCount;
   int   iHfCtlFd;
   int   iStatus;
   char  hfCtldevName[15];
   unsigned long ulDmaDataPciAdrs;
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned char ucTemp;
   unsigned char ucTemp1;   
   unsigned long *pTempData;
   unsigned char *pTempCharData;
   unsigned long *pLocalSpace0Adrs;
   unsigned long *pLocalSpace1Adrs;
   unsigned long *pDmaDataAdrs;

   iDmaTempSize = iDmaByteSize;

   pDmaDataAdrs = malloc(iDmaByteSize);

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

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

   printf("hfCtlDevDmaReadTest: pDmaDataAdrs = 0x%.8x\n", pDmaDataAdrs);
   printf("hfCtlDevDmaReadTest: ulDmaDataPciAdrs = 0x%.8x\n", ulDmaDataPciAdrs);

#if 0
   if (iDevTestDebug)
      {
      printf("hfCtlDevDmaReadTest: pDmaDataAdrs = 0x%.8x\n", pDmaDataAdrs);

      for(i = 0; i < (iDmaByteSize / 4); i++)
         {
         pDmaDataAdrs[i] = 0xabcdefab + i * 5;
         }

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

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

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

   /* get Local configuration register LAS0BA */
   iStatus = HFCtlPmcGetRegLocalAdrsSpace0BaseAdrs(iHfCtlFd, pTempData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalAdrsSpace0BaseAdrs() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevDmaReadTest: LAS0BA = 0x%.8x\n", *pTempData);
      }

   /* set Local configuration register LAS0BA bit 0 */
   ulRegData = (*pTempData) | 0x1;

   iStatus = HFCtlPmcSetRegLocalAdrsSpace0BaseAdrs(iHfCtlFd, ulRegData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegLocalAdrsSpace0BaseAdrs() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   /* get Local configuration register LAS0BA */
   iStatus = HFCtlPmcGetRegLocalAdrsSpace0BaseAdrs(iHfCtlFd, pTempData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalAdrsSpace0BaseAdrs() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevDmaReadTest: after set LAS0BA, LAS0BA = 0x%.8x\n", *pTempData);
      }

   /* get Local configuration register MARBR */
   iStatus = HFCtlPmcGetRegModeArbitration(iHfCtlFd, pTempData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegModeArbitration() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevDmaReadTest: MARBR = 0x%.8x\n", *pTempData);
      }

   /* set Local configuration register MARBR */
   ulRegData = 0x00210010;

   iStatus = HFCtlPmcSetRegModeArbitration(iHfCtlFd, ulRegData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegModeArbitration() failed.\n");

⌨️ 快捷键说明

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