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

📄 gdmatest_omap32.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 5 页
字号:
                    {
                    UWORD8* MemPtr;
                    i = BlockSize;
                    MemPtr = (UWORD8*)Address;
                    if ((UWORD8)(*MemPtr++) != (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i))
                      {
                      DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                  (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                      rtn_status = NOT_OK;
                      break;
                      }
                    else if ((UWORD8)(*MemPtr++) != (UWORD8)(DMAT_GeneratePattern(Chptr->Pattern,i)>>8))
                      {
                      DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                  (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                      rtn_status = NOT_OK;
                      break;
                      }
                    }
                  else
                    {
                    UWORD16* MemPtr;
                    i = BlockSize;
                    MemPtr = (UWORD16*)Address;
                    if ((UWORD16)(*MemPtr++) != (UWORD16)DMAT_GeneratePattern(Chptr->Pattern,i))
                      {
                      DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                  (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                      rtn_status = NOT_OK;
                      break;
                      }
                    }
                  break;
                  }  // End of case DMA_TYPE_16_BITS
 
                case DMA_TYPE_8_BITS:
                  {
                  UWORD8* MemPtr;
                  i = BlockSize;
                  MemPtr = (UWORD8*)Address;
                  if ((UWORD8)(*MemPtr++) != (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i))
                    {
                    DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                    rtn_status = NOT_OK;
                    }
                  break;
                  }  // End of case DMA_TYPE_8_BITS
                }  // End of switch(Chptr->TypeSize)
              break;
              }  // End of case : VERIFY_MEM
            }  // End of switch(MemMode)
          break;
          }  // End of case DMA_ADD_CONSTANT
 

//--------------------------------------------------------------------------------
        case DMA_ADD_POSTINC:
          {
          switch(MemMode)
            {
            case INITIALIZE_MEM:
              {
              switch(Chptr->TypeSize)
                {
                case DMA_TYPE_32_BITS:
                  {
                  switch(AddressAlign)
                    {
                    case 0x00: // Then 32-bit aligned
                      {
                      UWORD32* MemPtr;
                      for (i = 0; i < BlockSize ; i++)
                        {
                        if (i == 0)
                          {
                          MemPtr = (UWORD32*)Address;
                          }
                        *MemPtr++ = DMAT_GeneratePattern(Chptr->Pattern,i);
                        }
                      break;
                      }
                    case 0x02: // Then 16-bit aligned
                      {
                      UWORD16* MemPtr;
                      for (i = 0; i < (BlockSize * 2) ; i++)
                        {
                        if (i == 0)
                          {
                          MemPtr = (UWORD16*)Address;
                          }
                        *MemPtr++ = (UWORD16)DMAT_GeneratePattern(Chptr->Pattern,i/2);
                        }
                      break;
                      }
                    case 0x01: // Then 8-bit aligned
                      {
                      UWORD8* MemPtr;
                      for (i = 0; i < (BlockSize * 4) ; i++)
                        {
                        if (i == 0)
                          {
                          MemPtr = (UWORD8*)Address;
                          }
                        *MemPtr++ = (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i/4);
                        }
                      break;
                      }
                    }  // End of switch(SrcAddressAlign)
                  break;
                  }  // End of case DMA_TYPE_32_BITS
 
                case DMA_TYPE_16_BITS:
                  {
                  if (AddressAlign == 0x01)  // Then 8-bit aligned
                    {
                    UWORD8* MemPtr;
                    for (i = 0; i < (BlockSize * 2) ; i++)
                      {
                      if (i == 0)
                        {
                        MemPtr = (UWORD8*)Address;
                        }
                      *MemPtr++ = (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i/2);
                      }
                    break;
                    }
                  else  // Then 16-bit aligned
                    {
                    UWORD16* MemPtr;
                    for (i = 0; i < BlockSize; i++)
                      {
                      if (i == 0)
                        {
                        MemPtr = (UWORD16*)Address;
                        }
                      *MemPtr++ = (UWORD16)DMAT_GeneratePattern(Chptr->Pattern,i);
                      }
                    break;
                    }
                  }  // End of case DMA_TYPE_16_BITS
 
                case DMA_TYPE_8_BITS:
                  {
                  UWORD8* MemPtr;
                  for (i = 0; i < BlockSize; i++)
                    {
                    if (i == 0)
                      {
                      MemPtr = (UWORD8*)Address;
                      }
                    *MemPtr++ = (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i);
                    }
                  break;
                  }  // End of case DMA_TYPE_8_BITS
                } //  End of switch(Chptr->TypeSize)
              break;
              }  // End of case : INITIALIZE_MEM

            case VERIFY_MEM:
              {
              switch(Chptr->TypeSize)
                {
                case DMA_TYPE_32_BITS:
                  {
                  switch(AddressAlign)
                    {
                    case 0x00: // Then 32-bit aligned
                      {
                      UWORD32* MemPtr;
                      for (i = 0; i < BlockSize; i++)
                        {
                        if (i == 0)
                          {
                          MemPtr = (UWORD32*)Address;
                          }
                        if (*MemPtr != DMAT_GeneratePattern(Chptr->Pattern,i))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                          rtn_status = NOT_OK;
                          break;
                          }
                        MemPtr++;
                        }
                      break;
                      }
                    case 0x02: // Then 16-bit aligned
                      {
                      UWORD16* MemPtr;
                      for (i = 0; i < (BlockSize * 2); i++)
                        {
                        if (i == 0)
                          {
                          MemPtr = (UWORD16*)Address;
                          }
                        if ((UWORD16)(*MemPtr) != (UWORD16)DMAT_GeneratePattern(Chptr->Pattern,i/2))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i/2, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/2))));
                          rtn_status = NOT_OK;
                          break;
                          }
                        else if ((UWORD16)(*MemPtr) != (UWORD16)(DMAT_GeneratePattern(Chptr->Pattern,i/2)>>16))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i/2, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/2)>>16)));
                          rtn_status = NOT_OK;
                          break;
                          }
                        MemPtr++;
                        }
                      break;
                      }
                    case 0x01: // Then 8-bit aligned
                      {
                      UWORD8* MemPtr;
                      for (i = 0; i < (BlockSize * 4); i++)
                        {
                        if (i == 0)
                          {
                          MemPtr = (UWORD8*)Address;
                          }
                        if ((UWORD8)(*MemPtr) != (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i/4))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i/4, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/4))));
                          rtn_status = NOT_OK;
                          break;
                          }
                        else if ((UWORD8)(*MemPtr) != (UWORD8)(DMAT_GeneratePattern(Chptr->Pattern,i/4)>>8))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i/4, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/4)>>8)));
                          rtn_status = NOT_OK;
                          break;
                          }
                        else if ((UWORD8)(*MemPtr) != (UWORD8)(DMAT_GeneratePattern(Chptr->Pattern,i/4)>>16))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i/4, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/4)>>16)));
                          rtn_status = NOT_OK;
                          break;
                          }
                        else if ((UWORD8)(*MemPtr) != (UWORD8)(DMAT_GeneratePattern(Chptr->Pattern,i/4)>>24))
                          {
                          DMAT_SpyWriteFailResults( ChannelNumber, i/4, (0x0000FFFF & (*MemPtr)), 
                                                      (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/4)>>24)));
                          rtn_status = NOT_OK;
                          break;
                          }
                        MemPtr++;
                        }
                      break;
                      }
                    }  // End of switch(SrcAddressAlign)
                  break;
                  }  // End of case DMA_TYPE_32_BITS
 
                case DMA_TYPE_16_BITS:
                  {
                  if (AddressAlign == 0x01)  // Then 8-bit aligned
                    {
                    UWORD8* MemPtr;
                    for (i = 0; i < (BlockSize * 2); i++)
                      {
                      if (i == 0)
                        {
                        MemPtr = (UWORD8*)Address;
                        }
                      if (((UWORD8)(*MemPtr)) != (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i/2))
                        {
                        DMAT_SpyWriteFailResults( ChannelNumber, i/2, (0x0000FFFF & (*MemPtr)), 
                                                    (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/2))));
                        rtn_status = NOT_OK;
                        break;
                        }
                      else if (((UWORD8)(*MemPtr)) != (UWORD8)(DMAT_GeneratePattern(Chptr->Pattern,i/2)>>8))
                        {
                        DMAT_SpyWriteFailResults( ChannelNumber, i/2, (0x0000FFFF & (*MemPtr)), 
                                                    (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i/2)>>8)));
                        rtn_status = NOT_OK;
                        break;
                        }
                      MemPtr++;
                      }
                    break;
                    }
                  else
                    {  // Then 16-bit aligned
                    UWORD16* MemPtr;
                    for (i = 0; i < BlockSize; i++)
                      {
                      if (i == 0)
                        {
                        MemPtr = (UWORD16*)Address;
                        }
                      if (((UWORD16)(*MemPtr)) != (UWORD16)DMAT_GeneratePattern(Chptr->Pattern,i))
                        {
                        DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                    (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                        rtn_status = NOT_OK;
                        break;
                        }
                      MemPtr++;
                      }
                    break;
                    }
                  }  // End of case DMA_TYPE_16_BITS

                case DMA_TYPE_8_BITS:
                  {
                  UWORD8* MemPtr;
                  for (i = 0; i < BlockSize; i++)
                    {
                    if (i == 0)
                      {
                      MemPtr = (UWORD8*)Address;
                      }
                    if (((UWORD8)(*MemPtr)) != (UWORD8)DMAT_GeneratePattern(Chptr->Pattern,i))
                      {
                      DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
                                                  (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));

⌨️ 快捷键说明

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