From 05f3cd0b36b1b2e0ce0cdd26fa9387501939301d Mon Sep 17 00:00:00 2001 From: HUOHUO Date: Wed, 23 Apr 2025 10:29:00 -0700 Subject: [PATCH] =?UTF-8?q?1.recv=5Fdatabuffer=E5=A4=A7=E5=B0=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA6=202.pcie=E7=8A=B6=E6=80=81=E6=9C=BA?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=9B=B4=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 +- APE7/ApeTask/src/Fucp_Ape7_pcie_testcase.s.c | 8 ++-- APELib/Receiver_sync/inc/receiver_sync_func.h | 4 +- APELib/Receiver_sync/inc/receiver_sync_vars.h | 2 +- .../Receiver_sync/src/receiver_Sync_Init.s.c | 3 +- .../Receiver_sync/src/receiver_Sync_Proc.s.c | 10 ++--- .../inc/receiver_sync_first_func.h | 3 +- .../inc/receiver_sync_first_vars.h | 2 +- Common/inc/mem_def.h | 41 ++++++++----------- 9 files changed, 36 insertions(+), 41 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 01cc7e3..e78068b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -37,6 +37,8 @@ "ucps2.h": "c", "channelest.h": "c", "interface_rec_sync2_pcie.h": "c", - "fucp_ape7_pcie_testcase.h": "c" + "fucp_ape7_pcie_testcase.h": "c", + "receiver_sync_vars.h": "c", + "receiver_sync_first_vars.h": "c" } } \ No newline at end of file diff --git a/APE7/ApeTask/src/Fucp_Ape7_pcie_testcase.s.c b/APE7/ApeTask/src/Fucp_Ape7_pcie_testcase.s.c index 1bc5b5e..1accfe1 100644 --- a/APE7/ApeTask/src/Fucp_Ape7_pcie_testcase.s.c +++ b/APE7/ApeTask/src/Fucp_Ape7_pcie_testcase.s.c @@ -34,6 +34,7 @@ #include "interface_rec_sync2_pcie.h" #include "Fucp_Ape7_pcie_testcase.h" #include "mem_def.h" +#include "interface_rec_sync2_rec_sync_first.h" @@ -478,7 +479,7 @@ void test_speed_recv_msg_pcie() void pcie_test_task_func(receiver_sync2pcie_t* msg_ptr, uint32_t msg_len) { //获取状态机状态 - volatile uint32_t status_SM_addr= (uint32_t)RECEIVER_SYNC2SYNC_FIRST_INF_ADDR; + receiver_sync_status_t* status_SM_addr= (uint32_t)RECEIVER_SYNC2SYNC_FIRST_INF_ADDR; /*typedef enum { SYNC_IDLE=0, @@ -486,7 +487,7 @@ void pcie_test_task_func(receiver_sync2pcie_t* msg_ptr, uint32_t msg_len) SYNC_AI_PROCECING, SYNC_TRACKING }receiver_sync_status_e;*/ - if(2 != LOAD_EX_W(status_SM_addr)) + if(2 != LOAD_EX_W(status_SM_addr->sync_status)) return ; //提供的数据地址(DDR)和本次数据的SFN SLOT号 uint32_t sfn = msg_ptr->sfn; @@ -520,8 +521,7 @@ void pcie_test_task_func(receiver_sync2pcie_t* msg_ptr, uint32_t msg_len) //TODO:接收到RK3588的数据后,必须更新状态机后级模块才能工作 //WARNING:需要使用这个代码 #if 0 - volatile uint32_t status_SM_addr= (uint32_t)RECEIVER_SYNC2SYNC_FIRST_INF_ADDR; - STORE_EX_W(status_SM_addr , 3); + STORE_EX_W(status_SM_addr->sync_status , 3); __ucps2_synch(0); #endif diff --git a/APELib/Receiver_sync/inc/receiver_sync_func.h b/APELib/Receiver_sync/inc/receiver_sync_func.h index 74bbd2f..1aa1c5d 100644 --- a/APELib/Receiver_sync/inc/receiver_sync_func.h +++ b/APELib/Receiver_sync/inc/receiver_sync_func.h @@ -24,7 +24,7 @@ #include "trace.h" #include "interface_rec_sync2_rec_sync_first.h" #include "interface_rec_sync2_pcie.h" - +#include "receiver_sync_vars.h" //include mpu header files #include "ByteCopy.h" @@ -48,7 +48,7 @@ extern int32_t *receiver_sync_temp_dm2_ptr; extern int32_t *receiver_sync_temp_dm3_ptr; extern receiver_sync_status_t* g_receiver_sync_status_SM_ptr; -extern uint32_t sync2symb_data_buffer[4]; +extern uint32_t sync2symb_data_buffer[RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER]; extern receiver_sync2symb_t data_send2symb_task[3]; extern uint16_t g_proc_id; diff --git a/APELib/Receiver_sync/inc/receiver_sync_vars.h b/APELib/Receiver_sync/inc/receiver_sync_vars.h index 0fe05d4..ba0be25 100644 --- a/APELib/Receiver_sync/inc/receiver_sync_vars.h +++ b/APELib/Receiver_sync/inc/receiver_sync_vars.h @@ -1,6 +1,6 @@ #ifndef RECEIVER_SYNC_VARS_H #define RECEIVER_SYNC_VARS_H -#define RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER (4) +#define RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER (6) #endif \ No newline at end of file diff --git a/APELib/Receiver_sync/src/receiver_Sync_Init.s.c b/APELib/Receiver_sync/src/receiver_Sync_Init.s.c index 9529aa3..78e030a 100644 --- a/APELib/Receiver_sync/src/receiver_Sync_Init.s.c +++ b/APELib/Receiver_sync/src/receiver_Sync_Init.s.c @@ -87,7 +87,8 @@ void Receiver_Sync_Init() sync2symb_data_buffer[1] = RECEIVER_SYNC2SYMB_BUFFER1_ADDR; sync2symb_data_buffer[2] = RECEIVER_SYNC2SYMB_BUFFER2_ADDR; sync2symb_data_buffer[3] = RECEIVER_SYNC2SYMB_BUFFER3_ADDR; - + sync2symb_data_buffer[4] = RECEIVER_SYNC2SYMB_BUFFER4_ADDR; + sync2symb_data_buffer[5] = RECEIVER_SYNC2SYMB_BUFFER5_ADDR; g_proc_id = 0; #ifdef RECV_DBG_DATA_TEST diff --git a/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c b/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c index 6a3bae1..2f11f84 100644 --- a/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c +++ b/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c @@ -421,16 +421,16 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot, uint32_t proc_type) //填写给symb任务的调度信息 data_send2symb_task[task_idx].sfn = sfn; data_send2symb_task[task_idx].slot = slot; - data_send2symb_task[task_idx].num_data_section = (offset_temp > (61440 * 4) && (offset_temp < (61440 * 5)) ) ? 2 : 1; + data_send2symb_task[task_idx].num_data_section = (offset_temp >= (61440 * RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER) && (offset_temp < (61440 * (RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER+1))) ) ? 2 : 1; data_send2symb_task[task_idx].proc_id = g_proc_id; - data_send2symb_task[task_idx].data_section0_ptr = sync2symb_data_buffer[0] + (((offset_temp - 61440) % (61440*4))<<2); - data_send2symb_task[task_idx].data_section0_length = (offset_temp > (61440 * 4)) ? ((61440 * 4) - (offset_temp - 61440)) : 61440; + data_send2symb_task[task_idx].data_section0_ptr = sync2symb_data_buffer[0] + (((offset_temp - 61440) % (61440*RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER))<<2); + data_send2symb_task[task_idx].data_section0_length = (offset_temp > (61440 * RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER)) ? ((61440 * RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER) - (offset_temp - 61440)) : 61440; data_send2symb_task[task_idx].data_section1_ptr = (2 == data_send2symb_task[task_idx].num_data_section) ? (sync2symb_data_buffer[0]) : 0; data_send2symb_task[task_idx].data_section1_length = (2 == data_send2symb_task[task_idx].num_data_section) ? (61440 - data_send2symb_task[task_idx].data_section0_length) : 0; //维护状态信息 cylic_buffer_data_len = cylic_buffer_data_offset_temp - offset_temp; - cylic_buffer_proc_data_offset = offset_temp % (61440*4); + cylic_buffer_proc_data_offset = offset_temp % (61440*RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER); //为了适配SYMB接口,如果数据是两段,搬移成一块 if(2 == data_send2symb_task[task_idx].num_data_section) @@ -445,7 +445,7 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot, uint32_t proc_type) //发核间消息给SYMB_TASK, slot号为偶数APE5处理,奇数APE3处理 if(SYNC_TRACKING == proc_type) { - uint32_t symb_proc_core_sel = (0 == ((task_idx +slot) & 0x1)) ? APE5_CORE_ID : APE3_CORE_ID; + uint32_t symb_proc_core_sel = (0 == (slot & 0x1)) ? APE5_CORE_ID : APE3_CORE_ID; phy_et_msg_send((uint32_t)(&data_send2symb_task[task_idx]), diff --git a/APELib/Receiver_sync_first/inc/receiver_sync_first_func.h b/APELib/Receiver_sync_first/inc/receiver_sync_first_func.h index e5afd8c..4dcc549 100644 --- a/APELib/Receiver_sync_first/inc/receiver_sync_first_func.h +++ b/APELib/Receiver_sync_first/inc/receiver_sync_first_func.h @@ -23,6 +23,7 @@ #include "task_define.h" #include "trace.h" #include "interface_rec_sync2_rec_sync_first.h" +#include "receiver_sync_first_vars.h" //include mpu header files @@ -49,7 +50,7 @@ extern int32_t *receiver_sync_first_temp_dm2_ptr; extern int32_t *receiver_sync_first_temp_dm3_ptr; extern receiver_sync_status_t* g_receiver_sync_status_SM_ptr; -extern uint32_t sync2symb_data_buffer[4]; +extern uint32_t sync2symb_data_buffer[RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER]; extern receiver_sync2symb_t data_send2symb_task[3]; extern uint16_t g_proc_id; diff --git a/APELib/Receiver_sync_first/inc/receiver_sync_first_vars.h b/APELib/Receiver_sync_first/inc/receiver_sync_first_vars.h index 1c2ed88..2a8a642 100644 --- a/APELib/Receiver_sync_first/inc/receiver_sync_first_vars.h +++ b/APELib/Receiver_sync_first/inc/receiver_sync_first_vars.h @@ -1,5 +1,5 @@ #ifndef RECEIVER_SYNC_FIRST_VARS_H #define RECEIVER_SYNC_FIRST_VARS_H - +#define RECEIVER_SYNC_SYNC2SYMB_NUM_BUFFER (6) #endif \ No newline at end of file diff --git a/Common/inc/mem_def.h b/Common/inc/mem_def.h index 570575a..011acf2 100644 --- a/Common/inc/mem_def.h +++ b/Common/inc/mem_def.h @@ -46,20 +46,8 @@ /************************************SM0--1M*************************************************/ #define RECEIVER_BIT_CFG_BASE (SM0_BASE) /************************************SM1---1M ***********************************************/ - -/************************************SM2--1.5M***********************************************/ -#define TRANSMITTER_OUT (SM2_BASE) //4k对齐 -/************************************SM3--1.5M***********************************************/ -#define SM3_PHY_MSG_BUFFER_ADDR (SM3_BASE) -#define SM3_PHY_TASKS_MGR_ADDR (SM3_PHY_MSG_BUFFER_ADDR + SM3_PHY_MSG_BUFFER_LEN) -#define RECEIVER_OUT3 (SM3_BASE + 0x4000) -/************************************SM4--1.5M***********************************************/ -//TODO:地址规划 -#define RECEIVER_SYMB_OUT (SM4_BASE) -#define RECEIVER_SYMB_OUT_ODD (RECEIVER_SYMB_OUT + 0x3c000) - - -//TODO:定义ODD地址 +#define RECEIVER_SYMB_OUT (SM1_BASE) +#define RECEIVER_SYMB_OUT_ODD (RECEIVER_SYMB_OUT + 0x80000) //512KB each #ifdef CORE_ODD // CORE_ODD 的地址 @@ -74,22 +62,25 @@ #define CHANNELEQU_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000 + 0x8000) #define TRANSFORMER_DATA_DDR_PTR (RECEIVER_SYMB_OUT) #endif - - -// #define RECEIVER_SYMB_OUT (SM4_BASE) -// #define COMPENSATED_DATA_DDR_PTR (RECEIVER_SYMB_OUT) -// #define CHANNELEST_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000) -// #define CHANNELEQU_DATA_DDR_PTR (RECEIVER_SYMB_OUT + 0x3c000 + 0x8000) //equ output -// #define TRANSFORMER_DATA_DDR_PTR (RECEIVER_SYMB_OUT) - -/************************************SM5--1.5M***********************************************/ -#define RECEIVER_BASE (SM5_BASE) //4k对齐 +/************************************SM2--1.5M***********************************************/ +#define TRANSMITTER_OUT (SM2_BASE) //4k对齐 +/************************************SM3--1.5M***********************************************/ +#define SM3_PHY_MSG_BUFFER_ADDR (SM3_BASE) +#define SM3_PHY_TASKS_MGR_ADDR (SM3_PHY_MSG_BUFFER_ADDR + SM3_PHY_MSG_BUFFER_LEN) +#define RECEIVER_OUT3 (SM3_BASE + 0x4000) +/************************************SM4--1.5M***********************************************/ +#define RECEIVER_BASE (SM4_BASE) //4k对齐 #define RECEIVER_SYNC2SYMB_BUFFER0_ADDR (RECEIVER_BASE) #define RECEIVER_SYNC2SYMB_BUFFER1_ADDR (RECEIVER_SYNC2SYMB_BUFFER0_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYMB_BUFFER2_ADDR (RECEIVER_SYNC2SYMB_BUFFER1_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYMB_BUFFER3_ADDR (RECEIVER_SYNC2SYMB_BUFFER2_ADDR + TIME_DATA_SLOT_LEN) -#define RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR (RECEIVER_SYNC2SYMB_BUFFER3_ADDR + TIME_DATA_SLOT_LEN) +#define RECEIVER_SYNC2SYMB_BUFFER4_ADDR (RECEIVER_SYNC2SYMB_BUFFER3_ADDR + TIME_DATA_SLOT_LEN) +#define RECEIVER_SYNC2SYMB_BUFFER5_ADDR (RECEIVER_SYNC2SYMB_BUFFER4_ADDR + TIME_DATA_SLOT_LEN) +#define RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR (RECEIVER_SYNC2SYMB_BUFFER5_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYNC_FIRST_INF_ADDR (RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR + TIME_DATA_SLOT_LEN) //LEN: sizeof(receiver_sync_status_t) + +/************************************SM5--1.5M***********************************************/ + /**************************************DDR***************************************************/ #define DDR_PHY_BASE (0x6BC00000) //共579M可用0x6BC00000-0x8FFFFFFF #define DDR_ERROR_RECORD_CNT_ADDR (0x79FF8000)