将PCIE任务注册为触发任务,将任务部署迁移到APE7,修改状态机,新增等待RK3588计算结果的中间状态
This commit is contained in:
parent
78c92355a8
commit
865072aac7
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -35,6 +35,8 @@
|
||||
"fft4096int32.h": "c",
|
||||
"channelestimpl.h": "c",
|
||||
"ucps2.h": "c",
|
||||
"channelest.h": "c"
|
||||
"channelest.h": "c",
|
||||
"interface_rec_sync2_pcie.h": "c",
|
||||
"fucp_ape7_pcie_testcase.h": "c"
|
||||
}
|
||||
}
|
@ -53,7 +53,7 @@ void Phy_Task_Ape3_Reg()
|
||||
{
|
||||
// osp_task_info_ex ape3_event_task_info = {50, "ape3_event_task1", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape3_event_task};
|
||||
// osp_task_info_ex ape3_event_task_info_del = {51, "ape3_event_task_del1", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape3_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_info_ex mgr_task = {PHY_TASK_RECEIVER_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(&ape3_event_task_info);
|
||||
// osp_task_create(&ape3_event_task_info_del);
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "Frame_test.h"
|
||||
#include "receiver_sync_func.h"
|
||||
#include "trace.h"
|
||||
#include "Fucp_Ape4_pcie_testcase.h"
|
||||
|
||||
|
||||
|
||||
/**************************function******************************/
|
||||
@ -30,18 +30,14 @@ void ape4_event_task(uint32_t addr, uint32_t size)
|
||||
uint32_t ape_id = get_core_id();
|
||||
|
||||
osp_task_info_ex mgr_task2 =
|
||||
{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_RECEIVER_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);
|
||||
test_case_cfgpar_pcie();
|
||||
|
||||
osp_task_create(&pcie_normal_task_info);
|
||||
TRACE(TRACE_RECV_INIT_ADDR, 3, 1);
|
||||
LOG_INFO_S("APE4 finish task create!\n");
|
||||
|
||||
|
@ -53,7 +53,7 @@ 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_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_info_ex mgr_task = {PHY_TASK_RECEIVER_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);
|
||||
|
@ -55,7 +55,7 @@ void Phy_Task_Ape6_Reg()
|
||||
// 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};
|
||||
{PHY_TASK_RECEIVER_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);
|
||||
|
@ -13,7 +13,7 @@
|
||||
// -FHDR------------------------------------------------------------
|
||||
#ifndef __PCIE_TESTCASE_H__
|
||||
#define __PCIE_TESTCASE_H__
|
||||
|
||||
#include "interface_rec_sync2_pcie.h"
|
||||
uint32_t pcie_rx_callback_data(const char* buf,uint32_t payloadSize);
|
||||
uint32_t pcie_rx_callback_ctrl(const char* buf,uint32_t payloadSize);
|
||||
uint32_t pcie_rx_callback_oam(const char* buf,uint32_t payloadSize);
|
||||
@ -22,7 +22,8 @@ void test_case_sendmsg_pcie();
|
||||
void test_case_recv_msg_pcie();
|
||||
void test_speed_sendmsg_pcie();
|
||||
void test_speed_recv_msg_pcie();
|
||||
void pcie_test_task_func(void);
|
||||
void pcie_test_task_func(receiver_sync2pcie_t* msg_ptr, uint32_t msg_len);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "log_interface.h"
|
||||
#include "trace.h"
|
||||
#include "receiver_sync_first_func.h"
|
||||
#include "Fucp_Ape7_pcie_testcase.h"
|
||||
|
||||
/**************************function******************************/
|
||||
/*!
|
||||
@ -54,9 +55,14 @@ 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 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};
|
||||
{PHY_TASK_RECEIVER_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_info_ex pcie_normal_task_info =
|
||||
{PHY_TASK_PCIE, (int8_t*)"pcie_normal_task", PHY_TASK_PRI_PCIE, 4096, OSP_EVENT_TYPE, 0x000, 0, 0, NULL, (OSP_TASKENTRY_FUNC)pcie_test_task_func};
|
||||
// osp_task_create(&ape7_event_task_info);
|
||||
// osp_task_create(&ape7_event_task_info_del);
|
||||
|
||||
test_case_cfgpar_pcie();
|
||||
osp_task_create(&pcie_normal_task_info);
|
||||
osp_task_create(&mgr_task);
|
||||
LOG_INFO_S("APE7 finish task create!\n");
|
||||
|
||||
|
@ -31,7 +31,9 @@
|
||||
#include "mem_sections.h"
|
||||
#include "drv_ape.h"
|
||||
#include "trace.h"
|
||||
|
||||
#include "interface_rec_sync2_pcie.h"
|
||||
#include "Fucp_Ape7_pcie_testcase.h"
|
||||
#include "mem_def.h"
|
||||
|
||||
|
||||
|
||||
@ -473,8 +475,26 @@ void test_speed_recv_msg_pcie()
|
||||
}
|
||||
|
||||
|
||||
void pcie_test_task_func(void)
|
||||
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;
|
||||
/*typedef enum
|
||||
{
|
||||
SYNC_IDLE=0,
|
||||
SYNC_FIRST_RUNING,
|
||||
SYNC_AI_PROCECING,
|
||||
SYNC_TRACKING
|
||||
}receiver_sync_status_e;*/
|
||||
if(2 != LOAD_EX_W(status_SM_addr))
|
||||
return ;
|
||||
//提供的数据地址(DDR)和本次数据的SFN SLOT号
|
||||
uint32_t sfn = msg_ptr->sfn;
|
||||
uint32_t slot = msg_ptr->slot;
|
||||
uint32_t data_addr = msg_ptr->data_section0_ptr;
|
||||
uint32_t data_len = 1024*4;
|
||||
|
||||
|
||||
return ;
|
||||
g_time_start[1] = TIME_NS();
|
||||
RUN_CNT(TRACE_PCIE_ADDR, 0);
|
||||
@ -494,7 +514,18 @@ void pcie_test_task_func(void)
|
||||
RUN_CNT(TRACE_PCIE_ADDR, 1);
|
||||
|
||||
TRACE_MAX(TRACE_PCIE_ADDR, 2, Time_offset(1) );
|
||||
return;
|
||||
|
||||
|
||||
|
||||
//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);
|
||||
__ucps2_synch(0);
|
||||
#endif
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -115,8 +115,8 @@ void Receiver_Symb_Proc(
|
||||
UCP4008_KERNEL_INTER,
|
||||
APE5_CORE_ID,
|
||||
APE6_CORE_ID,
|
||||
PHY_TASK_RECIEVER_SYMB,
|
||||
PHY_TASK_RECIEVER_BIT);
|
||||
PHY_TASK_RECEIVER_SYMB,
|
||||
PHY_TASK_RECEIVER_BIT);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "task_define.h"
|
||||
#include "trace.h"
|
||||
#include "interface_rec_sync2_rec_sync_first.h"
|
||||
#include "interface_rec_sync2_pcie.h"
|
||||
|
||||
|
||||
//include mpu header files
|
||||
@ -54,7 +55,7 @@ extern uint16_t g_proc_id;
|
||||
void Receiver_Sync_Init();
|
||||
void Receiver_Sync_Task();
|
||||
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, uint32_t proc_type);
|
||||
|
||||
//debug
|
||||
extern uint32_t* last_mem_dm[8];
|
||||
|
@ -61,6 +61,7 @@ typedef enum
|
||||
{
|
||||
SYNC_IDLE=0,
|
||||
SYNC_FIRST_RUNING,
|
||||
SYNC_AI_PROCECING,
|
||||
SYNC_TRACKING
|
||||
}receiver_sync_status_e;
|
||||
|
||||
|
@ -196,8 +196,8 @@ void Receiver_Sync_Proc(
|
||||
UCP4008_KERNEL_INNER,
|
||||
APE4_CORE_ID,
|
||||
APE7_CORE_ID,
|
||||
PHY_TASK_RECIEVER_SYNC,
|
||||
PHY_TASK_RECIEVER_FIRST_SYNC);
|
||||
PHY_TASK_RECEIVER_SYNC,
|
||||
PHY_TASK_RECEIVER_FIRST_SYNC);
|
||||
|
||||
//第一次同步目前不存储数据做处理,注释
|
||||
// receiver_sync2first_sync_t data_send2first_sync_task;
|
||||
@ -206,14 +206,14 @@ void Receiver_Sync_Proc(
|
||||
// UCP4008_KERNEL_INNER,
|
||||
// get_core_id(),
|
||||
// get_core_id(),
|
||||
// PHY_TASK_PRI_RECEIVER_SYNC,
|
||||
// PHY_TASK_PRI_RECEIVER_FIRST_SYNC);
|
||||
// PHY_TASK_RECEIVER_SYNC,
|
||||
// PHY_TASK_RECEIVER_FIRST_SYNC);
|
||||
TRACE(TRACE_RECEIVER_SYNC_ADDR, 3, 4);
|
||||
}
|
||||
else if(SYNC_TRACKING == sync_status)
|
||||
else if((SYNC_TRACKING == sync_status) || (SYNC_AI_PROCECING == sync_status))
|
||||
{
|
||||
TRACE(TRACE_RECEIVER_SYNC_ADDR, 3, 5);
|
||||
Receiver_Fine_Sync_Proc(cur_sfn, cur_slot);
|
||||
Receiver_Fine_Sync_Proc(cur_sfn, cur_slot, sync_status);
|
||||
|
||||
//根据当前状态机状态,buffer存储的数据长度,sync同步帧头,发送核间消息触发任务
|
||||
TRACE(TRACE_RECEIVER_SYNC_ADDR, 3, 6);
|
||||
@ -232,7 +232,7 @@ 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, uint32_t proc_type)
|
||||
{
|
||||
g_time_start[2] = TIME_NS();
|
||||
uint16_t dbg_time0, dbg_time1;
|
||||
@ -443,16 +443,29 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot)
|
||||
1);
|
||||
}
|
||||
//发核间消息给SYMB_TASK, slot号为偶数APE5处理,奇数APE3处理
|
||||
if(SYNC_TRACKING == proc_type)
|
||||
{
|
||||
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]),
|
||||
sizeof(receiver_sync2symb_t),
|
||||
UCP4008_KERNEL_INTER,
|
||||
get_core_id(),
|
||||
symb_proc_core_sel,
|
||||
PHY_TASK_PRI_RECEIVER_SYNC,
|
||||
PHY_TASK_PRI_RECEIVER_SYMB);
|
||||
phy_et_msg_send((uint32_t)(&data_send2symb_task[task_idx]),
|
||||
sizeof(receiver_sync2symb_t),
|
||||
UCP4008_KERNEL_INTER,
|
||||
get_core_id(),
|
||||
symb_proc_core_sel,
|
||||
PHY_TASK_RECEIVER_SYNC,
|
||||
PHY_TASK_RECEIVER_SYMB);
|
||||
}
|
||||
else
|
||||
{
|
||||
phy_et_msg_send((uint32_t)(&data_send2symb_task[task_idx]),
|
||||
sizeof(receiver_sync2pcie_t),
|
||||
UCP4008_KERNEL_INTER,
|
||||
get_core_id(),
|
||||
APE7_CORE_ID,
|
||||
PHY_TASK_RECEIVER_SYNC,
|
||||
PHY_TASK_PCIE);
|
||||
}
|
||||
g_proc_id++;
|
||||
task_idx++;
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ typedef enum
|
||||
{
|
||||
SYNC_IDLE=0,
|
||||
SYNC_FIRST_RUNING,
|
||||
SYNC_AI_PROCECING,
|
||||
SYNC_TRACKING
|
||||
}receiver_sync_first_status_e;
|
||||
|
||||
|
@ -362,7 +362,7 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_
|
||||
//执行完成,更新状态机
|
||||
if(SYNC_OK == ret)
|
||||
{
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->sync_status , SYNC_TRACKING);
|
||||
STORE_EX_W(&g_receiver_sync_status_SM_ptr->sync_status , SYNC_AI_PROCECING);
|
||||
__ucps2_synch(0);
|
||||
}
|
||||
else
|
||||
|
@ -26,7 +26,7 @@ typedef enum
|
||||
PHY_TASK_PRI_RECEIVER_BIT,
|
||||
PHY_TASK_PRI_TEST,
|
||||
PHY_TASK_PRI_RECEIVER_FIRST_SYNC,
|
||||
PCIE_TASK_PRI_RECEIVER,
|
||||
PHY_TASK_PRI_PCIE,
|
||||
PHY_TASK_PRI_EQUAL_PRI, //不需要优先级抢占的任务,设置为该优先级
|
||||
}task_pri_e;
|
||||
|
||||
@ -38,12 +38,12 @@ typedef enum
|
||||
PHY_TASK_CONFIG,
|
||||
PHY_TASK_SLOT_IND,
|
||||
PHY_TASK_TRANSIMITTER,
|
||||
PHY_TASK_RECIEVER_SYNC,
|
||||
PHY_TASK_RECIEVER_SYMB,
|
||||
PHY_TASK_RECIEVER_BIT,
|
||||
PHY_TASK_RECEIVER_SYNC,
|
||||
PHY_TASK_RECEIVER_SYMB,
|
||||
PHY_TASK_RECEIVER_BIT,
|
||||
PHY_TASK_TEST,
|
||||
PHY_TASK_RECIEVER_FIRST_SYNC,
|
||||
PCIE_TASK_RECEIVER,
|
||||
PHY_TASK_RECEIVER_FIRST_SYNC,
|
||||
PHY_TASK_PCIE,
|
||||
PHY_TASK_PHY_MGR,
|
||||
PHY_TASK_MAX=32
|
||||
}task_id_e;
|
||||
|
21
Interface/interface_rec_sync2_pcie.h
Normal file
21
Interface/interface_rec_sync2_pcie.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef INTERFACE_REC_SYNC2_PCIE_H
|
||||
#define INTERFACE_REC_SYNC2_PCIE_H
|
||||
#include "type_define.h"
|
||||
|
||||
typedef struct receiver_sync2pcie_s
|
||||
{
|
||||
uint16_t sfn;//创建任务时刻的sfn
|
||||
uint16_t slot;//创建任务时刻的slot
|
||||
uint16_t num_data_section;
|
||||
uint16_t proc_id;//记录包的顺序
|
||||
uint32_t data_section0_ptr;
|
||||
uint32_t data_section1_ptr;
|
||||
uint32_t data_section0_length;//单位Word
|
||||
uint32_t data_section1_length;//单位Word
|
||||
|
||||
}receiver_sync2pcie_t;
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user