1.修复SYNC 偏移可能超出范围的bug
This commit is contained in:
parent
9a1c13edda
commit
02ccf4995a
@ -68,7 +68,7 @@ void Receiver_Symb_Proc(
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return ;
|
||||||
|
|
||||||
// //计算结果搬移到外存
|
// //计算结果搬移到外存
|
||||||
// temp_u32 = 1000;//计算byte数
|
// temp_u32 = 1000;//计算byte数
|
||||||
@ -84,22 +84,22 @@ void Receiver_Symb_Proc(
|
|||||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 5, time1 -time0);
|
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 5, time1 -time0);
|
||||||
time0 = time1;
|
time0 = time1;
|
||||||
|
|
||||||
// ChannelEst_Proc(param_ptr,temp_dm0_ptr,temp_dm1_ptr);
|
ChannelEst_Proc(param_ptr,temp_dm0_ptr,temp_dm1_ptr);
|
||||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 4);
|
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 4);
|
||||||
// time1 = Time_offset(0);
|
time1 = Time_offset(0);
|
||||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 6, time1 -time0);
|
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 6, time1 -time0);
|
||||||
// time0 = time1;
|
time0 = time1;
|
||||||
|
|
||||||
// ChannelEqu_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
ChannelEqu_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 5);
|
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 5);
|
||||||
// time1 = Time_offset(0);
|
time1 = Time_offset(0);
|
||||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 7, time1 -time0);
|
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 7, time1 -time0);
|
||||||
// time0 = time1;
|
time0 = time1;
|
||||||
|
|
||||||
// Transform_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
Transform_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 6);
|
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 6);
|
||||||
// time1 = Time_offset(0);
|
time1 = Time_offset(0);
|
||||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 8, time1 -time0);
|
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 8, time1 -time0);
|
||||||
time0 = time1;
|
time0 = time1;
|
||||||
|
|
||||||
#ifdef IDE_TEST
|
#ifdef IDE_TEST
|
||||||
|
@ -259,7 +259,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
|
|
||||||
dbg_time0 = Time_offset(2);
|
dbg_time0 = Time_offset(2);
|
||||||
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||||
|
#ifndef RECV_DBG_DATA_TEST
|
||||||
if( 1 == (slot & 0x01) )
|
if( 1 == (slot & 0x01) )
|
||||||
{
|
{
|
||||||
src_addr0 = (uint32_t)JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR;
|
src_addr0 = (uint32_t)JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR;
|
||||||
@ -270,6 +270,10 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
src_addr0 = (uint32_t)JESD_NRFDD_RX_SLOT_ODD_DATA_ADDR;
|
src_addr0 = (uint32_t)JESD_NRFDD_RX_SLOT_ODD_DATA_ADDR;
|
||||||
src_addr1 = (uint32_t)JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR;
|
src_addr1 = (uint32_t)JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
src_addr0 = (uint32_t)JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR;
|
||||||
|
src_addr1 = (uint32_t)JESD_NRFDD_RX_SLOT_ODD_DATA_ADDR;
|
||||||
|
#endif
|
||||||
|
|
||||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||||
//取数方式,同步点为中心,前16,后15,相关长度1024
|
//取数方式,同步点为中心,前16,后15,相关长度1024
|
||||||
@ -385,8 +389,8 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 5);
|
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 5);
|
||||||
uint32_t maxWindowSum = receiver_sync_temp_dm3_ptr[1];
|
uint32_t maxWindowSum = receiver_sync_temp_dm3_ptr[1];
|
||||||
//更新最佳位置
|
//更新最佳位置
|
||||||
uint32_t bestPosition =receiver_sync_temp_dm3_ptr[0]-16 + frame_head_offset;
|
int32_t bestPosition =receiver_sync_temp_dm3_ptr[0]-16 + frame_head_offset;
|
||||||
LOG_ERROR_S("%d %d\n", receiver_sync_temp_dm3_ptr[0], receiver_sync_temp_dm3_ptr[1]);
|
LOG_ERROR_S("%d %d %d\n", receiver_sync_temp_dm3_ptr[0], receiver_sync_temp_dm3_ptr[1], bestPosition);
|
||||||
//更新sync2symb的buffer状态记录
|
//更新sync2symb的buffer状态记录
|
||||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len, LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len) + 61440);
|
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len, LOAD_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len) + 61440);
|
||||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_offset , 61440 * buffer_sel2);
|
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_offset , 61440 * buffer_sel2);
|
||||||
@ -431,6 +435,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
//为了适配SYMB接口,如果数据是两段,搬移成一块
|
//为了适配SYMB接口,如果数据是两段,搬移成一块
|
||||||
if(2 == data_send2symb_task[task_idx].num_data_section)
|
if(2 == data_send2symb_task[task_idx].num_data_section)
|
||||||
{
|
{
|
||||||
|
ape_csu_task_lookup(DMA_TAG_G2G,1);
|
||||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(data_send2symb_task[task_idx].data_section1_ptr),
|
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(data_send2symb_task[task_idx].data_section1_ptr),
|
||||||
(uint64_t)(data_send2symb_task[task_idx].data_section0_ptr + data_send2symb_task[task_idx].data_section0_length),
|
(uint64_t)(data_send2symb_task[task_idx].data_section0_ptr + data_send2symb_task[task_idx].data_section0_length),
|
||||||
(data_send2symb_task[task_idx].data_section1_length)<<2,
|
(data_send2symb_task[task_idx].data_section1_length)<<2,
|
||||||
@ -462,7 +467,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
uint32_t threshold = 1;
|
uint32_t threshold = 1;
|
||||||
if(threshold)
|
if(threshold)
|
||||||
{
|
{
|
||||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->frame_head_offset , bestPosition % 61440);
|
STORE_EX_W(&g_receiver_sync_status_SM_ptr->frame_head_offset , (bestPosition+61440) % 61440);
|
||||||
//LOG_INFO_S("rec sync track offset: %d\n", bestPosition % 61440);
|
//LOG_INFO_S("rec sync track offset: %d\n", bestPosition % 61440);
|
||||||
ret = SYNC_OK;
|
ret = SYNC_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user