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

📄 hfctldevaccesstest.c

📁 vxworks下跳频控制的驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   /* 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: after set MARBR, MARBR = 0x%.8x\n", *pTempData);
      }

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

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

   /* set Local configuration register BIGEND */
   ucRegCharData = 0xee; /*0x00;*/

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

   iStatus = HFCtlPmcSetRegBigEndianDesc(iHfCtlFd, ucRegCharData);

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

   /* get Local configuration register BIGEND */
   iStatus = HFCtlPmcGetRegBigEndianDesc(iHfCtlFd, pTempCharData);

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

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

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

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

   /* set Local configuration register LMISC1 */
   ucRegCharData = 0x05;

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

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

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

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

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

   /* set Local configuration register LMISC2 */
   ucRegCharData = 0x01;
   iStatus = HFCtlPmcSetRegLocalMisc2(iHfCtlFd, ucRegCharData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegLocalMisc2() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

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

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

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

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

   /* set Local configuration register LBRD0 */
   ulRegData = 0x80430303;

#if 0
   ulRegData = 0x80430343; /* enable READY */
#endif /* if 0 */

   iStatus = HFCtlPmcSetRegLocalBusSpace0RegionDesc(iHfCtlFd, ulRegData);

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

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

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

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

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

   /* set DMA register DMAMODE0 */
/*
   ulRegData = 0x00030843;
*/
   ulRegData = 0x00030043;  /* the local addr is incremented */
   iStatus = HFCtlPmcSetRegDmaChannel0Mode(iHfCtlFd, ulRegData);

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

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

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

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

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

   /* set DMA register DMAPADR0 */
   ulRegData = ulDmaDataPciAdrs;
   iStatus = HFCtlPmcSetRegDmaChannel0PciAdrs(iHfCtlFd, ulRegData);

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

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

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

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

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

   /* set DMA register DMALADR0 */
   ulRegData = iOffset;
   iStatus = HFCtlPmcSetRegDmaChannel0LocalAdrs(iHfCtlFd, ulRegData);

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

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

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

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

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

   /* set DMA register DMASIZ0 */
   ulRegData = iDmaByteSize;
   iStatus = HFCtlPmcSetRegDmaChannel0TransferSize(iHfCtlFd, ulRegData);

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

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

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

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

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

   /* set DMA register DMADPR0 */
   ulRegData = 0x00000008; /* Local to PCI */
   iStatus = HFCtlPmcSetRegDmaChannel0DescPointer(iHfCtlFd, ulRegData);

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

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

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

   /* get DMA register DMACSR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(iHfCtlFd, pTempCharData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0CmdStatus() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   if (iDevTestDebug)
      {
      printf("hfCtlDevDmaReadTest: DMACSR0 = 0x%.2x\n", *pTempCharData);
      }

   /* set DMA register DMACSR0 */
   ucRegCharData = (*pTempCharData) | DATA_BIT0;  /* enable DMA channel 0 */
   iStatus = HFCtlPmcSetRegDmaChannel0CmdStatus(iHfCtlFd, ucRegCharData);

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

   /* get DMA register DMACSR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(iHfCtlFd, pTempCharData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0CmdStatus() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

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

   /* start DMA channel 0 */
   ucRegCharData = (*pTempCharData) | DATA_BIT1;  /* start DMA channel 0 */

   if (iDevTestDebug)
      {
      printf("hfCtlDevDmaReadTest: before start DMA ucRegCharData = 0x%.2x\n", ucRegCharData);
      }
   iStatus = HFCtlPmcSetRegDmaChannel0CmdStatus(iHfCtlFd, ucRegCharData);
   if (iStatus == ERROR)
      {
      printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0CmdStatus() failed.\n");
      free(pDmaDataAdrs);
      close(iHfCtlFd);
      return(ERROR);
      }

   /* wait DMA to end */
   ucTemp = 0;
   while((!ucTemp) && (iWaitCount < 30))
      {
      taskDelay(5);

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

      ucTemp = (*pTempCharData) & DATA_BIT4;

⌨️ 快捷键说明

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