📄 dma_test_misc2.c
字号:
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 + -