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

📄 api.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 3 页
字号:
    }				     
  if (*(UWORD8*)0xE0032000 != 0x56)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0051);
    }				     


  *(UWORD8*)0xE0034000 = 0x78; /* SARAM18 */
  *(UWORD8*)0xE0036000 = 0x9A; /* SARAM19 */

   //read back compare
  if (*(UWORD8*)0xE0034000 != 0x78)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0052);
    }				     
  if (*(UWORD8*)0xE0036000 != 0x9A)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0053);
    }				     


  *(UWORD8*)0xE0038000 = 0x23; /* SARAM20 */
  *(UWORD8*)0xE003A000 = 0x56; /* SARAM21 */

   //read back compare
  if (*(UWORD8*)0xE0038000 != 0x23)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0054);
    }				     
  if (*(UWORD8*)0xE003A000 != 0x56)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0055);
    }				     

  *(UWORD8*)0xE003C000 = 0x34; /* SARAM22 */
  *(UWORD8*)0xE003E000 = 0x67; /* SARAM23 */

   //read back compare
  if (*(UWORD8*)0xE003C000 != 0x34)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0056);
    }				     
  if (*(UWORD8*)0xE003E000 != 0x67)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x0057);
    }				     


  *(UWORD8*)0xE0040000 = 0x38; /* SARAM24 */
  *(UWORD8*)0xE0042000 = 0x5A; /* SARAM25 */

   //read back compare
  if (*(UWORD8*)0xE0040000 != 0x38)
    {				    
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0058);
    }				    
  if (*(UWORD8*)0xE0042000 != 0x5A)
    {				    
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0059);
    }				    


  *(UWORD8*)0xE0044000 = 0x78; /* SARAM26 */
  *(UWORD8*)0xE0046000 = 0x9A; /* SARAM27 */

   //read back compare
  if (*(UWORD8*)0xE0044000 != 0x78)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x005A);
    }				     
  if (*(UWORD8*)0xE0046000 != 0x9A)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x005B);
    }				     


  *(UWORD8*)0xE0048000 = 0x23; /* SARAM28 */
  *(UWORD8*)0xE004A000 = 0x56; /* SARAM29 */

   //read back compare
  if (*(UWORD8*)0xE0048000 != 0x23)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x005C);
    }				     
  if (*(UWORD8*)0xE004A000 != 0x56)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x005D);
    }				     

  *(UWORD8*)0xE004C000 = 0x34; /* SARAM30 */
  *(UWORD8*)0xE004E000 = 0x67; /* SARAM31 */

   //read back compare
  if (*(UWORD8*)0xE004C000 != 0x34)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x005E);
    }				     
  if (*(UWORD8*)0xE004E000 != 0x67)
    {				     
      logresult = TEST_OK  | 0x1; 
      RES_Set(START_ERROR_CODE + 0x005F);
    }				     


  RES_Set( logresult );
  RES_Set(RESULT_SEPARATOR);


}


//----------------------------------------------------------
// NAME         : API_TestEndianism
// DESCRIPTION  : Verify the APIF Endian Conversion is working
//                properly
//                                       
// PARAMETERS   : START_ERROR_CODE -> 
// RETURN VALUE : None
//               
// LIMITATIONS  : Result must be initialized
// ----------------------------------------------------------

void API_TestEndianism(UWORD16 START_ERROR_CODE) 
{
  UWORD16 logresult = TEST_OK;
  UWORD16 value16;
  UWORD32 value32;
  UWORD8  value8;

  //Testing Endianism = 00 (No Conversion)
  //To Test Endianism = 00, we Write with 00, then Read it back with 00,10,11
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_NO_CONVERT, API_ACCESS_PRIORITY_ARM_DMA_HSAB);

  // Perform the Writes:
  // Two 16-bit writes to peripherals,
  // one 8,16 and 32 bit write to API Memory
  *(UWORD16 *) DSP_DOR_REG_ADDR  = 0x1234; // GPIO Register
  *(UWORD32*)0xE0010000 = 0x12345678; /* SARAM0 */  
  *(UWORD16*)0xE0030000 = 0xABCD; /* SARAM16 */  
  *(UWORD8*) 0xE004E000 = 0xEF; /* SARAM31 */               
      
  //Read back with Endianism=00
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, 0, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0x1234)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0000);
    }
  if (*(UWORD32*)0xE0010000 != 0x12345678)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0001);
    }
  if (*(UWORD16*)0xE0030000 != 0xABCD)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0002);
    }
  if (*(UWORD8*)0xE004E000 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0003);
    }
  

  //Read back with Endianism=10 (Convert_all_Accesses)
  
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0x3412)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0010);
    }
  if (*(UWORD32*)0xE0010000 != 0x34127856)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0011);
    }
  if (*(UWORD16*)0xE0030000 != 0xCDAB)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0012);
    }
  if (*(UWORD8*)0xE004E000 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0013);
    }
  

  //Read back with Endianism=11 (Convert_API_MEM_ACCESS_ONLY)
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0x1234)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0020);
    }
  if (*(UWORD32*)0xE0010000 != 0x34127856)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0021);
    }
  if (*(UWORD16*)0xE0030000 != 0xCDAB)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0022);
    }
  if (*(UWORD8*)0xE004E000 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0023);
    }
  
  

  //Testing Endianism = 10 (Convert All Accesses)
  //To Test Endianism = 10, we Write with 00, then Read it back with 01,10,11
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
  
  // Perform the Writes:
  // Two 16-bit writes to peripherals,
  // one 8,16 and 32 bit write to API Memory
  *(UWORD16 *) DSP_DOR_REG_ADDR  = 0x5678; // GPIO Register
  *(UWORD32*)0xE0010010 = 0x12345678; /* SARAM0 */  
  *(UWORD16*)0xE0030010 = 0xABCD; /* SARAM16 */  
  *(UWORD8*) 0xE004E010 = 0xEF; /* SARAM31 */               
      
  //Read Back with Endianism = 00
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_NO_CONVERT, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0x7856)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0030);
    }
  if (*(UWORD32*)0xE0010010 != 0x34127856)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0031);
    }
  if (*(UWORD16*)0xE0030010 != 0xCDAB)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0032);
    }
  if (*(UWORD8*)0xE004E010 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0033);
    }
  
  //Read Back with Endianism = 10 (Convert all accesses)
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0x5678)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0040);
    }
  if (*(UWORD32*)0xE0010010 != 0x12345678)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0041);
    }
  if (*(UWORD16*)0xE0030010 != 0xABCD)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0042);
    }
  if (*(UWORD8*)0xE004E010 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0043);
    }
	    

  //Read Back with Endianism=11 (Convert_only_API_MEM)
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
  
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0x7856)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0050);
    }
  if (*(UWORD32*)0xE0010010 != 0x12345678)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0051);
    }
  if (*(UWORD16*)0xE0030010 != 0xABCD)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0052);
    }
  if (*(UWORD8*)0xE004E010 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0053);
    }
	    


  //Testing Endianism = 11 (Convert only API_MEM Accesses)
  //To Test Endianism = 11, we Write with 11, then Read it back with 00,10,11

  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);


  // Perform the Writes:
  // Two 16-bit writes to peripherals,
  // one 8,16 and 32 bit write to API Memory
  *(UWORD16 *) DSP_DOR_REG_ADDR  = 0xABCD; // GPIO Register
  *(UWORD32*)0xE0010020 = 0x12345678; /* SARAM0 */  
  *(UWORD16*)0xE0030020 = 0xABCD; /* SARAM16 */  
  *(UWORD8*) 0xE004E020 = 0xEF; /* SARAM31 */               
  
  // Read Back with Endianism=00 (No_Conversion)
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_NO_CONVERT, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0xABCD)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0060);
    }
  if (*(UWORD32*)0xE0010020 != 0x34127856)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0061);
    }
  if (*(UWORD16*)0xE0030020 != 0xCDAB)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0062);
    }
  if (*(UWORD8*)0xE004E020 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0063);
    }
  

  // Read Back with Endianism=10 (Convert_ALL_Accesses)
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
  
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0xCDAB)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0070);
    }
  if (*(UWORD32*)0xE0010020 != 0x12345678)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0071);
    }
  if (*(UWORD16*)0xE0030020 != 0xABCD)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0072);
    }
  if (*(UWORD8*)0xE004E020 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0073);
    }
  
  // Read Back with Endianism=11 (Convert_API_MEM_Accesses_only)
  API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
	    
  //Perform the Reads and Compare
  value16 = GPIO_LeadReadAllDor();
  if (value16 != 0xABCD)
    {
      logresult = TEST_OK | 0x1;
      RES_Set(START_ERROR_CODE + 0x0080);
    }
  if (*(UWORD32*)0xE0010020 != 0x12345678)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0081);
    }
  if (*(UWORD16*)0xE0030020 != 0xABCD)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0082);
    }
  if (*(UWORD8*)0xE004E020 != 0xEF)
    {
      logresult = TEST_OK  | 0x1;
      RES_Set(START_ERROR_CODE + 0x0083);
    }	    
  
  RES_Set(logresult);
  RES_Set(RESULT_SEPARATOR);
}


int  API_GetHomNSamModeMem()
{
  UWORD32 reg_value;
  int     HOMnSAM;
  reg_value = *(REGISTER_UWORD32*) API_DEBUG_FLAG_ADDR;

  if (((reg_value >> (API_ACCESS_STATUS_POSBIT + 1)) & (0x0001)) == 0x0001)
    return(1);
  else 
    return(0);

}


int  API_GetHomNSamModePer()
{
  UWORD32 reg_value;

  reg_value = *(REGISTER_UWORD32*) API_DEBUG_FLAG_ADDR;

  if (((reg_value >> (API_ACCESS_STATUS_POSBIT)) & (0x0001)) == 0x0001)
    return(1);
  else 
    return(0);

}

//-------------------------------------------------------------------------------
// NAME	     : API_ApiSize.							-
// DESCRIPTION : Specified which blocks of SARAM are accessible in HOM mode.	-
// PARAMETERS  :								-
//   api_size	=> size.							-
// RETURN VALUE: None.								-
// LIMITATIONS : None.								-
//-------------------------------------------------------------------------------
void API_ApiSize (API_ApiSize_t api_size)
{
   *(UWORD16*)API_DSP_API_ADDR = api_size;

}

⌨️ 快捷键说明

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