it can't write immediately to shared ram.
code list delow:
static bool server_upp_data_transfer(Server *server) {
if(server->ad_started == false) return true;
while (ListMP_empty(server->list_free)) /* wait */
Task_sleep(10000);
DataNode *node = (DataNode *)ListMP_getTail(server->list_free); /* get free node */
int *data = (int *)SharedRegion_getPtr(node->SR_buffer);
server->transposeParA.WindowAddress = (unsigned int *)data; /* set taget */
server->transposeParA.LineCount = node->buffer_height;
server->transposeParA.ByteCount = node->buffer_pitch;
server->transposeParA.LineOffsetAddress = node->buffer_pitch;
upp_error_count = 0;
upp_dmai_int_cut = 0;
/* fill in data */
uPPDMATransfer(SOC_UPP_0_REGS, uPP_DMA_CHI, &server->transposeParA);
/* wait */
while (upp_dmai_int_cut < 1 && upp_error_count == 0);
if (upp_error_count != 0) {
LOG_ERROR("data mismatch in buffers");
LOG_ERROR("upp_error_count=%d",upp_error_count);
}
/* make data node in busy list */
ListMP_putHead(server->list_busy, (ListMP_Elem *)node);
return true;
}