diff --git a/inc/msg_transfer_layer.h b/inc/msg_transfer_layer.h index c0f8717..3759251 100644 --- a/inc/msg_transfer_layer.h +++ b/inc/msg_transfer_layer.h @@ -1,87 +1,87 @@ -// +FHDR------------------------------------------------------------ -// Copyright (c) 2022 SmartLogic. -// ALL RIGHTS RESERVED -// ----------------------------------------------------------------- -// Filename : msg_transfer_layer.h -// Author : xianfeng.du -// Created On : 2022-06-29 -// Last Modified : -// ----------------------------------------------------------------- -// Description: -// -// -// -FHDR------------------------------------------------------------ - -#ifndef __MSG_TRANSFER_LAYER_H__ -#define __MSG_TRANSFER_LAYER_H__ - -#define MAX_INSTANCE_NUM (2) -#define MAX_PORT_NUM (4) - -#define SUCCESS (0) -#define FAILURE (-1) -#define UNINITIALIZED_QUEUE (1) -#define FULLEDED_QUEUE (2) -#define EMPTY_QUEUE (2) -#define OUT_OF_BLOCK_MEMORY (2) - -typedef enum e_transfer_type { - NON_CU_SPLIT, - CU_SPLIT, - OAM, - TRANSFER_TYPE_NUM -} transfer_type_e; -#define MAX_TRANS_NUM (TRANSFER_TYPE_NUM-1) - -typedef enum e_cu_flag { - C_PLANE, - U_PLANE -} cu_flag_e; - -typedef union tHandleId { - uint32_t value; - struct { - uint8_t rsv; - uint8_t type_id; - uint8_t inst_id; - uint8_t port_id; - }; -} HandleId_t; - -typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); - -typedef struct t_queue_info { - uint32_t tx_desc_num; - uint32_t rx_desc_num; - uint32_t tx_block_size; - uint32_t rx_block_size; - uint16_t tx_block_num; - uint16_t rx_block_num; - uint16_t directions; - uint16_t rsv; - union { - uint64_t ele0;//aligned 64bit for NPU - msg_transfer_callback tx_callback; - }; - union { - uint64_t ele1;//aligned 64bit for NPU - msg_transfer_callback rx_callback; - }; -} queue_info_s; - -typedef struct t_transfer_type_info { - queue_info_s queue_cplane_info; - queue_info_s queue_uplane_info; -} transfer_type_info_s; - -//int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); -int32_t msg_transfer_callback_register(uint16_t transfer_type, uint16_t inst_id, uint16_t cu_flag, msg_transfer_callback rx_callback); -int32_t msg_transfer_send_start(int32_t handle_id); -int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); -int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); -int32_t msg_transfer_send_end(int32_t handle_id); -int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); -int32_t msg_transfer_close(int32_t handle_id); - -#endif - +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.h +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_LAYER_H__ +#define __MSG_TRANSFER_LAYER_H__ + +#define MAX_INSTANCE_NUM (4) +#define MAX_PORT_NUM (4) + +#define SUCCESS (0) +#define FAILURE (-1) +#define UNINITIALIZED_QUEUE (1) +#define FULLEDED_QUEUE (2) +#define EMPTY_QUEUE (2) +#define OUT_OF_BLOCK_MEMORY (2) + +typedef enum e_transfer_type { + NON_CU_SPLIT, + CU_SPLIT, + OAM, + TRANSFER_TYPE_NUM +} transfer_type_e; +#define MAX_TRANS_NUM (TRANSFER_TYPE_NUM-1) + +typedef enum e_cu_flag { + C_PLANE, + U_PLANE +} cu_flag_e; + +typedef union tHandleId { + uint32_t value; + struct { + uint8_t rsv; + uint8_t type_id; + uint8_t inst_id; + uint8_t port_id; + }; +} HandleId_t; + +typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); + +typedef struct t_queue_info { + uint32_t tx_desc_num; + uint32_t rx_desc_num; + uint32_t tx_block_size; + uint32_t rx_block_size; + uint16_t tx_block_num; + uint16_t rx_block_num; + uint16_t directions; + uint16_t rsv; + union { + uint64_t ele0;//aligned 64bit for NPU + msg_transfer_callback tx_callback; + }; + union { + uint64_t ele1;//aligned 64bit for NPU + msg_transfer_callback rx_callback; + }; +} queue_info_s; + +typedef struct t_transfer_type_info { + queue_info_s queue_cplane_info; + queue_info_s queue_uplane_info; +} transfer_type_info_s; + +//int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); +int32_t msg_transfer_callback_register(uint16_t transfer_type, uint16_t inst_id, uint16_t cu_flag, msg_transfer_callback rx_callback); +int32_t msg_transfer_send_start(int32_t handle_id); +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); +int32_t msg_transfer_send_end(int32_t handle_id); +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); +int32_t msg_transfer_close(int32_t handle_id); + +#endif + diff --git a/public/common/msg/inc/msg_transfer_layer.h b/public/common/msg/inc/msg_transfer_layer.h index 3b9f373..8f05042 100644 --- a/public/common/msg/inc/msg_transfer_layer.h +++ b/public/common/msg/inc/msg_transfer_layer.h @@ -1,89 +1,89 @@ -// +FHDR------------------------------------------------------------ -// Copyright (c) 2022 SmartLogic. -// ALL RIGHTS RESERVED -// ----------------------------------------------------------------- -// Filename : msg_transfer_layer.h -// Author : xianfeng.du -// Created On : 2022-06-29 -// Last Modified : -// ----------------------------------------------------------------- -// Description: -// -// -// -FHDR------------------------------------------------------------ - -#ifndef __MSG_TRANSFER_LAYER_H__ -#define __MSG_TRANSFER_LAYER_H__ - -#include "typedef.h" - -#define MAX_INSTANCE_NUM (2) -#define MAX_PORT_NUM (4) - -#define SUCCESS (0) -#define FAILURE (-1) -#define UNINITIALIZED_QUEUE (1) -#define FULLEDED_QUEUE (2) -#define EMPTY_QUEUE (2) -#define OUT_OF_BLOCK_MEMORY (2) - -typedef enum e_transfer_type { - NON_CU_SPLIT, - CU_SPLIT, - OAM, - TRANSFER_TYPE_NUM -} transfer_type_e; -#define MAX_TRANS_NUM (TRANSFER_TYPE_NUM-1) - -typedef enum e_cu_flag { - C_PLANE, - U_PLANE -} cu_flag_e; - -typedef union tHandleId { - uint32_t value; - struct { - uint8_t rsv; - uint8_t type_id; - uint8_t inst_id; - uint8_t port_id; - }; -} HandleId_t; - -typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); - -typedef struct t_queue_info { - uint32_t tx_desc_num; - uint32_t rx_desc_num; - uint32_t tx_block_size; - uint32_t rx_block_size; - uint16_t tx_block_num; - uint16_t rx_block_num; - uint16_t directions; - uint16_t rsv; - union { - uint64_t ele0;//aligned 64bit for NPU - msg_transfer_callback tx_callback; - }; - union { - uint64_t ele1;//aligned 64bit for NPU - msg_transfer_callback rx_callback; - }; -} queue_info_s; - -typedef struct t_transfer_type_info { - queue_info_s queue_cplane_info; - queue_info_s queue_uplane_info; -} transfer_type_info_s; - -//int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); -int32_t msg_transfer_callback_register(uint16_t transfer_type, uint16_t inst_id, uint16_t cu_flag, msg_transfer_callback rx_callback); -int32_t msg_transfer_send_start(int32_t handle_id); -int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); -int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); -int32_t msg_transfer_send_end(int32_t handle_id); -int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); -int32_t msg_transfer_close(int32_t handle_id); - -#endif - +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.h +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_LAYER_H__ +#define __MSG_TRANSFER_LAYER_H__ + +#include "typedef.h" + +#define MAX_INSTANCE_NUM (4) //(2) +#define MAX_PORT_NUM (4) + +#define SUCCESS (0) +#define FAILURE (-1) +#define UNINITIALIZED_QUEUE (1) +#define FULLEDED_QUEUE (2) +#define EMPTY_QUEUE (2) +#define OUT_OF_BLOCK_MEMORY (2) + +typedef enum e_transfer_type { + NON_CU_SPLIT, + CU_SPLIT, + OAM, + TRANSFER_TYPE_NUM +} transfer_type_e; +#define MAX_TRANS_NUM (TRANSFER_TYPE_NUM-1) + +typedef enum e_cu_flag { + C_PLANE, + U_PLANE +} cu_flag_e; + +typedef union tHandleId { + uint32_t value; + struct { + uint8_t rsv; + uint8_t type_id; + uint8_t inst_id; + uint8_t port_id; + }; +} HandleId_t; + +typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); + +typedef struct t_queue_info { + uint32_t tx_desc_num; + uint32_t rx_desc_num; + uint32_t tx_block_size; + uint32_t rx_block_size; + uint16_t tx_block_num; + uint16_t rx_block_num; + uint16_t directions; + uint16_t rsv; + union { + uint64_t ele0;//aligned 64bit for NPU + msg_transfer_callback tx_callback; + }; + union { + uint64_t ele1;//aligned 64bit for NPU + msg_transfer_callback rx_callback; + }; +} queue_info_s; + +typedef struct t_transfer_type_info { + queue_info_s queue_cplane_info; + queue_info_s queue_uplane_info; +} transfer_type_info_s; + +//int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); +int32_t msg_transfer_callback_register(uint16_t transfer_type, uint16_t inst_id, uint16_t cu_flag, msg_transfer_callback rx_callback); +int32_t msg_transfer_send_start(int32_t handle_id); +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); +int32_t msg_transfer_send_end(int32_t handle_id); +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); +int32_t msg_transfer_close(int32_t handle_id); + +#endif + diff --git a/public/pet_rfm_spu1/top/src/phy_init.s.c b/public/pet_rfm_spu1/top/src/phy_init.s.c index 693910f..c4f6a39 100644 --- a/public/pet_rfm_spu1/top/src/phy_init.s.c +++ b/public/pet_rfm_spu1/top/src/phy_init.s.c @@ -1,90 +1,90 @@ -// +FHDR------------------------------------------------------------ -// Copyright (c) 2022 SmartLogic. -// ALL RIGHTS RESERVED -// ----------------------------------------------------------------- -// Filename : phy_init.c -// Author : xianfeng.du -// Created On : 2022-12-27 -// Last Modified : -// ----------------------------------------------------------------- -// Description: -// ecs_rfm_spu0 msg_transfer_cfg -// -// -FHDR------------------------------------------------------------ - -#include "typedef.h" -#include "ucp_printf.h" -#include "ucp_utility.h" -#include "ucp_tick.h" -#include "msg_transfer_queue.h" -#include "app_interface.h" - -#define RFM_TEST_MSG_SIZE (8) -#define RFM_MSG_TYPE (0) +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : phy_init.c +// Author : xianfeng.du +// Created On : 2022-12-27 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// ecs_rfm_spu0 msg_transfer_cfg +// +// -FHDR------------------------------------------------------------ + +#include "typedef.h" +#include "ucp_printf.h" +#include "ucp_utility.h" +#include "ucp_tick.h" +#include "msg_transfer_queue.h" +#include "app_interface.h" + +#define RFM_TEST_MSG_SIZE (8) +#define RFM_MSG_TYPE (0) #define CELL_SETUP_TYPE_SIMULATION (0x5a6b7c8d) -#define ORX_MSG_TYPE_SIMULATION (0xaabb7788) - -static uint32_t g_u32_rfm_alloc_err = 0; //(15) 0xB7E0143C -static uint32_t g_u32_rfm_send_err = 0; //(16) 0xB7E01440 -static uint32_t g_u32_rfm_recv_num = 0; //(17) 0xB7E01444 -static uint32_t g_u32_rfm_send_ok = 0; //(18) 0xB7E01448 - -uint32_t rx_callback_data(const char* buf,uint32_t payloadSize) -{ - /* RFM0接收消息后发给APE0 */ - uint32_t core_id = get_core_id(); - int32_t ret = 0; - char *addr = NULL; - uint32_t u32_clock_tick = 0; - - rdmcycle(&u32_clock_tick); - do_write((buf+16), u32_clock_tick); //RFM receive tick - g_u32_rfm_recv_num++; - - addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); - if (NULL == addr) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 15), ++g_u32_rfm_alloc_err); - return payloadSize; - } - - do_write(addr, (uint32_t)buf); - do_write((addr+4), UCP4008_TRAFFIC_NR_eMBB_DATA); - - rdmcycle(&u32_clock_tick); - do_write((buf+20), u32_clock_tick); //RFM forward tick - - ret = osp_send_msg((uint32_t)(addr), - RFM_TEST_MSG_SIZE, - RFM_MSG_TYPE, - 10, // src que id - 0, // dst que id - 40, // src task id - 40); // dst task id - - if (0 != ret) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 16), ++g_u32_rfm_send_err); - return payloadSize; - } - g_u32_rfm_send_ok++; - - debug_write(DBG_DDR_COMMON_IDX(core_id, 17), g_u32_rfm_recv_num); - debug_write(DBG_DDR_COMMON_IDX(core_id, 18), g_u32_rfm_send_ok); - return payloadSize; -} - -static uint32_t g_u32_rfm_alloc1_err = 0; //(19) 0xB7E0144C -static uint32_t g_u32_rfm_send1_err = 0; //(20) 0xB7E01450 -static uint32_t g_u32_rfm_send2_err = 0; //(20) 0xB7E01450 -static uint32_t g_u32_rfm_recv1_num = 0; //(21) 0xB7E01454 -static uint32_t g_u32_rfm_send1_ok = 0; //(22) 0xB7E01458 -static uint32_t g_u32_rfm_send2_ok = 0; //(22) 0xB7E01458 +#define ORX_MSG_TYPE_SIMULATION (0xaabb7788) + +static uint32_t g_u32_rfm_alloc_err = 0; //(15) 0xB7E0143C +static uint32_t g_u32_rfm_send_err = 0; //(16) 0xB7E01440 +static uint32_t g_u32_rfm_recv_num = 0; //(17) 0xB7E01444 +static uint32_t g_u32_rfm_send_ok = 0; //(18) 0xB7E01448 + +uint32_t rx_callback_data(const char* buf,uint32_t payloadSize) +{ + /* RFM0接收消息后发给APE0 */ + uint32_t core_id = get_core_id(); + int32_t ret = 0; + char *addr = NULL; + uint32_t u32_clock_tick = 0; + + rdmcycle(&u32_clock_tick); + do_write((buf+16), u32_clock_tick); //RFM receive tick + g_u32_rfm_recv_num++; + + addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); + if (NULL == addr) + { + debug_write(DBG_DDR_COMMON_IDX(core_id, 15), ++g_u32_rfm_alloc_err); + return payloadSize; + } + + do_write(addr, (uint32_t)buf); + do_write((addr+4), UCP4008_TRAFFIC_NR_eMBB_DATA); + + rdmcycle(&u32_clock_tick); + do_write((buf+20), u32_clock_tick); //RFM forward tick + + ret = osp_send_msg((uint32_t)(addr), + RFM_TEST_MSG_SIZE, + RFM_MSG_TYPE, + 9, // src que id + 0, // dst que id + 40, // src task id + 40); // dst task id + + if (0 != ret) + { + debug_write(DBG_DDR_COMMON_IDX(core_id, 16), ++g_u32_rfm_send_err); + return payloadSize; + } + g_u32_rfm_send_ok++; + + debug_write(DBG_DDR_COMMON_IDX(core_id, 17), g_u32_rfm_recv_num); + debug_write(DBG_DDR_COMMON_IDX(core_id, 18), g_u32_rfm_send_ok); + return payloadSize; +} + +static uint32_t g_u32_rfm_alloc1_err = 0; //(19) 0xB7E0144C +static uint32_t g_u32_rfm_send1_err = 0; //(20) 0xB7E01450 +static uint32_t g_u32_rfm_send2_err = 0; //(20) 0xB7E01450 +static uint32_t g_u32_rfm_recv1_num = 0; //(21) 0xB7E01454 +static uint32_t g_u32_rfm_send1_ok = 0; //(22) 0xB7E01458 +static uint32_t g_u32_rfm_send2_ok = 0; //(22) 0xB7E01458 int32_t cell_setup_msg_forward(char* buf, uint32_t payloadSize) { - /* RFM0接收消息后发给RFM1 */ - uint32_t core_id = get_core_id(); + /* RFM0接收消息后发给RFM1 */ + uint32_t core_id = get_core_id(); int32_t ret = 0; char *addr = NULL; @@ -93,258 +93,477 @@ int32_t cell_setup_msg_forward(char* buf, uint32_t payloadSize) if ((CELL_SETUP_TYPE_SIMULATION != msg_type) && (ORX_MSG_TYPE_SIMULATION != msg_type)) { return 1; } - uint32_t u32_clock_tick = 0; - rdmcycle(&u32_clock_tick); + uint32_t u32_clock_tick = 0; + rdmcycle(&u32_clock_tick); do_write((buf+8), u32_clock_tick); //RFM forward tick - addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); - if (NULL == addr) - { - return 2; - } + addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); + if (NULL == addr) + { + return 2; + } do_write(addr, buf); - - /*send cell setup message*/ - ret = osp_send_msg((uint32_t)addr, - RFM_TEST_MSG_SIZE, - RFM_MSG_TYPE, - 10, // src que id - 11, // dst que id - 41, // src task id - 41); // dst task id - - if (0 != ret) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 23), ++g_u32_rfm_send2_err); - return 3; - } - g_u32_rfm_send2_ok++; + + /*send cell setup message*/ + ret = osp_send_msg((uint32_t)addr, + RFM_TEST_MSG_SIZE, + RFM_MSG_TYPE, + 9, // src que id + 11, // dst que id + 41, // src task id + 41); // dst task id + + if (0 != ret) + { + debug_write(DBG_DDR_COMMON_IDX(core_id, 23), ++g_u32_rfm_send2_err); + return 3; + } + g_u32_rfm_send2_ok++; debug_write(DBG_DDR_COMMON_IDX(core_id, 24), g_u32_rfm_send2_ok); return 0; } -uint32_t rx_callback_ctrl(const char* buf,uint32_t payloadSize) -{ +uint32_t rx_callback_ctrl(const char* buf,uint32_t payloadSize) +{ int32_t ret = cell_setup_msg_forward((char*)buf, payloadSize); if (0 == ret) { return payloadSize; } - /* RFM0接收消息后发给APE1 */ - uint32_t core_id = get_core_id(); - char *addr = NULL; - uint32_t u32_clock_tick = 0; - - rdmcycle(&u32_clock_tick); - do_write((buf+16), u32_clock_tick); //RFM receive tick - g_u32_rfm_recv1_num++; - - addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); - if (NULL == addr) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 19), ++g_u32_rfm_alloc1_err); - return payloadSize; - } - - do_write(addr, (uint32_t)buf); - do_write((addr+4), UCP4008_TRAFFIC_NR_eMBB_CTRL); - - rdmcycle(&u32_clock_tick); - do_write((buf+20), u32_clock_tick); //RFM forward tick - - ret = osp_send_msg((uint32_t)(addr), - RFM_TEST_MSG_SIZE, - RFM_MSG_TYPE, - 10, // src que id - 1, // dst que id - 40, // src task id - 40); // dst task id - - if (0 != ret) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 20), ++g_u32_rfm_send1_err); - return payloadSize; - } - g_u32_rfm_send1_ok++; - - debug_write(DBG_DDR_COMMON_IDX(core_id, 21), g_u32_rfm_recv1_num); - debug_write(DBG_DDR_COMMON_IDX(core_id, 22), g_u32_rfm_send1_ok); - - return payloadSize; -} - -uint32_t rx_callback_oam(const char* buf,uint32_t payloadSize) -{ - return payloadSize; -} - -static uint32_t g_u32_rfm_1_alloc_err = 0; //(23) 0xB7E0145C -static uint32_t g_u32_rfm_1_send_err = 0; //(24) 0xB7E01460 -static uint32_t g_u32_rfm_1_recv_num = 0; //(25) 0xB7E01464 -static uint32_t g_u32_rfm_1_send_ok = 0; //(26) 0xB7E01468 - -uint32_t rx1_callback_data(const char* buf,uint32_t payloadSize) -{ - /* RFM0接收消息后发给APE0 */ - uint32_t core_id = get_core_id(); - int32_t ret = 0; - char *addr = NULL; - uint32_t u32_clock_tick = 0; - - rdmcycle(&u32_clock_tick); - do_write((buf+16), u32_clock_tick); //RFM receive tick - g_u32_rfm_1_recv_num++; - - addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); - if (NULL == addr) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 23), ++g_u32_rfm_1_alloc_err); - return payloadSize; - } - - do_write(addr, (uint32_t)buf); - do_write((addr+4), UCP4008_TRAFFIC_NR_eMBB_DATA); - - rdmcycle(&u32_clock_tick); - do_write((buf+20), u32_clock_tick); //RFM forward tick - - ret = osp_send_msg((uint32_t)(addr), - RFM_TEST_MSG_SIZE, - RFM_MSG_TYPE, - 10, // src que id - 4, // dst que id - 40, // src task id - 40); // dst task id - - if (0 != ret) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 24), ++g_u32_rfm_1_send_err); - return payloadSize; - } - g_u32_rfm_1_send_ok++; - - debug_write(DBG_DDR_COMMON_IDX(core_id, 25), g_u32_rfm_1_recv_num); - debug_write(DBG_DDR_COMMON_IDX(core_id, 26), g_u32_rfm_1_send_ok); - return payloadSize; -} - -static uint32_t g_u32_rfm_1_alloc1_err = 0; //(27) 0xB7E0144C -static uint32_t g_u32_rfm_1_send1_err = 0; //(28) 0xB7E01450 -static uint32_t g_u32_rfm_1_recv1_num = 0; //(29) 0xB7E01454 -static uint32_t g_u32_rfm_1_send1_ok = 0; //(30) 0xB7E01458 - -uint32_t rx1_callback_ctrl(const char* buf,uint32_t payloadSize) -{ - int32_t ret = cell_setup_msg_forward((char*)buf, payloadSize); - if (0 == ret) { - return payloadSize; - } - - /* RFM0接收消息后发给APE1 */ - uint32_t core_id = get_core_id(); - char *addr = NULL; - uint32_t u32_clock_tick = 0; - - rdmcycle(&u32_clock_tick); - do_write((buf+16), u32_clock_tick); //RFM receive tick - g_u32_rfm_1_recv1_num++; - - addr = osp_alloc_msg(RFM_TEST_MSG_SIZE); - if (NULL == addr) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 27), ++g_u32_rfm_1_alloc1_err); - return payloadSize; - } - - do_write(addr, (uint32_t)buf); - do_write((addr+4), UCP4008_TRAFFIC_NR_eMBB_CTRL); - - rdmcycle(&u32_clock_tick); - do_write((buf+20), u32_clock_tick); //RFM forward tick - - ret = osp_send_msg((uint32_t)(addr), - RFM_TEST_MSG_SIZE, - RFM_MSG_TYPE, - 10, // src que id - 5, // dst que id - 40, // src task id - 40); // dst task id - - if (0 != ret) - { - debug_write(DBG_DDR_COMMON_IDX(core_id, 28), ++g_u32_rfm_1_send1_err); - return payloadSize; - } - g_u32_rfm_1_send1_ok++; - - debug_write(DBG_DDR_COMMON_IDX(core_id, 29), g_u32_rfm_1_recv1_num); - debug_write(DBG_DDR_COMMON_IDX(core_id, 30), g_u32_rfm_1_send1_ok); - - return payloadSize; -} - -//void msg_transfer_cfg() -void phy_init(void) -{ - //uint8_t port_id = get_ucp_port_id(); - uint16_t inst_id = 0; - uint16_t transfer_type = 0; - uint16_t cu_flag = C_PLANE; - int32_t handle_id = 0; - //transfer_type_info_s transfer_type_info; - - for (inst_id=0; inst_id