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",
|
"mem_sections.h": "c",
|
||||||
"msg_transfer_layer.h": "c",
|
"msg_transfer_layer.h": "c",
|
||||||
"typedef.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 "log_interface.h"
|
||||||
#include "Frame_test.h"
|
#include "Frame_test.h"
|
||||||
#include "trace.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()
|
void Slot_ind_Task()
|
||||||
{
|
{
|
||||||
uint16_t start_slot = TIME_SLOT();
|
uint16_t start_slot = TIME_SLOT();
|
||||||
uint16_t start_us = TIME_US();
|
g_time_start[0] = TIME_US();
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
RUN_CNT(TRACE_SLOTIND_ADDR, 0);
|
RUN_CNT(TRACE_SLOTIND_ADDR, 0);
|
||||||
|
|
||||||
|
|
||||||
@ -34,8 +32,5 @@ void Slot_ind_Task()
|
|||||||
osp_phy_msg_send((char*)msg_header, msg_len);
|
osp_phy_msg_send((char*)msg_header, msg_len);
|
||||||
|
|
||||||
RUN_CNT(TRACE_SLOTIND_ADDR, 1);
|
RUN_CNT(TRACE_SLOTIND_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
TRACE_MAX(TRACE_SLOTIND_ADDR, 2, Time_offset(0) );
|
||||||
end_us = TIME_US();
|
|
||||||
|
|
||||||
TRACE_MAX(TRACE_SLOTIND_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
|
||||||
}
|
}
|
@ -33,5 +33,4 @@
|
|||||||
#define DMA_TAG_CHAIN 3
|
#define DMA_TAG_CHAIN 3
|
||||||
|
|
||||||
extern __APE_DM3 v16s32 SVRReg;
|
extern __APE_DM3 v16s32 SVRReg;
|
||||||
|
|
||||||
#endif
|
#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};
|
{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 =
|
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};
|
{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);
|
TRACE(TRACE_RECV_INIT_ADDR, 2, 1);
|
||||||
|
|
||||||
osp_task_create(&mgr_task2);
|
osp_task_create(&mgr_task2);
|
||||||
|
osp_task_create(&pcie_normal_task_info);
|
||||||
TRACE(TRACE_RECV_INIT_ADDR, 3, 1);
|
TRACE(TRACE_RECV_INIT_ADDR, 3, 1);
|
||||||
LOG_INFO_S("APE4 finish task create!\n");
|
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};
|
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();
|
//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);
|
||||||
osp_task_create(&ape4_event_task_info_del);
|
osp_task_create(&ape4_event_task_info_del);
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
//lxh 202501
|
//lxh 202501
|
||||||
#include "mem_sections.h"
|
#include "mem_sections.h"
|
||||||
#include "drv_ape.h"
|
#include "drv_ape.h"
|
||||||
|
#include "trace.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -458,15 +459,15 @@ void test_speed_recv_msg_pcie()
|
|||||||
handler.inst_id = i;
|
handler.inst_id = i;
|
||||||
handler.type_id = CU_SPLIT;
|
handler.type_id = CU_SPLIT;
|
||||||
cu_flag = C_PLANE;
|
cu_flag = C_PLANE;
|
||||||
|
TRACE(TRACE_PCIE_ADDR, 3, 3);
|
||||||
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
||||||
|
TRACE(TRACE_PCIE_ADDR, 3, 4);
|
||||||
cu_flag = U_PLANE;
|
cu_flag = U_PLANE;
|
||||||
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
||||||
|
TRACE(TRACE_PCIE_ADDR, 3, 5);
|
||||||
handler.type_id = OAM;
|
handler.type_id = OAM;
|
||||||
msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr);
|
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)
|
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 clockTick = 0;
|
||||||
// uint32_t clockOffset = 0;
|
// uint32_t clockOffset = 0;
|
||||||
|
TRACE(TRACE_PCIE_ADDR, 3, 1);
|
||||||
test_case_sendmsg_pcie();
|
test_case_sendmsg_pcie();
|
||||||
|
TRACE(TRACE_PCIE_ADDR, 3, 2);
|
||||||
#ifdef PCIE_WITH_JESD
|
#ifdef PCIE_WITH_JESD
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -485,6 +490,10 @@ void pcie_test_task_func(void)
|
|||||||
debug_write(DBG_DDR_COMMON_IDX(get_core_id(),17), 0x70701040);
|
debug_write(DBG_DDR_COMMON_IDX(get_core_id(),17), 0x70701040);
|
||||||
//delay_us(50);
|
//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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,5 +33,4 @@
|
|||||||
#define DMA_TAG_CHAIN 19
|
#define DMA_TAG_CHAIN 19
|
||||||
|
|
||||||
extern __APE_DM3 v16s32 SVRReg;
|
extern __APE_DM3 v16s32 SVRReg;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,12 +27,7 @@
|
|||||||
/* 收到消息后创建任务 */
|
/* 收到消息后创建任务 */
|
||||||
void ape5_event_task(uint32_t addr, uint32_t size)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,12 +51,14 @@ void ape5_event_task_del(uint32_t addr, uint32_t size)
|
|||||||
*/
|
*/
|
||||||
void Phy_Task_Ape5_Reg()
|
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 = {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 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(&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 ;
|
return ;
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,5 +33,4 @@
|
|||||||
#define DMA_TAG_CHAIN 3
|
#define DMA_TAG_CHAIN 3
|
||||||
|
|
||||||
extern __APE_DM3 v16s32 SVRReg;
|
extern __APE_DM3 v16s32 SVRReg;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,12 +27,7 @@
|
|||||||
/* 收到消息后创建任务 */
|
/* 收到消息后创建任务 */
|
||||||
void ape6_event_task(uint32_t addr, uint32_t size)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,11 +51,16 @@ void ape6_event_task_del(uint32_t addr, uint32_t size)
|
|||||||
*/
|
*/
|
||||||
void Phy_Task_Ape6_Reg()
|
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 = {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_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 ;
|
return ;
|
||||||
|
|
||||||
|
@ -33,5 +33,4 @@
|
|||||||
#define DMA_TAG_CHAIN 19
|
#define DMA_TAG_CHAIN 19
|
||||||
|
|
||||||
extern __APE_DM3 v16s32 SVRReg;
|
extern __APE_DM3 v16s32 SVRReg;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,12 +27,7 @@
|
|||||||
/* 收到消息后创建任务 */
|
/* 收到消息后创建任务 */
|
||||||
void ape7_event_task(uint32_t addr, uint32_t size)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,11 +51,15 @@ void ape7_event_task_del(uint32_t addr, uint32_t size)
|
|||||||
*/
|
*/
|
||||||
void Phy_Task_Ape7_Reg()
|
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 = {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_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 ;
|
return ;
|
||||||
|
|
||||||
|
@ -21,10 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len)
|
void Receiver_Bit_Task(void* msg_ptr, uint32_t msg_len)
|
||||||
{
|
{
|
||||||
uint16_t start_slot = TIME_SLOT();
|
g_time_start[0] = TIME_US();
|
||||||
uint16_t start_us = TIME_US();
|
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
RUN_CNT(TRACE_RECEIVER_BIT_ADDR, 0);
|
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);
|
TRACE(TRACE_RECEIVER_BIT_ADDR, 3, 100);
|
||||||
RUN_CNT(TRACE_RECEIVER_BIT_ADDR, 1);
|
RUN_CNT(TRACE_RECEIVER_BIT_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
|
||||||
end_us = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_BIT_ADDR, 2, Time_offset(0) );
|
||||||
TRACE_MAX(TRACE_RECEIVER_BIT_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,7 @@
|
|||||||
void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
void Receiver_Symb_Task(receiver_sync2symb_t* msg_ptr, uint32_t msg_len)
|
||||||
{
|
{
|
||||||
uint16_t start_slot = TIME_SLOT();
|
uint16_t start_slot = TIME_SLOT();
|
||||||
uint16_t start_us = TIME_US();
|
g_time_start[0] = TIME_US();
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
RUN_CNT(TRACE_RECEIVER_SYMB_ADDR, 0);
|
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);
|
TRACE(TRACE_RECEIVER_SYMB_ADDR, 3, 100);
|
||||||
RUN_CNT(TRACE_RECEIVER_SYMB_ADDR, 1);
|
RUN_CNT(TRACE_RECEIVER_SYMB_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 2, Time_offset(0));
|
||||||
end_us = TIME_US();
|
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYMB_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ void Receiver_Sync_Proc(
|
|||||||
|
|
||||||
uint32_t cur_sfn = get_rx_nr_sfn();
|
uint32_t cur_sfn = get_rx_nr_sfn();
|
||||||
uint32_t cur_slot = get_rx_nr_slot();
|
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)
|
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)
|
void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||||
{
|
{
|
||||||
|
//DBG
|
||||||
uint16_t start_slot = TIME_SLOT();
|
return ;
|
||||||
uint16_t start_us = TIME_US();
|
g_time_start[0] = TIME_US();
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
uint16_t dbg_time0, dbg_time1;
|
uint16_t dbg_time0, dbg_time1;
|
||||||
uint16_t dbg_slot0, dbg_slot1;
|
|
||||||
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 0);
|
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 0);
|
||||||
|
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
int32_t *cfg_addr;// 配置地址指针
|
int32_t *cfg_addr;// 配置地址指针
|
||||||
uint32_t time0 = TIME_US();
|
uint32_t time0 = g_time_start;
|
||||||
volatile uint32_t time1 = time0;
|
volatile uint32_t time1 = time0;
|
||||||
uint32_t task_idx = 0;
|
uint32_t task_idx = 0;
|
||||||
uint32_t frame_head_offset;
|
uint32_t frame_head_offset;
|
||||||
@ -261,8 +258,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
Receiver_Sync_Memory_Alloc();
|
Receiver_Sync_Memory_Alloc();
|
||||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 2);
|
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 2);
|
||||||
|
|
||||||
dbg_slot0 = TIME_SLOT();
|
dbg_time0 = Time_offset(0);
|
||||||
dbg_time0 = TIME_US();
|
|
||||||
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
//搬移1055sample数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||||
|
|
||||||
if( 1 == (slot & 0x01) )
|
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);
|
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 3);
|
||||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
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);
|
dbg_time1 = Time_offset(0);
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 5, dbg_cur_time );
|
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);
|
// LOG_ERROR_S("%d %d %d\n", sfn, slot , dbg_cur_time);
|
||||||
// if(100 < 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();
|
// __ucps2_dbgbreak();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
dbg_time0 = dbg_time1;
|
|
||||||
dbg_slot0 = dbg_time1;
|
|
||||||
|
|
||||||
//插空拷贝数据到SM,提供给sync_symb数据输入来源
|
//插空拷贝数据到SM,提供给sync_symb数据输入来源
|
||||||
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(src_addr0),
|
ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(src_addr0),
|
||||||
(uint64_t)(sync2symb_data_buffer[buffer_sel]),
|
(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;
|
WAIT_MPU_STOP;
|
||||||
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 4);
|
TRACE(TRACE_RECEIVER_SYNC_FINE_ADDR, 3, 4);
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 6, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 6, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_time1;
|
|
||||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||||
SyncVerAsm(SVRReg);
|
SyncVerAsm(SVRReg);
|
||||||
|
|
||||||
@ -387,11 +377,9 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
|
|
||||||
// 得到验证后的同步位置
|
// 得到验证后的同步位置
|
||||||
WAIT_MPU_STOP;
|
WAIT_MPU_STOP;
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 7, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 7, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_time1;
|
|
||||||
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];
|
||||||
//更新最佳位置
|
//更新最佳位置
|
||||||
@ -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_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);
|
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_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 8, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 8, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_time1;
|
|
||||||
|
|
||||||
//TODO:后续需要添加门限判断条件
|
//TODO:后续需要添加门限判断条件
|
||||||
uint32_t threshold = 1;
|
uint32_t threshold = 1;
|
||||||
@ -488,8 +474,6 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
|||||||
Receiver_Sync_Memory_Free();
|
Receiver_Sync_Memory_Free();
|
||||||
|
|
||||||
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 1);
|
RUN_CNT(TRACE_RECEIVER_SYNC_FINE_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 2, Time_offset(0) );
|
||||||
end_us = TIME_US();
|
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FINE_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
|
||||||
return;
|
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)
|
void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_len)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint16_t start_slot = TIME_SLOT();
|
g_time_start[0] = TIME_US();
|
||||||
uint16_t start_us = TIME_US();
|
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
RUN_CNT(TRACE_RECEIVER_SYNC_FIRST_ADDR, 0);
|
RUN_CNT(TRACE_RECEIVER_SYNC_FIRST_ADDR, 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const uint32_t loop_num = 1;
|
const uint32_t loop_num = 1;
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
uint16_t sfn = LOAD_EX_S(&msg_ptr->sfn);
|
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 total_nsample = sample_per_tti + addition_sample;
|
||||||
uint32_t sample_per_csu = (total_nsample >> 1);
|
uint32_t sample_per_csu = (total_nsample >> 1);
|
||||||
uint32_t nsample_per_section = total_nsample / loop_num;
|
uint32_t nsample_per_section = total_nsample / loop_num;
|
||||||
uint32_t corr_dm_ptr;
|
|
||||||
int32_t *cfg_addr;// 配置地址指针
|
int32_t *cfg_addr;// 配置地址指针
|
||||||
uint32_t maxPosition = 0;
|
uint32_t maxPosition = 0;
|
||||||
uint32_t maxsum;
|
uint32_t maxsum;
|
||||||
volatile uint16_t dbg_time0, dbg_time1;
|
volatile uint16_t dbg_time0, dbg_time1;
|
||||||
volatile uint16_t dbg_slot0, dbg_slot1;
|
|
||||||
|
|
||||||
//Proc的DM空间申请
|
//Proc的DM空间申请
|
||||||
Receiver_Sync_First_Memory_Alloc();
|
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数据,反之
|
//搬移500us+数据供定时同步,奇数slot处理偶buffer数据,反之
|
||||||
dbg_slot0 = TIME_SLOT();
|
dbg_time0 = Time_offset(0);
|
||||||
dbg_time0 = TIME_US();
|
|
||||||
uint32_t src_addr0;
|
uint32_t src_addr0;
|
||||||
uint32_t src_addr1;
|
uint32_t src_addr1;
|
||||||
if( 1 == (slot & 0x01) )
|
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);
|
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||||
|
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 4, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 4, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_time1;
|
|
||||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 3);
|
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 3);
|
||||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||||
ByteCopyAsm(SVRReg);
|
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);
|
// receiver_sync_first_temp_dm3_ptr);
|
||||||
|
|
||||||
WAIT_MPU_STOP;
|
WAIT_MPU_STOP;
|
||||||
dbg_slot1 = TIME_SLOT();
|
|
||||||
dbg_time1 = TIME_US();
|
dbg_time1 = Time_offset(0);
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 5, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 5, dbg_time1-dbg_time0 );
|
||||||
dbg_time0 = dbg_time1;
|
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;
|
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);
|
SlidingCorrelationAsm(SVRReg);
|
||||||
|
|
||||||
WAIT_MPU_STOP;
|
WAIT_MPU_STOP;
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 6, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 6, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_slot1;
|
|
||||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 5);
|
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 5);
|
||||||
dm_check(1);
|
//dm_check(1);
|
||||||
maxPosition = receiver_sync_first_temp_dm3_ptr[0];
|
maxPosition = receiver_sync_first_temp_dm3_ptr[0];
|
||||||
maxsum = receiver_sync_first_temp_dm3_ptr[1];
|
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);
|
0);
|
||||||
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
ape_csu_task_lookup(DMA_TAG_G2L, 1);
|
||||||
|
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 7, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 7, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
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_dm2_ptr),
|
||||||
MPU_ADDR(receiver_sync_first_temp_dm3_ptr));
|
MPU_ADDR(receiver_sync_first_temp_dm3_ptr));
|
||||||
WAIT_MPU_STOP;
|
WAIT_MPU_STOP;
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 8, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 8, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_slot1;
|
|
||||||
|
|
||||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 6);
|
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 6);
|
||||||
dm_check(2);
|
//dm_check(2);
|
||||||
SVRReg[0] = MPU_ADDR(cfg_addr);
|
SVRReg[0] = MPU_ADDR(cfg_addr);
|
||||||
SlidingCorrelationSecondAsm(SVRReg);
|
SlidingCorrelationSecondAsm(SVRReg);
|
||||||
WAIT_MPU_STOP;
|
WAIT_MPU_STOP;
|
||||||
dbg_slot1 = TIME_SLOT();
|
dbg_time1 = Time_offset(0);
|
||||||
dbg_time1 = TIME_US();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 9, dbg_time1-dbg_time0 );
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 9, TIME_DIFF(dbg_slot0, dbg_time0, dbg_slot1, dbg_time1) );
|
|
||||||
dbg_time0 = dbg_time1;
|
dbg_time0 = dbg_time1;
|
||||||
dbg_slot0 = dbg_slot1;
|
|
||||||
|
|
||||||
TRACE(TRACE_RECEIVER_SYNC_FIRST_ADDR, 3, 7);
|
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];
|
maxsum = receiver_sync_first_temp_dm3_ptr[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
dm_check(3);
|
//dm_check(3);
|
||||||
//TODO:后续需要添加门限判断条件
|
//TODO:后续需要添加门限判断条件
|
||||||
uint32_t threshold = 1;
|
uint32_t threshold = 1;
|
||||||
if(threshold)
|
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);
|
RUN_CNT(TRACE_RECEIVER_SYNC_FIRST_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 2, Time_offset(0));
|
||||||
end_us = TIME_US();
|
|
||||||
TRACE_MAX(TRACE_RECEIVER_SYNC_FIRST_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,7 @@ void Test_Task()
|
|||||||
{
|
{
|
||||||
|
|
||||||
uint16_t start_slot = TIME_SLOT();
|
uint16_t start_slot = TIME_SLOT();
|
||||||
uint16_t start_us = TIME_US();
|
g_time_start[0] = TIME_US();
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
RUN_CNT(TRACE_TESTTASK_ADDR, 0);
|
RUN_CNT(TRACE_TESTTASK_ADDR, 0);
|
||||||
|
|
||||||
uint32_t cur_sfn = get_rx_nr_sfn();
|
uint32_t cur_sfn = get_rx_nr_sfn();
|
||||||
@ -75,7 +73,5 @@ void Test_Task()
|
|||||||
|
|
||||||
TRACE(TRACE_TESTTASK_ADDR, 3, 4);
|
TRACE(TRACE_TESTTASK_ADDR, 3, 4);
|
||||||
RUN_CNT(TRACE_TESTTASK_ADDR, 1);
|
RUN_CNT(TRACE_TESTTASK_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
TRACE_MAX(TRACE_TESTTASK_ADDR, 2, Time_offset(0) );
|
||||||
end_us = TIME_US();
|
|
||||||
TRACE_MAX(TRACE_TESTTASK_ADDR, 2, TIME_DIFF(start_slot, start_us, end_slot, end_us) );
|
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,7 @@ void Transmitter_Task()
|
|||||||
|
|
||||||
//时间统计
|
//时间统计
|
||||||
uint16_t start_slot = TIME_SLOT();
|
uint16_t start_slot = TIME_SLOT();
|
||||||
uint16_t start_us = TIME_US();
|
g_time_start[1] = TIME_US();
|
||||||
uint16_t end_slot;
|
|
||||||
uint16_t end_us;
|
|
||||||
uint16_t time0_us, time1_us;
|
uint16_t time0_us, time1_us;
|
||||||
uint16_t time0_slot, time1_slot;
|
uint16_t time0_slot, time1_slot;
|
||||||
RUN_CNT(TRACE_TRANSMITTER_ADDR, 0);
|
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对齐
|
transmitter_temp_dm2_ptr = (int32_t *)ADDR_ALIGN(transmitter_malloc_dm2_ptr, 14); //起始地址16k对齐
|
||||||
|
|
||||||
TRACE(TRACE_TRANSMITTER_ADDR, 3, 2);
|
TRACE(TRACE_TRANSMITTER_ADDR, 3, 2);
|
||||||
time1_slot = TIME_SLOT();
|
time1_us = Time_offset(1);
|
||||||
time1_us = TIME_US();
|
|
||||||
|
|
||||||
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_slot = time1_slot;
|
||||||
time0_us = time1_us;
|
time0_us = time1_us;
|
||||||
//6. 计算流程
|
//6. 计算流程
|
||||||
@ -149,10 +146,8 @@ void Transmitter_Task()
|
|||||||
transmitter_cur_sfn
|
transmitter_cur_sfn
|
||||||
);
|
);
|
||||||
|
|
||||||
time1_slot = TIME_SLOT();
|
time1_us = Time_offset(1);
|
||||||
time1_us = TIME_US();
|
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 5, time1_us - time0_us);
|
||||||
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 5, TIME_DIFF(time0_slot, time0_us,time1_slot, time1_us));
|
|
||||||
time0_slot = time1_slot;
|
|
||||||
time0_us = time1_us;
|
time0_us = time1_us;
|
||||||
|
|
||||||
|
|
||||||
@ -179,9 +174,7 @@ void Transmitter_Task()
|
|||||||
|
|
||||||
TRACE(TRACE_TRANSMITTER_ADDR, 3, 1024);
|
TRACE(TRACE_TRANSMITTER_ADDR, 3, 1024);
|
||||||
RUN_CNT(TRACE_TRANSMITTER_ADDR, 1);
|
RUN_CNT(TRACE_TRANSMITTER_ADDR, 1);
|
||||||
end_slot = TIME_SLOT();
|
TRACE_MAX(TRACE_TRANSMITTER_ADDR, 2, Time_offset(1) );
|
||||||
end_us = TIME_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_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);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#ifndef LOG_INTERFACE_H
|
#ifndef LOG_INTERFACE_H
|
||||||
#define LOG_INTERFACE_H
|
#define LOG_INTERFACE_H
|
||||||
#include <type_define.h>
|
#include <type_define.h>
|
||||||
#include "osp_interface.h"
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,8 +86,9 @@
|
|||||||
#define TRACE_TESTTASK_ADDR (TRACE_RECEIVER_BIT_ADDR + TRACE_GRP_LEN) // 0x88700a00
|
#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_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_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_TRANSMITTER_ADDR (TRACE_PCIE_ADDR + TRACE_GRP_LEN) // 0x88701200
|
||||||
#define TRACE_TRANS_INIT_ADDR (TRACE_TRANSMITTER_ADDR + TRACE_GRP_LEN) // 0x88701200
|
#define TRACE_TRANS_INIT_ADDR (TRACE_TRANSMITTER_ADDR + TRACE_GRP_LEN) // 0x88701400
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#ifndef TASK_DEFINE_H
|
#ifndef TASK_DEFINE_H
|
||||||
#define TASK_DEFINE_H
|
#define TASK_DEFINE_H
|
||||||
#include <type_define.h>
|
#include <type_define.h>
|
||||||
#include "osp_interface.h"
|
|
||||||
#include "osp_ape.h"
|
#include "osp_ape.h"
|
||||||
|
|
||||||
typedef enum
|
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 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_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) )? \
|
#define TIME_DIFF(start_slot, start_us, end_slot, end_us) ((start_slot) <= (end_slot) )? \
|
||||||
(( (end_slot) - (start_slot) ) * 500 + ( (end_us) - (start_us) )): \
|
(( (end_slot) - (start_slot) ) * 500 + ( (end_us) - (start_us) )): \
|
||||||
((NR_SFN_SLOT_NUM + (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)
|
//#define TIME_RECORD(base, offset, time0) STORE_EX_W( (void*)((base) + 4*(offset)), GET_STC_CNT() - time0)
|
||||||
|
|
||||||
#endif
|
#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
|
typedef struct receiver_sync_status_s
|
||||||
{
|
{
|
||||||
uint32_t cylic_buffer_data_offset;//循环buffer指示数据存入的头相对buffer_ptr[0]偏移
|
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 cylic_buffer_data_len;//单位是Word
|
||||||
uint32_t sync_status;//参见receiver_sync_status_e
|
uint32_t sync_status;//参见receiver_sync_status_e
|
||||||
uint32_t frame_head_offset;//每个500us中帧头的偏移值,范围0~61439
|
uint32_t frame_head_offset;//每个500us中帧头的偏移值,范围0~61439
|
||||||
|
Loading…
x
Reference in New Issue
Block a user