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数
|
||||
@ -84,22 +84,22 @@ void Receiver_Symb_Proc(
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 5, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
// ChannelEst_Proc(param_ptr,temp_dm0_ptr,temp_dm1_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 4);
|
||||
// time1 = Time_offset(0);
|
||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 6, time1 -time0);
|
||||
// time0 = time1;
|
||||
ChannelEst_Proc(param_ptr,temp_dm0_ptr,temp_dm1_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 4);
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 6, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
// ChannelEqu_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 5);
|
||||
// time1 = Time_offset(0);
|
||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 7, time1 -time0);
|
||||
// time0 = time1;
|
||||
ChannelEqu_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 5);
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 7, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
// Transform_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
// TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 6);
|
||||
// time1 = Time_offset(0);
|
||||
// TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 8, time1 -time0);
|
||||
Transform_Proc(param_ptr, temp_dm0_ptr, temp_dm1_ptr, temp_dm2_ptr, temp_dm3_ptr);
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 6);
|
||||
time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 8, time1 -time0);
|
||||
time0 = time1;
|
||||
|
||||
#ifdef IDE_TEST
|
||||
|
@ -259,7 +259,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
dbg_time0 = Time_offset(2);
|
||||
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||
|
||||
#ifndef RECV_DBG_DATA_TEST
|
||||
if( 1 == (slot & 0x01) )
|
||||
{
|
||||
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_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);
|
||||
//取数方式,同步点为中心,前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);
|
||||
uint32_t maxWindowSum = receiver_sync_temp_dm3_ptr[1];
|
||||
//更新最佳位置
|
||||
uint32_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]);
|
||||
int32_t bestPosition =receiver_sync_temp_dm3_ptr[0]-16 + frame_head_offset;
|
||||
LOG_ERROR_S("%d %d %d\n", receiver_sync_temp_dm3_ptr[0], receiver_sync_temp_dm3_ptr[1], bestPosition);
|
||||
//更新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_offset , 61440 * buffer_sel2);
|
||||
@ -431,6 +435,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
//为了适配SYMB接口,如果数据是两段,搬移成一块
|
||||
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),
|
||||
(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,
|
||||
@ -462,7 +467,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
uint32_t threshold = 1;
|
||||
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);
|
||||
ret = SYNC_OK;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user