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

📄 dma_test_misc2.c

📁 MMI层OBJ不能完全编译
💻 C
📖 第 1 页 / 共 4 页
字号:
      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)
  {
    test_result = DMA_ZERO;
  }
  rvf_free_buf (msg_p);

  if (dma_reserve_channel (DMA_CHAN_ANY,0, DMA_QUEUE_ENABLE,
      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);
  if (msg_p->result.status != DMA_RESERVE_OK)
  {
    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;

}


/**
 * This test will get the software version
 */
void dma_test_misc_212 (void)
{
  
  DMA_TEST_SEND_TRACE_PARAM("DMA major software version: " ,DMA_MAJOR,\
                              DMA_TRACE_LEVEL);
  
  DMA_TEST_SEND_TRACE_PARAM("DMA minor software version: " ,DMA_MINOR,\
                              DMA_TRACE_LEVEL);
  
  DMA_TEST_SEND_TRACE_PARAM("DMA build software version: " ,DMA_BUILD,\
                              DMA_TRACE_LEVEL);

  rtest_send_result (TEST_PASSED);
  return;
}


/**
 * This test will reservate a channel and then provide it with
 * information, so that the bytes to be transferred is 0. This
 * is not allowed. An INVALID parameter indication should be returned
 *
 * This test will reset all parameters at the beginning of the start
 */
void dma_test_misc_213 (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);
  switch (msg_p->result.status)
  {
    case DMA_RESERVE_OK:

    {
      DMA_TEST_SEND_TRACE_PARAM("DMA TEST result OK, return value: ",\
                                 msg_p->result.status,\
                                 DMA_TRACE_LEVEL);
    }
    break;
    
    default:
      DMA_TEST_SEND_TRACE_PARAM("DMA TEST result NOT OK, return value: ",\
                                 msg_p->result.status,\
                                 DMA_TRACE_LEVEL);
      break;
  }

  rvf_free_buf (msg_p);

  dma_test_set_default_parameters(&dma_channel_parameters);

  dma_channel_parameters.nmb_frames   = 0;
  dma_channel_parameters.nmb_elements = 0;

  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. This information contains an illegal memory adress. 
 *
 * An INVALID parameter indication should be returned
 */
void dma_test_misc_215 (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);
  switch (msg_p->result.status)
  {
    case DMA_RESERVE_OK:

    {
      DMA_TEST_SEND_TRACE_PARAM("DMA TEST result OK, return value: ",\
                                 msg_p->result.status,\
                                 DMA_TRACE_LEVEL);
    }
    break;
    
    default:
      DMA_TEST_SEND_TRACE_PARAM("DMA TEST result NOT OK, return value: ",\
                                 msg_p->result.status,\
                                 DMA_TRACE_LEVEL);
      break;
  }

  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);

  /* set source adress to an illegal value */
  dma_channel_parameters.source_address      = 0;

  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. 
 * A wrong alignment for 16 bits data transfer will be provided 
 * in the source adress
 *
 * An INVALID parameter indication should be returned
 */
void dma_test_misc_218 (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_TEST_SDRAM_SRC_BUFFER+1;

  dma_channel_parameters.data_width = DMA_DATA_S16;
  
  /* Prevent memory overlap for this test */
  dma_channel_parameters.nmb_elements = 32; 

  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. 
 * A wrong alignment for 32 bits data transfer will be provided 
 * in the destination adress
 *
 * An INVALID parameter indication should be returned
 */
void dma_test_misc_219 (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

⌨️ 快捷键说明

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