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

📄 dma_test_misc2.c

📁 MMI层OBJ不能完全编译
💻 C
📖 第 1 页 / 共 4 页
字号:
  * #define DMA_API_MIN2  (0xFFE00000)
  * #define DMA_API_MAX2  (0xFFE00001)

  * Address mapping RHEA (strobe 0)
  * #define DMA_RHEA_MIN1 (0xFFFE0000)
  * #define DMA_RHEA_MAX1 (0xFFFEFFFF)

  * Address mapping RHEA (strobe 1) 
  * #define DMA_RHEA_MIN2 (0xFFFF0000)
  * #define DMA_RHEA_MAX2 (0xFFFFFFFF)
  */

  /* set the default values */
  dma_test_set_default_parameters(&dma_channel_parameters);

  /* Dest. adress plus data to be transferred is out of range  */
  dma_channel_parameters.destination_address = DMA_TEST_SDRAM_DST_BUFFER+3;

  if (dma_set_channel_parameters (DMA_MIN_CHANNEL, &dma_channel_parameters) != RV_OK)
  {
      DMA_TEST_SEND_TRACE("DMA TEST immediate return NOT OK ",\
                           DMA_TRACE_LEVEL);
      rtest_send_result (TEST_FAILED);
      return;
  }

  msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
  if (msg_p->result.status == DMA_INVALID_PARAMETER)
  {
    DMA_TEST_SEND_TRACE ("DMA TEST result OK, INVALID parameter returned ",\
                          DMA_TRACE_LEVEL);
    rtest_send_result (TEST_PASSED);
  }
  else
  {
    DMA_TEST_SEND_TRACE 
                  ("DMA TEST result NOT OK, INVALID parameter NOT returned ",\
                    DMA_TRACE_LEVEL);
    rtest_send_result (TEST_FAILED);
  }

  rvf_free_buf (msg_p);
  return;

}


/**
 * This test will reservate a channel and then provide it with
 * information. 
 * For the source adress a value is choosen in API memory and the burst 
 * option is choosen. This combiantion is not allowed
 *
 * An INVALID parameter indication should be returned
 */
void dma_test_misc_220 (void) 
{

  UINT8 n=0;
  T_RV_RETURN_PATH dma_test_path;
  T_DMA_STATUS_RSP_MSG *msg_p;
  T_DMA_CHANNEL_PARAMETERS dma_channel_parameters;

  /* reset all parameters needed */
  dma_test_init();


  /* Sets message forwarding */
  dma_test_path.addr_id = rtest_get_addr_id();
  dma_test_path.callback_func = NULL;

  if (dma_reserve_channel (DMA_CHAN_ANY,DMA_MIN_CHANNEL, DMA_QUEUE_DISABLE,
      SW_PRIORITY_NORMAL, dma_test_path) != RV_OK)
  {
      DMA_TEST_SEND_TRACE("DMA TEST immediate return NOT OK ",\
                           DMA_TRACE_LEVEL);
      rtest_send_result (TEST_FAILED);
      return;
  }

  msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
  /* msg_p not checked as it is assumed to be ok (because of reset)*/

  rvf_free_buf (msg_p);


 /* Adress mapping. The given adress should be out of the defined 
  * range to receive an error
  * #define DMA_IMIF_MIN  (0x08000000)
  * #define DMA_IMIF_MAX  (0x0FFFFFFF)

  * Address mapping API RAM 
  * #define DMA_API_MIN1  (0xFFD00000)
  * #define DMA_API_MAX1  (0xFFD03FFF)

  * Address mapping API CTRL
  * #define DMA_API_MIN2  (0xFFE00000)
  * #define DMA_API_MAX2  (0xFFE00001)

  * Address mapping RHEA (strobe 0)
  * #define DMA_RHEA_MIN1 (0xFFFE0000)
  * #define DMA_RHEA_MAX1 (0xFFFEFFFF)

  * Address mapping RHEA (strobe 1) 
  * #define DMA_RHEA_MIN2 (0xFFFF0000)
  * #define DMA_RHEA_MAX2 (0xFFFFFFFF)
  */

  /* set the default values */
  dma_test_set_default_parameters(&dma_channel_parameters);

  /* Dest. adress plus data to be transferred is out of range  */
  dma_channel_parameters.source_address = DMA_API_MIN1;
  dma_channel_parameters.source_burst = DMA_BURST_ENABLED; 

  if (dma_set_channel_parameters (DMA_MIN_CHANNEL, &dma_channel_parameters) != RV_OK)
  {
      DMA_TEST_SEND_TRACE("DMA TEST immediate return NOT OK ",\
                           DMA_TRACE_LEVEL);
      rtest_send_result (TEST_FAILED);
      return;
  }

  msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
  if (msg_p->result.status == DMA_INVALID_PARAMETER)
  {
    DMA_TEST_SEND_TRACE ("DMA TEST result OK, INVALID parameter returned ",\
                          DMA_TRACE_LEVEL);
    rtest_send_result (TEST_PASSED);
  }
  else
  {
    DMA_TEST_SEND_TRACE 
                  ("DMA TEST result NOT OK, INVALID parameter NOT returned ",\
                    DMA_TRACE_LEVEL);
    rtest_send_result (TEST_FAILED);
  }

  rvf_free_buf (msg_p);
  
  return;

}

/**
 * 
 * This test will test the contention mechanism
 */
void dma_test_misc_221 (void)
{

  UINT8 n=0,p;
  T_RV_RETURN_PATH dma_test_path;
  T_DMA_STATUS_RSP_MSG *msg_p;
  UINT8 test_result = DMA_TRUE;

  /* reset all parameters needed */
  dma_test_init();

	/* Sets message forwarding */
  dma_test_path.addr_id = rtest_get_addr_id();
  dma_test_path.callback_func = NULL;

  /* Reserve 10 channels with increasing software priority */
  /* last 4 reservatinos are queued */
  for (n=10; n>0; n--)
  {
    p= n+10;
    if (dma_reserve_channel (DMA_CHAN_ANY,0, DMA_QUEUE_ENABLE,
         p, dma_test_path) != RV_OK)
    {
        DMA_TEST_SEND_TRACE("DMA TEST immediate return NOT OK ",\
                             DMA_TRACE_LEVEL);
        rtest_send_result (TEST_FAILED);
        return;
    }

    msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
    if ((msg_p->result.status != DMA_RESERVE_OK) && 
		(msg_p->result.status != DMA_QUEUED))
    {
      test_result = DMA_ZERO;
    }
    rvf_free_buf (msg_p);
  
  }

  /* make an extra reservation with the highest priority and a specific channel */
  if (dma_reserve_channel (DMA_CHAN_SPECIFIC,4, DMA_QUEUE_ENABLE,
      0, dma_test_path) != RV_OK)
  {
      DMA_TEST_SEND_TRACE("DMA TEST immediate return NOT OK ",\
                           DMA_TRACE_LEVEL);
      rtest_send_result (TEST_FAILED);
      return;
  }

  msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
  if ((msg_p->result.status != DMA_RESERVE_OK) && 
	(msg_p->result.status != DMA_QUEUED))
  {
    test_result = DMA_ZERO;
  }
  rvf_free_buf (msg_p);

  /* Free channel 4. Now the queued reservation with 
     the highest priority has to be granted */

  /* free channel 4 */
  if (dma_release_channel (4) != RV_OK)
  {
      DMA_TEST_SEND_TRACE("DMA TEST immediate return NOT OK ",\
                           DMA_TRACE_LEVEL);
      rtest_send_result (TEST_FAILED);
      return;
  }

  /* wait for message that a channel is free (virtual client A) */
  msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
  if ((msg_p->result.status != DMA_CHANNEL_RELEASED) || 
      (msg_p->result.channel != 4))
  {
    DMA_TEST_SEND_TRACE_PARAM("DMA released WRONG channel number:" ,\
                              msg_p->result.channel,\
                              DMA_TRACE_LEVEL);
    rtest_send_result (TEST_FAILED);
    test_result = DMA_ZERO;
  }
  rvf_free_buf (msg_p);


  /* wait for message that a channel is free (virtual client B) */
  msg_p = (T_DMA_STATUS_RSP_MSG *) rtest_wait_for_message (DMA_STATUS_RSP_MSG);
  if ((msg_p->result.status != DMA_QUEUE_PROC) || ((msg_p->result.channel &0x7) != 4))
  {
    DMA_TEST_SEND_TRACE_PARAM
               ("WRONG queued reservation (shoot be 4) has been processed: " ,\
                              msg_p->result.channel,\
                              DMA_TRACE_LEVEL);
    rtest_send_result (TEST_FAILED);
    test_result = DMA_ZERO;
  }
  rvf_free_buf (msg_p);


  if (test_result == DMA_TRUE)
  {
    rtest_send_result (TEST_PASSED);
  }
  else
  {
    rtest_send_result (TEST_PASSED);
  }
  return;

}


/**
 * Main function multiplexing the different demos to process.
 *
 * This function returns the result of the test.
 *
 * @param	test_number		Number of the test to process
 * @return	Result of the test.
 */
T_RV_MISC_RET dma_test_misc2 (T_RV_MISC_TEST_NBR test_number)
{
	T_RV_TEST_RET test_verdict;

	switch (test_number)
	{
	case ICT_TEST1:
		RV_TEST_TRACE_WARNING("*** DMA MISC 201 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_201);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;
  
	case ICT_TEST2:
		RV_TEST_TRACE_WARNING("*** DMA MISC 202 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_202);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;
  
	case ICT_TEST3:
		RV_TEST_TRACE_WARNING("*** DMA MISC 203 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_203);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;
  
	case ICT_TEST4:
		RV_TEST_TRACE_WARNING("*** DMA MISC 204 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_204);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

	case ICT_TEST5:
		RV_TEST_TRACE_WARNING("*** DMA MISC 205 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_205);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST6:
		RV_TEST_TRACE_WARNING("*** DMA MISC 206 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_206);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST7:
		RV_TEST_TRACE_WARNING("*** DMA MISC 207 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_207);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST10:
		RV_TEST_TRACE_WARNING("*** DMA MISC 210 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_210);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST11:
		RV_TEST_TRACE_WARNING("*** DMA MISC 211 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_211);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST12:
		RV_TEST_TRACE_WARNING("*** DMA MISC 212 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_212);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST13:
		RV_TEST_TRACE_WARNING("*** DMA MISC 213 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_213);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

//#ifndef _WINDOWS
  case ICT_TEST15:
		RV_TEST_TRACE_WARNING("*** DMA MISC 215 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_215);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;
//#endif // _WINDOWS

  case ICT_TEST18:
		RV_TEST_TRACE_WARNING("*** DMA MISC 218 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_218);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  case ICT_TEST19:
		RV_TEST_TRACE_WARNING("*** DMA MISC 219 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_219);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

#ifndef _WINDOWS
  case ICT_TEST20:
		RV_TEST_TRACE_WARNING("*** DMA MISC 220 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_220);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;
#endif //_WINDOWS

  case ICT_TEST21:
		RV_TEST_TRACE_WARNING("*** DMA MISC 221 BEGINS");
		
		test_verdict = rtest_start_test(dma_test_misc_221);
		rtest_trace_test_verdict(test_verdict);

    return test_verdict;

  default:
		RV_TEST_TRACE_WARNING("DMA Test: Wrong test number");

		return TEST_IRRECOVERABLY_FAILED;
	}
}

⌨️ 快捷键说明

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