1.修改APE5-7任务注册方式,2.修改耗时打点方式 3.遗留问题:PCIE内部处理核死在打点位置3-4之间
This commit is contained in:
parent
2b84338c7b
commit
b94a4cff53
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -25,6 +25,8 @@
|
||||
"mem_sections.h": "c",
|
||||
"msg_transfer_layer.h": "c",
|
||||
"typedef.h": "c",
|
||||
"receiver_bit_func.h": "c"
|
||||
"receiver_bit_func.h": "c",
|
||||
"drv_ape.h": "c",
|
||||
"transmitter_func.h": "c"
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@
|
||||
#include "log_interface.h"
|
||||
#include "Frame_test.h"
|
||||
#include "trace.h"
|
||||
#include "osp_ape.h"
|
||||
|
||||
|
||||
|
||||
|
@ -7,9 +7,7 @@ __APE_DM0 uint32_t g_slot_ind_dm0[8] = {0}; //32byte
|
||||
void Slot_ind_Task()
|
||||
{
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
g_time_start[0] = TIME_US();
|
||||
RUN_CNT(TRACE_SLOTIND_ADDR, 0);
|
||||
|
||||
|
||||
@ -34,8 +32,5 @@ void Slot_ind_Task()
|
||||
osp_phy_msg_send((char*)msg_header, msg_len);
|
||||
|
||||
RUN_CNT(TRACE_SLOTIND_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
|
||||
TRACE_MAX(TRACE_SLOTIND_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
TRACE_MAX(TRACE_SLOTIND_ADDR, 2, Time_offset(0) );
|
||||
}
|
@ -33,5 +33,4 @@
|
||||
#define DMA_TAG_CHAIN 3
|
||||
|
||||
extern __APE_DM3 v16s32 SVRReg;
|
||||
|
||||
#endif
|
||||
|
@ -1,41 +0,0 @@
|
||||
/******************************************************************
|
||||
* @file trace.h
|
||||
* @brief: record code status
|
||||
* @author: HUOHUO
|
||||
* @Date 2022年1月10日
|
||||
* COPYRIGHT NOTICE: ITTC All rights reserved.
|
||||
* Change_date Owner Change_content
|
||||
* 2024年10月23日 HUOHUO create file
|
||||
|
||||
*****************************************************************/
|
||||
|
||||
#ifndef TRACE_H
|
||||
#define TRACE_H
|
||||
|
||||
#include "common.h"
|
||||
#include "drv_ape.h"
|
||||
#include "mem_def.h"
|
||||
#include "phy_macro.h"
|
||||
|
||||
|
||||
|
||||
#define TRACE(base, offset, val) STORE_EX_W( (void*)((base) + 4*(offset)), (val))
|
||||
#define TRACE_MAX(base, offset, val) \
|
||||
{ \
|
||||
if ( (val) > LOAD_EX_W( (void*)((base) + 4*(offset)) ) ) \
|
||||
STORE_EX_W( (void*)((base) + 4*(offset)), (val) ); \
|
||||
}
|
||||
|
||||
#define RUN_CNT(base, offset) STORE_EX_W( (void*)((base) + 4*(offset)), LOAD_EX_W( (void*)((base) + 4*(offset)) ) + 1 )
|
||||
#define TIME_SLOT() (get_tx_nr_slot() )
|
||||
#define TIME_US() (uint16_t)((get_tx_nr_slot_cycle() * 2097) >> 21)
|
||||
|
||||
#define TIME_DIFF(start_slot, start_us, end_slot, end_us) ((start_slot) <= (end_slot) )? \
|
||||
(( (end_slot) - (start_slot) ) * 500 + (end_us) - (start_us) ): \
|
||||
((NR_SFN_SLOT_NUM + (end_slot) - (start_slot) )* 500 + (end_us) - (start_us) ) \
|
||||
|
||||
|
||||
|
||||
//#define TIME_RECORD(base, offset, time0) STORE_EX_W( (void*)((base) + 4*(offset)), GET_STC_CNT() - time0)
|
||||
|
||||
#endif
|
@ -33,11 +33,13 @@ void ape4_event_task(uint32_t addr, uint32_t size)
|
||||
{PHY_TASK_RECIEVER_SYNC, "Receiver_Sync", PHY_TASK_PRI_RECEIVER_SYNC, 2048, OSP_TIMER_TYPE, 0x000, 0x3FF, 50, (OSP_TASKINIT_FUNC)Receiver_Sync_Init, (OSP_TASKENTRY_FUNC)Receiver_Sync_Task};
|
||||
osp_task_info_ex mgr_task3 =
|
||||
{PHY_TASK_TEST, "Test_Task", PHY_TASK_PRI_TEST, 4096, OSP_TIMER_TYPE, 0x000, 0x3FF, 50, NULL, (OSP_TASKENTRY_FUNC)Test_Task};
|
||||
osp_task_info_ex pcie_normal_task_info = {PCIE_TASK_RECEIVER, (int8_t*)"pcie_normal_task", PCIE_TASK_PRI_RECEIVER, 4096, OSP_NORMAL_TYPE, 1, 0, 0, NULL, (OSP_TASKENTRY_FUNC)pcie_test_task_func};
|
||||
|
||||
|
||||
TRACE(TRACE_RECV_INIT_ADDR, 2, 1);
|
||||
|
||||
osp_task_create(&mgr_task2);
|
||||
|
||||
osp_task_create(&pcie_normal_task_info);
|
||||
TRACE(TRACE_RECV_INIT_ADDR, 3, 1);
|
||||
LOG_INFO_S("APE4 finish task create!\n");
|
||||
|
||||
@ -68,8 +70,7 @@ void Phy_Task_Ape4_Reg()
|
||||
osp_task_info_ex ape4_event_task_info_del = {51, "ape4_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape4_event_task_del};
|
||||
|
||||
//test_case_cfgpar_pcie();
|
||||
//osp_task_info_ex pcie_normal_task_info = {PCIE_TASK_RECEIVER, (int8_t*)"pcie_normal_task", PCIE_TASK_PRI_RECEIVER, 4096, OSP_NORMAL_TYPE, 1, 0, 0, NULL, (OSP_TASKENTRY_FUNC)pcie_test_task_func};
|
||||
//osp_task_create(&pcie_normal_task_info);
|
||||
|
||||
|
||||
osp_task_create(&ape4_event_task_info);
|
||||
osp_task_create(&ape4_event_task_info_del);
|
||||
|
@ -30,6 +30,7 @@
|
||||
//lxh 202501
|
||||
#include "mem_sections.h"
|
||||
#include "drv_ape.h"
|
||||
#include "trace.h"
|
||||
|
||||
|
||||
|
||||
@ -458,15 +459,15 @@ void test_speed_recv_msg_pcie()
|
||||
handler.inst_id = i;
|
||||
handler.type_id = CU_SPLIT;
|
||||
cu_flag = C_PLANE;
|
||||
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 3);
|
||||
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
||||
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 4);
|
||||
cu_flag = U_PLANE;
|
||||
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
||||
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 5);
|
||||
handler.type_id = OAM;
|
||||
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
||||
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 6);
|
||||
}
|
||||
/*********************************************************************************/
|
||||
}
|
||||
@ -474,10 +475,14 @@ void test_speed_recv_msg_pcie()
|
||||
|
||||
void pcie_test_task_func(void)
|
||||
{
|
||||
return ;
|
||||
g_time_start[1] = TIME_US();
|
||||
RUN_CNT(TRACE_PCIE_ADDR, 0);
|
||||
//uint32_t clockTick = 0;
|
||||
// uint32_t clockOffset = 0;
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 1);
|
||||
test_case_sendmsg_pcie();
|
||||
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 2);
|
||||
#ifdef PCIE_WITH_JESD
|
||||
|
||||
#endif
|
||||
@ -485,6 +490,10 @@ void pcie_test_task_func(void)
|
||||
debug_write(DBG_DDR_COMMON_IDX(get_core_id(),17), 0x70701040);
|
||||
//delay_us(50);
|
||||
|
||||
TRACE(TRACE_PCIE_ADDR, 3, 0xffff);
|
||||
RUN_CNT(TRACE_PCIE_ADDR, 1);
|
||||
|
||||
TRACE_MAX(TRACE_PCIE_ADDR, 2, Time_offset(1) );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -33,5 +33,4 @@
|
||||
#define DMA_TAG_CHAIN 19
|
||||
|
||||
extern __APE_DM3 v16s32 SVRReg;
|
||||
|
||||
#endif
|
||||
|
@ -27,12 +27,7 @@
|
||||
/* 收到消息后创建任务 */
|
||||
void ape5_event_task(uint32_t addr, uint32_t size)
|
||||
{
|
||||
osp_task_info_ex mgr_task =
|
||||
{PHY_TASK_RECIEVER_SYMB, "Receiver_Symb", PHY_TASK_PRI_RECEIVER_SYMB, 4096, OSP_EVENT_TYPE, 0x000, 0x000, 0, (OSP_TASKINIT_FUNC)Receiver_Symb_Init, (OSP_TASKENTRY_FUNC)Receiver_Symb_Task};
|
||||
|
||||
osp_task_create(&mgr_task);
|
||||
osp_timer_sync(1);
|
||||
LOG_INFO_S("APE5 finish task create!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -56,12 +51,14 @@ void ape5_event_task_del(uint32_t addr, uint32_t size)
|
||||
*/
|
||||
void Phy_Task_Ape5_Reg()
|
||||
{
|
||||
osp_task_info_ex ape5_event_task_info = {50, "ape5_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape5_event_task};
|
||||
osp_task_info_ex ape5_event_task_info_del = {51, "ape5_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape5_event_task_del};
|
||||
|
||||
osp_task_create(&ape5_event_task_info);
|
||||
osp_task_create(&ape5_event_task_info_del);
|
||||
// osp_task_info_ex ape5_event_task_info = {50, "ape5_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape5_event_task};
|
||||
// osp_task_info_ex ape5_event_task_info_del = {51, "ape5_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape5_event_task_del};
|
||||
osp_task_info_ex mgr_task = {PHY_TASK_RECIEVER_SYMB, "Receiver_Symb", PHY_TASK_PRI_RECEIVER_SYMB, 4096, OSP_EVENT_TYPE, 0x000, 0x000, 0, (OSP_TASKINIT_FUNC)Receiver_Symb_Init, (OSP_TASKENTRY_FUNC)Receiver_Symb_Task};
|
||||
|
||||
// osp_task_create(&ape5_event_task_info);
|
||||
// osp_task_create(&ape5_event_task_info_del);
|
||||
osp_task_create(&mgr_task);
|
||||
LOG_INFO_S("APE5 finish task create!\n");
|
||||
return ;
|
||||
|
||||
|
||||
|
@ -33,5 +33,4 @@
|
||||
#define DMA_TAG_CHAIN 3
|
||||
|
||||
extern __APE_DM3 v16s32 SVRReg;
|
||||
|
||||
#endif
|
||||
|
@ -27,12 +27,7 @@
|
||||
/* 收到消息后创建任务 */
|
||||
void ape6_event_task(uint32_t addr, uint32_t size)
|
||||
{
|
||||
osp_task_info_ex mgr_task =
|
||||
{PHY_TASK_RECIEVER_BIT, "Receiver_Bit", PHY_TASK_PRI_RECEIVER_BIT, 4096, OSP_EVENT_TYPE, 0x000, 0x000, 0, (OSP_TASKINIT_FUNC)Receiver_Bit_Init, (OSP_TASKENTRY_FUNC)Receiver_Bit_Task};
|
||||
|
||||
osp_task_create(&mgr_task);
|
||||
osp_timer_sync(1);
|
||||
LOG_INFO_S("APE6 finish task create!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -56,11 +51,16 @@ void ape6_event_task_del(uint32_t addr, uint32_t size)
|
||||
*/
|
||||
void Phy_Task_Ape6_Reg()
|
||||
{
|
||||
osp_task_info_ex ape6_event_task_info = {50, "ape6_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape6_event_task};
|
||||
osp_task_info_ex ape6_event_task_info_del = {51, "ape6_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape6_event_task_del};
|
||||
// osp_task_info_ex ape6_event_task_info = {50, "ape6_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape6_event_task};
|
||||
// osp_task_info_ex ape6_event_task_info_del = {51, "ape6_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape6_event_task_del};
|
||||
|
||||
osp_task_info_ex mgr_task =
|
||||
{PHY_TASK_RECIEVER_BIT, "Receiver_Bit", PHY_TASK_PRI_RECEIVER_BIT, 4096, OSP_EVENT_TYPE, 0x000, 0x000, 0, (OSP_TASKINIT_FUNC)Receiver_Bit_Init, (OSP_TASKENTRY_FUNC)Receiver_Bit_Task};
|
||||
// osp_task_create(&ape6_event_task_info);
|
||||
// osp_task_create(&ape6_event_task_info_del);
|
||||
osp_task_create(&mgr_task);
|
||||
LOG_INFO_S("APE6 finish task create!\n");
|
||||
|
||||
osp_task_create(&ape6_event_task_info);
|
||||
osp_task_create(&ape6_event_task_info_del);
|
||||
|
||||
return ;
|
||||
|
||||
|
@ -33,5 +33,4 @@
|
||||
#define DMA_TAG_CHAIN 19
|
||||
|
||||
extern __APE_DM3 v16s32 SVRReg;
|
||||
|
||||
#endif
|
||||
|
@ -27,12 +27,7 @@
|
||||
/* 收到消息后创建任务 */
|
||||
void ape7_event_task(uint32_t addr, uint32_t size)
|
||||
{
|
||||
osp_task_info_ex mgr_task =
|
||||
{PHY_TASK_RECIEVER_FIRST_SYNC, "Receiver_Sync_First_Sync", PHY_TASK_PRI_RECEIVER_FIRST_SYNC, 4096, OSP_EVENT_TYPE, 0x000, 0x000, 0, (OSP_TASKINIT_FUNC)Receiver_Sync_First_Init, (OSP_TASKENTRY_FUNC)Receiver_First_Sync_Proc};
|
||||
|
||||
osp_task_create(&mgr_task);
|
||||
osp_timer_sync(1);
|
||||
LOG_INFO_S("APE7 finish task create!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -56,11 +51,15 @@ void ape7_event_task_del(uint32_t addr, uint32_t size)
|
||||
*/
|
||||
void Phy_Task_Ape7_Reg()
|
||||
{
|
||||
osp_task_info_ex ape7_event_task_info = {50, "ape7_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape7_event_task};
|
||||
osp_task_info_ex ape7_event_task_info_del = {51, "ape7_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape7_event_task_del};
|
||||
// osp_task_info_ex ape7_event_task_info = {50, "ape7_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape7_event_task};
|
||||
// osp_task_info_ex ape7_event_task_info_del = {51, "ape7_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape7_event_task_del};
|
||||
osp_task_info_ex mgr_task =
|
||||
{PHY_TASK_RECIEVER_FIRST_SYNC, "Receiver_Sync_First_Sync", PHY_TASK_PRI_RECEIVER_FIRST_SYNC, 4096, OSP_EVENT_TYPE, 0x000, 0x000, 0, (OSP_TASKINIT_FUNC)Receiver_Sync_First_Init, (OSP_TASKENTRY_FUNC)Receiver_First_Sync_Proc};
|
||||
// osp_task_create(&ape7_event_task_info);
|
||||
// osp_task_create(&ape7_event_task_info_del);
|
||||
osp_task_create(&mgr_task);
|
||||
LOG_INFO_S("APE7 finish task create!\n");
|
||||
|
||||
osp_task_create(&ape7_event_task_info);
|
||||
osp_task_create(&ape7_event_task_info_del);
|
||||
|
||||
return ;
|
||||
|
||||
|
@ -21,10 +21,7 @@
|
||||
*/
|
||||
void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len)
|
||||
{
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
g_time_start[0] = TIME_US();
|
||||
RUN_CNT(TRACE_RECEIVER_BIT_ADDR, 0);
|
||||
|
||||
|
||||
@ -174,9 +171,8 @@ void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len)
|
||||
|
||||
TRACE(TRACE_RECEIVER_BIT_ADDR, 3, 100);
|
||||
RUN_CNT(TRACE_RECEIVER_BIT_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_BIT_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
|
||||
TRACE_MAX(TRACE_RECEIVER_BIT_ADDR, 2, Time_offset(0) );
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -22,9 +22,7 @@
|
||||
void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
||||
{
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
g_time_start[0] = TIME_US();
|
||||
RUN_CNT(TRACE_RECEIVER_SYMB_ADDR, 0);
|
||||
|
||||
|
||||
@ -177,9 +175,7 @@ void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 100);
|
||||
RUN_CNT(TRACE_RECEIVER_SYMB_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 2, Time_offset(0));
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ void Receiver_Sync_Proc(
|
||||
|
||||
uint32_t cur_sfn = get_rx_nr_sfn();
|
||||
uint32_t cur_slot = get_rx_nr_slot();
|
||||
uint32_t sync_status = LOAD_EX_W(&(g_receiver_sync_status_SM_ptr->sync_status));
|
||||
volatile sync_status = LOAD_EX_W(&(g_receiver_sync_status_SM_ptr->sync_status));
|
||||
|
||||
if(SYNC_FIRST_RUNING == sync_status)
|
||||
{
|
||||
@ -233,18 +233,15 @@ void Receiver_Sync_Proc(
|
||||
//用于跟踪同步
|
||||
void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
{
|
||||
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
//DBG
|
||||
return ;
|
||||
g_time_start[0] = TIME_US();
|
||||
uint16_t dbg_time0, dbg_time1;
|
||||
uint16_t dbg_slot0, dbg_slot1;
|
||||
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 0);
|
||||
|
||||
uint32_t ret;
|
||||
int32_t *cfg_addr;// 配置地址指针
|
||||
uint32_t time0 = TIME_US();
|
||||
uint32_t time0 = g_time_start;
|
||||
volatile uint32_t time1 = time0;
|
||||
uint32_t task_idx = 0;
|
||||
uint32_t frame_head_offset;
|
||||
@ -261,8 +258,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
Receiver_Sync_Memory_Alloc();
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 2);
|
||||
|
||||
dbg_slot0 = TIME_SLOT();
|
||||
dbg_time0 = TIME_US();
|
||||
dbg_time0 = Time_offset(0);
|
||||
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||
|
||||
if( 1 == (slot & 0x01) )
|
||||
@ -335,11 +331,10 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 3);
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
|
||||
uint32_t dbg_cur_time = TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 5, dbg_cur_time );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 5, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
// LOG_ERROR_S("%d %d %d\n", sfn, slot , dbg_cur_time);
|
||||
// if(100 < dbg_cur_time )
|
||||
// {
|
||||
@ -352,9 +347,6 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
// __ucps2_dbgbreak();
|
||||
// }
|
||||
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_time1;
|
||||
|
||||
//插空拷贝数据到SM,提供给sync_symb数据输入来源
|
||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(src_addr0),
|
||||
(uint64_t)(sync2symb_data_buffer[buffer_sel]),
|
||||
@ -375,11 +367,9 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 4);
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 6, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 6, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_time1;
|
||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||
SyncVerAsm(SVRReg);
|
||||
|
||||
@ -387,11 +377,9 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
|
||||
// 得到验证后的同步位置
|
||||
WAIT_MPU_STOP;
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 7, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 7, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_time1;
|
||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 5);
|
||||
uint32_t maxWindowSum = receiver_sync_temp_dm3_ptr[1];
|
||||
//更新最佳位置
|
||||
@ -454,11 +442,9 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_data_len , cylic_buffer_data_len);
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->cylic_buffer_proc_data_offset, cylic_buffer_proc_data_offset);
|
||||
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 8, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 8, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_time1;
|
||||
|
||||
//TODO:后续需要添加门限判断条件
|
||||
uint32_t threshold = 1;
|
||||
@ -488,8 +474,6 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
Receiver_Sync_Memory_Free();
|
||||
|
||||
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 2, Time_offset(0) );
|
||||
return;
|
||||
}
|
@ -162,16 +162,9 @@ void Receiver_Sync_First_Memory_Free( )
|
||||
void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_len)
|
||||
{
|
||||
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
g_time_start[0] = TIME_US();
|
||||
RUN_CNT(TRACE_RECEIVER_SYNC_FIRST_ADDR, 0);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const uint32_t loop_num = 1;
|
||||
uint32_t ret;
|
||||
uint16_t sfn = LOAD_EX_S(&msg_ptr->sfn);
|
||||
@ -182,12 +175,10 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
uint32_t total_nsample = sample_per_tti + addition_sample;
|
||||
uint32_t sample_per_csu = (total_nsample >> 1);
|
||||
uint32_t nsample_per_section = total_nsample / loop_num;
|
||||
uint32_t corr_dm_ptr;
|
||||
int32_t *cfg_addr;// 配置地址指针
|
||||
uint32_t maxPosition = 0;
|
||||
uint32_t maxsum;
|
||||
volatile uint16_t dbg_time0, dbg_time1;
|
||||
volatile uint16_t dbg_slot0, dbg_slot1;
|
||||
|
||||
//Proc的DM空间申请
|
||||
Receiver_Sync_First_Memory_Alloc();
|
||||
@ -195,8 +186,7 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
//寻找帧同步头,更新同步信息结构体
|
||||
|
||||
//搬移500us+数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||
dbg_slot0 = TIME_SLOT();
|
||||
dbg_time0 = TIME_US();
|
||||
dbg_time0 = Time_offset(0);
|
||||
uint32_t src_addr0;
|
||||
uint32_t src_addr1;
|
||||
if( 1 == (slot & 0x01) )
|
||||
@ -255,11 +245,9 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 4, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 4, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_time1;
|
||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 3);
|
||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||
ByteCopyAsm(SVRReg);
|
||||
@ -271,12 +259,11 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
// receiver_sync_first_temp_dm3_ptr);
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 5, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 5, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_slot1;
|
||||
dm_check(0);
|
||||
// dm_check(0);
|
||||
|
||||
cfg_addr = (int32_t *)receiver_sync_first_config_dm0_ptr + g_receiver_sync_first_table_param.ConfigSlidingCorrelation_CFG2_Offset;
|
||||
|
||||
@ -300,13 +287,11 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
SlidingCorrelationAsm(SVRReg);
|
||||
|
||||
WAIT_MPU_STOP;
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 6, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 6, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_slot1;
|
||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 5);
|
||||
dm_check(1);
|
||||
//dm_check(1);
|
||||
maxPosition = receiver_sync_first_temp_dm3_ptr[0];
|
||||
maxsum = receiver_sync_first_temp_dm3_ptr[1];
|
||||
|
||||
@ -322,12 +307,9 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
0);
|
||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 7, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 7, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_slot1;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -365,22 +347,18 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
MPU_ADDR(receiver_sync_first_temp_dm2_ptr),
|
||||
MPU_ADDR(receiver_sync_first_temp_dm3_ptr));
|
||||
WAIT_MPU_STOP;
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 8, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 8, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_slot1;
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 6);
|
||||
dm_check(2);
|
||||
//dm_check(2);
|
||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||
SlidingCorrelationSecondAsm(SVRReg);
|
||||
WAIT_MPU_STOP;
|
||||
dbg_slot1 = TIME_SLOT();
|
||||
dbg_time1 = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 9, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
||||
dbg_time1 = Time_offset(0);
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 9, dbg_time1-dbg_time0 );
|
||||
dbg_time0 = dbg_time1;
|
||||
dbg_slot0 = dbg_slot1;
|
||||
|
||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 7);
|
||||
|
||||
@ -390,7 +368,7 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
maxsum = receiver_sync_first_temp_dm3_ptr[1];
|
||||
}
|
||||
|
||||
dm_check(3);
|
||||
//dm_check(3);
|
||||
//TODO:后续需要添加门限判断条件
|
||||
uint32_t threshold = 1;
|
||||
if(threshold)
|
||||
@ -425,8 +403,6 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
|
||||
|
||||
RUN_CNT(TRACE_RECEIVER_SYNC_FIRST_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 2, Time_offset(0));
|
||||
return;
|
||||
}
|
||||
|
@ -4,9 +4,7 @@ void Test_Task()
|
||||
{
|
||||
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
g_time_start[0] = TIME_US();
|
||||
RUN_CNT(TRACE_TESTTASK_ADDR, 0);
|
||||
|
||||
uint32_t cur_sfn = get_rx_nr_sfn();
|
||||
@ -75,7 +73,5 @@ void Test_Task()
|
||||
|
||||
TRACE(TRACE_TESTTASK_ADDR, 3, 4);
|
||||
RUN_CNT(TRACE_TESTTASK_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
TRACE_MAX(TRACE_TESTTASK_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
TRACE_MAX(TRACE_TESTTASK_ADDR, 2, Time_offset(0) );
|
||||
}
|
||||
|
@ -28,9 +28,7 @@ void Transmitter_Task()
|
||||
|
||||
//时间统计
|
||||
uint16_t start_slot = TIME_SLOT();
|
||||
uint16_t start_us = TIME_US();
|
||||
uint16_t end_slot;
|
||||
uint16_t end_us;
|
||||
g_time_start[1] = TIME_US();
|
||||
uint16_t time0_us, time1_us;
|
||||
uint16_t time0_slot, time1_slot;
|
||||
RUN_CNT(TRACE_TRANSMITTER_ADDR, 0);
|
||||
@ -132,10 +130,9 @@ void Transmitter_Task()
|
||||
transmitter_temp_dm2_ptr = (int32_t *)ADDR_ALIGN(transmitter_malloc_dm2_ptr, 14); //起始地址16k对齐
|
||||
|
||||
TRACE(TRACE_TRANSMITTER_ADDR, 3, 2);
|
||||
time1_slot = TIME_SLOT();
|
||||
time1_us = TIME_US();
|
||||
time1_us = Time_offset(1);
|
||||
|
||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 4, TIME_DIFF(start_slot, start_us,time1_slot, time1_us));
|
||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 4, time1_us);
|
||||
time0_slot = time1_slot;
|
||||
time0_us = time1_us;
|
||||
//6. 计算流程
|
||||
@ -149,10 +146,8 @@ void Transmitter_Task()
|
||||
transmitter_cur_sfn
|
||||
);
|
||||
|
||||
time1_slot = TIME_SLOT();
|
||||
time1_us = TIME_US();
|
||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 5, TIME_DIFF(time0_slot, time0_us,time1_slot, time1_us));
|
||||
time0_slot = time1_slot;
|
||||
time1_us = Time_offset(1);
|
||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 5, time1_us - time0_us);
|
||||
time0_us = time1_us;
|
||||
|
||||
|
||||
@ -179,9 +174,7 @@ void Transmitter_Task()
|
||||
|
||||
TRACE(TRACE_TRANSMITTER_ADDR, 3, 1024);
|
||||
RUN_CNT(TRACE_TRANSMITTER_ADDR, 1);
|
||||
end_slot = TIME_SLOT();
|
||||
end_us = TIME_US();
|
||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
||||
LOG_ERROR_S("DM0:%d:%d, DM1:%d:%d,DM2:%d:%d,DM3:%d:%d\n",result00,result01,result10,result11,result20,result21,result30,result31);
|
||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 2, Time_offset(1) );
|
||||
//LOG_ERROR_S("DM0:%d:%d, DM1:%d:%d,DM2:%d:%d,DM3:%d:%d\n",result00,result01,result10,result11,result20,result21,result30,result31);
|
||||
return;
|
||||
}
|
||||
|
@ -12,7 +12,6 @@
|
||||
#ifndef LOG_INTERFACE_H
|
||||
#define LOG_INTERFACE_H
|
||||
#include <type_define.h>
|
||||
#include "osp_interface.h"
|
||||
#include "common.h"
|
||||
|
||||
|
||||
|
@ -86,8 +86,9 @@
|
||||
#define TRACE_TESTTASK_ADDR (TRACE_RECEIVER_BIT_ADDR + TRACE_GRP_LEN) // 0x88700a00
|
||||
#define TRACE_RECEIVER_SYNC_FIRST_ADDR (TRACE_TESTTASK_ADDR + TRACE_GRP_LEN) // 0x88700c00
|
||||
#define TRACE_RECEIVER_SYNC_FINE_ADDR (TRACE_RECEIVER_SYNC_FIRST_ADDR + TRACE_GRP_LEN) // 0x88700e00
|
||||
#define TRACE_PCIE_ADDR (TRACE_RECEIVER_SYNC_FINE_ADDR + TRACE_GRP_LEN) //0x88701000
|
||||
|
||||
#define TRACE_TRANSMITTER_ADDR (TRACE_RECEIVER_SYNC_FINE_ADDR + TRACE_GRP_LEN) // 0x88701000
|
||||
#define TRACE_TRANS_INIT_ADDR (TRACE_TRANSMITTER_ADDR + TRACE_GRP_LEN) // 0x88701200
|
||||
#define TRACE_TRANSMITTER_ADDR (TRACE_PCIE_ADDR + TRACE_GRP_LEN) // 0x88701200
|
||||
#define TRACE_TRANS_INIT_ADDR (TRACE_TRANSMITTER_ADDR + TRACE_GRP_LEN) // 0x88701400
|
||||
|
||||
#endif
|
||||
|
@ -12,7 +12,6 @@
|
||||
#ifndef TASK_DEFINE_H
|
||||
#define TASK_DEFINE_H
|
||||
#include <type_define.h>
|
||||
#include "osp_interface.h"
|
||||
#include "osp_ape.h"
|
||||
|
||||
typedef enum
|
||||
|
@ -28,14 +28,15 @@
|
||||
|
||||
#define RUN_CNT(base, offset) STORE_EX_W( (void*)((base) + 4*(offset)), LOAD_EX_W( (void*)((base) + 4*(offset)) ) + 1 )
|
||||
#define TIME_SLOT() (get_tx_nr_slot() )
|
||||
#define TIME_US() (uint16_t)((get_tx_nr_slot_cycle() * 2097) >> 21)
|
||||
#define TIME_US() (uint32_t)((GET_STC_CNT()* 2097) >> 21)
|
||||
#define TIME_NS() (uint32_t)((GET_STC_CNT())
|
||||
|
||||
#define TIME_DIFF(start_slot, start_us, end_slot, end_us) ((start_slot) <= (end_slot) )? \
|
||||
(( (end_slot) - (start_slot) ) * 500 + ( (end_us) - (start_us) )): \
|
||||
((NR_SFN_SLOT_NUM + (end_slot) - (start_slot) )* 500 + (end_us) - (start_us) ) \
|
||||
|
||||
|
||||
|
||||
extern uint32_t g_time_start[3];
|
||||
extern uint32_t Time_offset(uint32_t idx);
|
||||
//#define TIME_RECORD(base, offset, time0) STORE_EX_W( (void*)((base) + 4*(offset)), GET_STC_CNT() - time0)
|
||||
|
||||
#endif
|
12
Common/src/trace.s.c
Normal file
12
Common/src/trace.s.c
Normal file
@ -0,0 +1,12 @@
|
||||
#include "trace.h"
|
||||
|
||||
uint32_t g_time_start[3];
|
||||
__attribute__((always_inline)) uint32_t Time_offset(uint32_t idx)
|
||||
{
|
||||
#ifndef IDE_TEST
|
||||
uint32_t cur_cycle = TIME_US();
|
||||
return (cur_cycle < g_time_start[idx]) ? (cur_cycle + (0x389aca00 - g_time_start[idx])) : (cur_cycle - g_time_start[idx]);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
@ -6,7 +6,7 @@
|
||||
typedef struct receiver_sync_status_s
|
||||
{
|
||||
uint32_t cylic_buffer_data_offset;//循环buffer指示数据存入的头相对buffer_ptr[0]偏移
|
||||
uint32_t cylic_buffer_proc_data_offset;//循环buffer指示数据处理的头相对buffer_ptr[0]偏移
|
||||
int32_t cylic_buffer_proc_data_offset;//循环buffer指示数据处理的头相对buffer_ptr[0]偏移
|
||||
uint32_t cylic_buffer_data_len;//单位是Word
|
||||
uint32_t sync_status;//参见receiver_sync_status_e
|
||||
uint32_t frame_head_offset;//每个500us中帧头的偏移值,范围0~61439
|
||||
|
Loading…
x
Reference in New Issue
Block a user