Merge branch 'dev_ck_v2.1_feature#1359#_1214' into 'dev_ck_v2.1'

eCPRI 25G代码入库,分支名称dev_ck_v2.1_feature#1359#_1214

See merge request ucp/driver/ucp4008_platform_spu!78
This commit is contained in:
Xianfeng Du 2023-12-28 01:08:46 +00:00
commit a74695bb86
21 changed files with 273029 additions and 33 deletions

View File

@ -27,9 +27,6 @@
**********************************************************************************************************************/
void ecpri_roec_init(void)
{
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
/* config address range for descriptor */
do_write(&DESC_BEGIN_ADDR_2, ECPRI_RX_BUF_ADDR / ECPRI_DESC_ADDR_UNIT);
do_write(&DESC_END_ADDR_2, (ECPRI_RX_BUF_ADDR + ECPRI_RX_BUF_SIZE) / ECPRI_DESC_ADDR_UNIT);

View File

@ -17,7 +17,6 @@
#ifdef ECS_RFM0
#include "ecpri_csu.h"
//#include "ecpri_que.h"
#endif
#ifdef ECS_RFM1
@ -38,8 +37,18 @@ typedef struct EcpriLBTestResult
/* --------------------------------------------------- <DECLARE> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test result update */
void ecpri_test_result_update(void);
/* eCPRI test ECS_RFM0 init */
void ecpri_test_ecs0_init(void);
/* eCPRI test PL packet process */
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len);
/* eCPRI test ECS_RFM0 status check */
void ecpri_test_ecs0_status_check(void);
/* eCPRI test ECS_RFM0 result update */
void ecpri_test_ecs0_result_update(void);
#endif
#ifdef ECS_RFM1
/* eCPRI test ECS_RFM1 init */
void ecpri_test_ecs1_init(void);
#endif

View File

@ -35,15 +35,11 @@ EcpriLBTestResult_t g_ecpri_lb_test_result = {0};
int32_t fh_data_init(void)
{
#ifdef ECS_RFM0
memset_ucp((void *)&g_ecpri_lb_test_result, 0, sizeof(g_ecpri_lb_test_result));
ecpri_test_ecs0_init();
#endif
/* send flag init(symbol interrupt) */
debug_write(ECPRI_DBG_IDX0(64), 0); /* ECS_RFM0: 0xB7E30100(64) */
/* send length init */
debug_write(ECPRI_DBG_IDX0(65), 0); /* ECS_RFM0: 0xB7E30104(65) */
/* eCPRI test flag init */
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag); /* ECS_RFM0: 0xB7E32000(0) */
#ifdef ECS_RFM1
ecpri_test_ecs1_init();
#endif
return SUCCESS;
@ -93,19 +89,7 @@ int32_t fh_csu_test_init(void)
void fh_data_check(uint32_t times)
{
#ifdef ECS_RFM0
/* get eCPRI test flag */
g_ecpri_test_flag = do_read_volatile(ECPRI_TEST_ADDR0(0)); /* ECS_RFM0: 0xB7E32000(0) */
if (0 == g_ecpri_test_flag)
{
return;
}
/* eCPRI test result update */
ecpri_test_result_update();
/* clear eCPRI test flag */
g_ecpri_test_flag = 0;
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag); /* ECS_RFM0: 0xB7E32000(0) */
ecpri_test_ecs0_status_check();
#endif
}
@ -123,6 +107,27 @@ void fh_test_case(void)
}
#ifdef ECS_RFM0
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_init
* Description: eCPRI test ECS_RFM0 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_init(void)
{
memset_ucp((void *)&g_ecpri_lb_test_result, 0, sizeof(g_ecpri_lb_test_result));
/* send flag init(symbol interrupt) */
debug_write(ECPRI_DBG_IDX0(64), 0); /* ECS_RFM0: 0xB7E30100(64) */
/* send length init */
debug_write(ECPRI_DBG_IDX0(65), 0); /* ECS_RFM0: 0xB7E30104(65) */
/* eCPRI test flag init */
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag); /* ECS_RFM0: 0xB7E32000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_pl_pkt_proc
* Description: eCPRI test PL packet process
@ -180,18 +185,59 @@ void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len)
}
/**********************************************************************************************************************
* Function: ecpri_test_result_update
* Description: eCPRI test result update
* Function: ecpri_test_ecs0_status_check
* Description: eCPRI test ECS_RFM0 status check
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_result_update(void)
void ecpri_test_ecs0_status_check(void)
{
debug_write(ECPRI_TEST_IDX(4100), g_ecpri_lb_test_result.pl_stat.test_times); /* ECS_RFM0: 0xB7E36010(4100) */
debug_write(ECPRI_TEST_IDX(4101), g_ecpri_lb_test_result.pl_stat.succ_times); /* ECS_RFM0: 0xB7E36014(4101) */
debug_write(ECPRI_TEST_IDX(4102), g_ecpri_lb_test_result.pl_stat.fail_times); /* ECS_RFM0: 0xB7E36018(4102) */
/* get eCPRI test flag */
g_ecpri_test_flag = do_read_volatile(ECPRI_TEST_ADDR0(0)); /* ECS_RFM0: 0xB7E32000(0) */
if (0 == g_ecpri_test_flag)
{
return;
}
/* eCPRI test ECS_RFM0 result update */
ecpri_test_ecs0_result_update();
/* clear eCPRI test flag */
g_ecpri_test_flag = 0;
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag); /* ECS_RFM0: 0xB7E32000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_result_update
* Description: eCPRI test ECS_RFM0 result update
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_result_update(void)
{
debug_write(ECPRI_TEST_IDX0(4100), g_ecpri_lb_test_result.pl_stat.test_times); /* ECS_RFM0: 0xB7E36010(4100) */
debug_write(ECPRI_TEST_IDX0(4101), g_ecpri_lb_test_result.pl_stat.succ_times); /* ECS_RFM0: 0xB7E36014(4101) */
debug_write(ECPRI_TEST_IDX0(4102), g_ecpri_lb_test_result.pl_stat.fail_times); /* ECS_RFM0: 0xB7E36018(4102) */
}
#endif
#ifdef ECS_RFM1
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_init
* Description: eCPRI test ECS_RFM1 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_init(void)
{
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
}
#endif

View File

@ -283,6 +283,9 @@ void ecpri_test_ecs1_init(void)
/* count index */
uint16_t i = 0;
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
/* data conversion */
for (ant_id = 0; ant_id < ECPRI_ANT_NUM; ant_id++)
{

View File

@ -283,6 +283,9 @@ void ecpri_test_ecs1_init(void)
/* count index */
uint16_t i = 0;
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
/* data conversion */
for (ant_id = 0; ant_id < ECPRI_ANT_NUM; ant_id++)
{

View File

@ -0,0 +1,56 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case110.h
* Create Date: 23/12/18
* Description: eCPRI Test Case110 Module Header File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/18 1.0 Build this module
**********************************************************************************************************************/
#ifndef _ECPRI_TEST_CASE110_H_
#define _ECPRI_TEST_CASE110_H_
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#include "ecpri_test.h"
#ifdef ECS_RFM0
#include "ecpri_csu.h"
#endif
#ifdef ECS_RFM1
#include "ecpri_driver.h"
#endif
/* -------------------------------------------------- <MACRO DEF> -------------------------------------------------- */
/* -------------------------------------------------- <TYPE DEF> --------------------------------------------------- */
/* eCPRI loopback test result structure */
typedef struct EcpriLBTestResult
{
EcpriTestResult_t pl_stat; /* PL statistic */
} EcpriLBTestResult_t;
/* --------------------------------------------------- <DECLARE> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test ECS_RFM0 init */
void ecpri_test_ecs0_init(void);
/* eCPRI test PL packet process */
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len);
/* eCPRI test ECS_RFM0 status check */
void ecpri_test_ecs0_status_check(void);
/* eCPRI test ECS_RFM0 result update */
void ecpri_test_ecs0_result_update(void);
#endif
#ifdef ECS_RFM1
/* eCPRI test ECS_RFM1 init */
void ecpri_test_ecs1_init(void);
#endif
#endif /* _ECPRI_TEST_CASE110_H_ */

View File

@ -0,0 +1,2 @@
场景eCPRI数据包外环回测试
模式25G速率

View File

@ -0,0 +1,245 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case110.s.c
* Create Date: 23/12/18
* Description: eCPRI Test Case110 Module Source File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/18 1.0 Build this module
**********************************************************************************************************************/
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#include "ecpri_test_case110.h"
/* --------------------------------------------------- <VAR DEF> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test flag */
uint32_t g_ecpri_test_flag = 0; /* ECS_RFM0: 0xB7E32000(0) */
/* eCPRI loopback test result */
EcpriLBTestResult_t g_ecpri_lb_test_result = {0};
#endif
/* -------------------------------------------------- <FUNC DEF> --------------------------------------------------- */
/**********************************************************************************************************************
* Function: fh_data_init
* Description: fronthaul data init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_data_init(void)
{
#ifdef ECS_RFM0
ecpri_test_ecs0_init();
#endif
#ifdef ECS_RFM1
ecpri_test_ecs1_init();
#endif
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_drv_init
* Description: fronthaul driver init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_drv_init(void)
{
#ifdef ECS_RFM1
/* eCPRI init */
ecpri_init(ECPRI_OPTION_25G);
#endif
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_csu_test_init
* Description: fronthaul CSU test init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_csu_test_init(void)
{
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_data_check
* Description: fronthaul data check
* Input:
* <name> <type> <desc>
* times uint32_t check times
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void fh_data_check(uint32_t times)
{
#ifdef ECS_RFM0
ecpri_test_ecs0_status_check();
#endif
}
/**********************************************************************************************************************
* Function: fh_test_case
* Description: fronthaul test case
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void fh_test_case(void)
{
return;
}
#ifdef ECS_RFM0
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_init
* Description: eCPRI test ECS_RFM0 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_init(void)
{
memset_ucp((void *)&g_ecpri_lb_test_result, 0, sizeof(g_ecpri_lb_test_result));
/* send flag init(symbol interrupt) */
debug_write(ECPRI_DBG_IDX0(64), 0); /* ECS_RFM0: 0xB7E30100(64) */
/* send length init */
debug_write(ECPRI_DBG_IDX0(65), 0); /* ECS_RFM0: 0xB7E30104(65) */
/* eCPRI test flag init */
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag); /* ECS_RFM0: 0xB7E32000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_pl_pkt_proc
* Description: eCPRI test PL packet process
* Input:
* <name> <type> <desc>
* pkt_addr uint32_t packet address
* pkt_len uint16_t packet length
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len)
{
/* counter index */
uint8_t i = 0;
/* source MAC */
uint8_t src_mac = 0;
/* destination MAC */
uint8_t dst_mac = 0;
g_ecpri_lb_test_result.pl_stat.test_times++;
/* input para check */
if ((NULL == (void *)pkt_addr) || (ECPRI_PKT_SIZE < pkt_len))
{
g_ecpri_lb_test_result.pl_stat.fail_times++;
return;
}
/* data temporary storage */
(void)ape_csu_dma_1D_G2L_ch2ch3_transfer(pkt_addr,
ECPRI_TEST_ADDR0(4),
pkt_len,
1,
1); /* ECS_RFM0: 0xB7E32010(4) ~ 0xB7E3600C(4099) */
//__ucps2_synch(0);
/* exchange source/destination MAC address */
for (i = 0; i < MAC_ADDR_LEN; i++)
{
dst_mac = do_read_volatile_byte((void *)(ECPRI_TEST_ADDR0(4) + i));
src_mac = do_read_volatile_byte((void *)(ECPRI_TEST_ADDR0(4) + i + MAC_ADDR_LEN));
//__ucps2_synch(0);
do_write_byte((void *)(ECPRI_TEST_ADDR0(4) + i), src_mac);
do_write_byte((void *)(ECPRI_TEST_ADDR0(4) + i + MAC_ADDR_LEN), dst_mac);
}
/* eCPRI CSU send packet */
(void)ecpri_csu_send(ECPRI_TEST_ADDR0(4), pkt_len, 0); /* ECS_RFM0: 0xB7E32010(4) ~ 0xB7E3600C(4099) */
g_ecpri_lb_test_result.pl_stat.succ_times++;
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_status_check
* Description: eCPRI test ECS_RFM0 status check
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_status_check(void)
{
/* get eCPRI test flag */
g_ecpri_test_flag = do_read_volatile(ECPRI_TEST_ADDR0(0)); /* ECS_RFM0: 0xB7E32000(0) */
if (0 == g_ecpri_test_flag)
{
return;
}
/* eCPRI test ECS_RFM0 result update */
ecpri_test_ecs0_result_update();
/* clear eCPRI test flag */
g_ecpri_test_flag = 0;
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag); /* ECS_RFM0: 0xB7E32000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_result_update
* Description: eCPRI test ECS_RFM0 result update
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_result_update(void)
{
debug_write(ECPRI_TEST_IDX0(4100), g_ecpri_lb_test_result.pl_stat.test_times); /* ECS_RFM0: 0xB7E36010(4100) */
debug_write(ECPRI_TEST_IDX0(4101), g_ecpri_lb_test_result.pl_stat.succ_times); /* ECS_RFM0: 0xB7E36014(4101) */
debug_write(ECPRI_TEST_IDX0(4102), g_ecpri_lb_test_result.pl_stat.fail_times); /* ECS_RFM0: 0xB7E36018(4102) */
}
#endif
#ifdef ECS_RFM1
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_init
* Description: eCPRI test ECS_RFM1 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_init(void)
{
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
}
#endif

View File

@ -0,0 +1,60 @@
// +FHDR------------------------------------------------------------
// Copyright (c) 2022 SmartLogic.
// ALL RIGHTS RESERVED
// -----------------------------------------------------------------
// Filename : ape_test_case110.s.c
// Author :
// Created On : 2023-12-18
// Last Modified :
// -----------------------------------------------------------------
// Description:
//
//
// -FHDR------------------------------------------------------------
#include "typedef.h"
#include "osp_task.h"
#include "osp_timer.h"
#include "ucp_printf.h"
void ape0_test_task_reg(void)
{
return ;
}
void ape1_test_task_reg(void)
{
return ;
}
void ape2_test_task_reg(void)
{
return ;
}
void ape3_test_task_reg(void)
{
return ;
}
void ape4_test_task_reg(void)
{
return ;
}
void ape5_test_task_reg(void)
{
return ;
}
void ape6_test_task_reg(void)
{
return ;
}
void ape7_test_task_reg(void)
{
return ;
}

View File

@ -0,0 +1,56 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case111.h
* Create Date: 23/12/22
* Description: eCPRI Test Case111 Module Header File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/22 1.0 Build this module
**********************************************************************************************************************/
#ifndef _ECPRI_TEST_CASE111_H_
#define _ECPRI_TEST_CASE111_H_
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#include "ecpri_test.h"
#ifdef ECS_RFM0
#include "ecpri_irq.h"
#endif
#ifdef ECS_RFM1
#include "ecpri_test_case111_antdata.h"
#include "ecpri_driver.h"
#endif
/* -------------------------------------------------- <MACRO DEF> -------------------------------------------------- */
/* -------------------------------------------------- <TYPE DEF> --------------------------------------------------- */
/* --------------------------------------------------- <DECLARE> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test ECS_RFM0 init */
void ecpri_test_ecs0_init(void);
/* eCPRI test PL packet process */
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len);
/* eCPRI test ECS_RFM0 status check */
void ecpri_test_ecs0_status_check(void);
/* eCPRI test ECS_RFM0 result update */
void ecpri_test_ecs0_result_update(void);
#endif
#ifdef ECS_RFM1
/* eCPRI test ECS_RFM1 init */
void ecpri_test_ecs1_init(void);
/* eCPRI test ECS_RFM1 status check */
void ecpri_test_ecs1_status_check(void);
/* eCPRI test ECS_RFM1 result update */
void ecpri_test_ecs1_result_update(void);
#endif
#endif /* _ECPRI_TEST_CASE111_H_ */

View File

@ -0,0 +1,117 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case111_antdata.h
* Create Date: 23/12/22
* Description: eCPRI Test Case111 Antenna Data Module Header File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/22 1.0 Build this module
**********************************************************************************************************************/
#ifndef _ECPRI_TEST_CASE111_ANTDATA_H_
#define _ECPRI_TEST_CASE111_ANTDATA_H_
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#ifdef ECS_RFM1
#include "mem_sections.h"
#include "ecpri_comm.h"
#endif
/* -------------------------------------------------- <MACRO DEF> -------------------------------------------------- */
/* TDD eCPRI IQ 10bit compress enable */
//#define TDD_ECPRI_COMP_10BIT_EN
/* TDD eCPRI symbol0 length */
#define TDD_ECPRI_SYM0_LEN 4448
/* TDD eCPRI symbol1~symbol13 length */
#define TDD_ECPRI_SYMX_LEN 4384
/* TDD eCPRI symbol0 compress length */
#define TDD_ECPRI_SYM0_COMP_LEN (TDD_ECPRI_SYM0_LEN * 10 / 16)
/* TDD eCPRI symbol1~symbol13 compress length */
#define TDD_ECPRI_SYMX_COMP_LEN (TDD_ECPRI_SYMX_LEN * 10 / 16)
/* TDD eCPRI symbol0 packet length(11,152) */
#define TDD_ECPRI_SYM0_PKT_LEN (TDD_ECPRI_SYM0_COMP_LEN * 4 + 32)
/* TDD eCPRI symbol1~symbol13 packet length(10,992) */
#define TDD_ECPRI_SYMX_PKT_LEN (TDD_ECPRI_SYMX_COMP_LEN * 4 + 32)
/* -------------------------------------------------- <TYPE DEF> --------------------------------------------------- */
#ifdef ECS_RFM1
/* TDD eCPRI head structure */
typedef struct TddEcpriHead
{
/* ethernet head */
uint8_t dst_mac[MAC_ADDR_LEN]; /* destination MAC address */
uint8_t src_mac[MAC_ADDR_LEN]; /* source MAC address */
uint32_t vlan_tag; /* VLAN tag */
uint16_t ether_type; /* ethernet type */
/* common head */
uint8_t pkt_concat : 1; /* packet concatenation[0] */
uint8_t reserved : 3; /* reserved[3:1] */
uint8_t ecpri_ver : 4; /* eCPRI version[7:4] */
uint8_t msg_type; /* message type */
uint16_t payload_size; /* payload size */
/* custom head */
uint8_t sector_id : 4; /* sector index[3:0] */
uint8_t cu_port_id : 4; /* CU port index[7:4] */
uint8_t ant_id : 4; /* antenna index[3:0] */
uint8_t cc_id : 4; /* carrier unit[7:4] */
uint8_t seq_id; /* sequence index */
uint8_t subseq_id : 7; /* subsequence index[6:0] */
uint8_t seq_end : 1; /* sequence end flag[7] */
uint8_t fltr_id : 4; /* filter index[3:0] */
uint8_t payload_ver : 3; /* payload version[6:4] */
uint8_t data_dir : 1; /* data direction[7] */
uint8_t frame_id_l; /* frame index low */
uint8_t slot_id : 4; /* slot index[3:0] */
uint8_t subframe_id : 4; /* subframe index[7:4] */
uint8_t sym_id : 6; /* symbol index[5:0] */
uint8_t frame_id_h : 2; /* frame index high[7:6] */
uint8_t udcomp_meth : 4; /* IQ compress method[3:0] */
uint8_t udiq_width : 4; /* IQ bit width indication[7:4] */
uint8_t udcomp_para; /* IQ compress parameter */
} TddEcpriHead_t;
/* TDD eCPRI symbol0 packet structure */
typedef struct TddEcpriSym0Pkt
{
TddEcpriHead_t tdd_ecpri_head; /* TDD ethernet head */
uint32_t tdd_sym0_data[TDD_ECPRI_SYM0_COMP_LEN];
/* TDD symbol0 data */
} TddEcpriSym0Pkt_t;
/* TDD eCPRI symbol1~symbol13 packet structure */
typedef struct TddEcpriSymXPkt
{
TddEcpriHead_t tdd_ecpri_head; /* TDD ethernet head */
uint32_t tdd_symx_data[TDD_ECPRI_SYMX_COMP_LEN];
/* TDD symbol1~symbol13 data */
} TddEcpriSymXPkt_t;
/* TDD eCPRI antenna config data structure */
typedef struct TddEcpriAntCfgData
{
TddEcpriSym0Pkt_t tdd_sym0; /* TDD symbol0 */
TddEcpriSymXPkt_t tdd_symx[ECPRI_SYM_NUM - 1];
/* TDD symbol1~symbol13 */
} TddEcpriAntCfgData_t;
#endif
/* --------------------------------------------------- <DECLARE> --------------------------------------------------- */
#ifdef ECS_RFM1
/* TDD eCPRI antenna config data */
extern DDR0 TddEcpriAntCfgData_t g_tdd_ecpri_ant_cfg_data[ECPRI_ANT_NUM];
#endif
#endif /* _ECPRI_TEST_CASE111_ANTDATA_H_ */

View File

@ -0,0 +1,2 @@
场景eCPRI发包测试
模式25G速率TDD。

View File

@ -0,0 +1,388 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case111.s.c
* Create Date: 23/12/22
* Description: eCPRI Test Case111 Module Source File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/22 1.0 Build this module
**********************************************************************************************************************/
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#include "ecpri_test_case111.h"
/* --------------------------------------------------- <VAR DEF> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test ECS_RFM0 flag */
uint32_t g_ecpri_test_flag0 = 0; /* ECS_RFM0: 0xB7E32000(0) */
/* eCPRI test antenna index */
uint32_t g_ecpri_test_ant_id = 0; /* ECS_RFM0: 0xB7E32004(1) */
/* eCPRI test symbol index */
uint32_t g_ecpri_test_sym_id = 0; /* ECS_RFM0: 0xB7E32008(2) */
/* eCPRI test ECS_RFM0 result */
EcpriTestResult_t g_ecpri_test_result0 = {0};
#endif
#ifdef ECS_RFM1
/* eCPRI test ECS_RFM1 flag */
uint32_t g_ecpri_test_flag1 = 0; /* ECS_RFM1: 0xB7E42000(0) */
/* eCPRI test ECS_RFM1 result */
EcpriTestResult_t g_ecpri_test_result1 = {0};
#endif
/* -------------------------------------------------- <FUNC DEF> --------------------------------------------------- */
/**********************************************************************************************************************
* Function: fh_data_init
* Description: fronthaul data init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_data_init(void)
{
#ifdef ECS_RFM0
ecpri_test_ecs0_init();
#endif
#ifdef ECS_RFM1
ecpri_test_ecs1_init();
#endif
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_drv_init
* Description: fronthaul driver init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_drv_init(void)
{
#ifdef ECS_RFM1
/* eCPRI init */
ecpri_init(ECPRI_OPTION_25G);
#endif
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_csu_test_init
* Description: fronthaul CSU test init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_csu_test_init(void)
{
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_data_check
* Description: fronthaul data check
* Input:
* <name> <type> <desc>
* times uint32_t check times
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void fh_data_check(uint32_t times)
{
#ifdef ECS_RFM0
ecpri_test_ecs0_status_check();
#endif
#ifdef ECS_RFM1
ecpri_test_ecs1_status_check();
#endif
}
/**********************************************************************************************************************
* Function: fh_test_case
* Description: fronthaul test case
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void fh_test_case(void)
{
return;
}
#ifdef ECS_RFM0
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_init
* Description: eCPRI test ECS_RFM0 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_init(void)
{
memset_ucp((void *)&g_ecpri_test_result0, 0, sizeof(g_ecpri_test_result0));
/* send flag init(symbol interrupt) */
debug_write(ECPRI_DBG_IDX0(64), 0); /* ECS_RFM0: 0xB7E30100(64) */
/* send length init */
debug_write(ECPRI_DBG_IDX0(65), 0); /* ECS_RFM0: 0xB7E30104(65) */
/* ECS_RFM0 test flag init */
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag0); /* ECS_RFM0: 0xB7E32000(0) */
/* antenna index init */
debug_write(ECPRI_TEST_IDX0(1), g_ecpri_test_ant_id); /* ECS_RFM0: 0xB7E32004(1) */
/* symbol index init */
debug_write(ECPRI_TEST_IDX0(2), g_ecpri_test_sym_id); /* ECS_RFM0: 0xB7E32008(2) */
}
/**********************************************************************************************************************
* Function: ecpri_test_pl_pkt_proc
* Description: eCPRI test PL packet process
* Input:
* <name> <type> <desc>
* pkt_addr uint32_t packet address
* pkt_len uint16_t packet length
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len)
{
return;
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_status_check
* Description: eCPRI test ECS_RFM0 status check
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_status_check(void)
{
/* return value */
int32_t ret = 0;
/* antenna number */
uint32_t ant_num = 1;
/* symbol number */
uint32_t sym_num = 1;
/* count index */
uint8_t i = 0;
uint8_t j = 0;
/* get ECS_RFM0 test flag */
g_ecpri_test_flag0 = do_read_volatile((void *)ECPRI_TEST_ADDR0(0)); /* ECS_RFM0: 0xB7E32000(0) */
if (0 == g_ecpri_test_flag0)
{
return;
}
/* get test antenna index */
g_ecpri_test_ant_id = do_read_volatile((void *)ECPRI_TEST_ADDR0(1)); /* ECS_RFM0: 0xB7E32004(1) */
if (ECPRI_ANT_NUM <= g_ecpri_test_ant_id)
{
ant_num = ECPRI_ANT_NUM;
}
/* get test symbol index */
g_ecpri_test_sym_id = do_read_volatile((void *)ECPRI_TEST_ADDR0(2)); /* ECS_RFM0: 0xB7E32008(2) */
if (ECPRI_SYM_NUM <= g_ecpri_test_sym_id)
{
sym_num = ECPRI_SYM_NUM;
}
for (i = 0; i < ant_num; i++)
{
for (j = 0; j < sym_num; j++)
{
g_ecpri_test_result0.test_times++;
if ((1 == ant_num) && (1 == sym_num))
{
ret = ecpri_sym_irq_send(g_ecpri_test_ant_id, 0, g_ecpri_test_sym_id);
}
else if ((1 == ant_num) && (ECPRI_SYM_NUM == sym_num))
{
ret = ecpri_sym_irq_send(g_ecpri_test_ant_id, 0, j);
}
else if ((ECPRI_ANT_NUM == ant_num) && (1 == sym_num))
{
ret = ecpri_sym_irq_send(i, 0, g_ecpri_test_sym_id);
}
else
{
ret = ecpri_sym_irq_send(i, 0, j);
}
if (SUCCESS == ret)
{
g_ecpri_test_result0.succ_times++;
}
else
{
g_ecpri_test_result0.fail_times++;
}
}
}
/* eCPRI test ECS_RFM0 result update */
ecpri_test_ecs0_result_update();
/* clear ECS_RFM0 test flag */
g_ecpri_test_flag0 = 0;
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag0); /* ECS_RFM0: 0xB7E32000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_result_update
* Description: eCPRI test ECS_RFM0 result update
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_result_update(void)
{
debug_write(ECPRI_TEST_IDX0(4), g_ecpri_test_result0.test_times); /* ECS_RFM0: 0xB7E32010(4) */
debug_write(ECPRI_TEST_IDX0(5), g_ecpri_test_result0.succ_times); /* ECS_RFM0: 0xB7E32014(5) */
debug_write(ECPRI_TEST_IDX0(6), g_ecpri_test_result0.fail_times); /* ECS_RFM0: 0xB7E32018(6) */
}
#endif
#ifdef ECS_RFM1
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_init
* Description: eCPRI test ECS_RFM1 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_init(void)
{
/* antenna index */
uint8_t ant_id = 0;
/* slot type */
uint8_t slot_type = 0;
/* symbol index */
uint8_t sym_id = 0;
/* count index */
uint16_t i = 0;
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
/* data conversion */
for (ant_id = 0; ant_id < ECPRI_ANT_NUM; ant_id++)
{
for (sym_id = 0; sym_id < ECPRI_SYM_NUM; sym_id++)
{
if (0 == sym_id)
{
HTON_L(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_sym0.tdd_ecpri_head.vlan_tag);
HTON_S(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_sym0.tdd_ecpri_head.ether_type);
HTON_S(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_sym0.tdd_ecpri_head.payload_size);
for (i = 0; i < TDD_ECPRI_SYM0_COMP_LEN; i++)
{
HTON_L(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_sym0.tdd_sym0_data[i]);
}
}
else
{
HTON_L(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_symx[sym_id - 1].tdd_ecpri_head.vlan_tag);
HTON_S(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_symx[sym_id - 1].tdd_ecpri_head.ether_type);
HTON_S(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_symx[sym_id - 1].tdd_ecpri_head.payload_size);
for (i = 0; i < TDD_ECPRI_SYMX_COMP_LEN; i++)
{
HTON_L(g_tdd_ecpri_ant_cfg_data[ant_id].tdd_symx[sym_id - 1].tdd_symx_data[i]);
}
}
}
}
/* eCPRI antenna config */
for (ant_id = 0; ant_id < ECPRI_ANT_NUM; ant_id++)
{
for (slot_type = 0; slot_type < ECPRI_SLOT_TYPE; slot_type++)
{
for (sym_id = 0; sym_id < ECPRI_SYM_NUM; sym_id++)
{
if (0 == sym_id)
{
ecpri_ant_cfg(ant_id, slot_type, sym_id,
(uint32_t)(&g_tdd_ecpri_ant_cfg_data[ant_id].tdd_sym0), TDD_ECPRI_SYM0_PKT_LEN);
}
else
{
ecpri_ant_cfg(ant_id, slot_type, sym_id,
(uint32_t)(&g_tdd_ecpri_ant_cfg_data[ant_id].tdd_symx[sym_id - 1]), TDD_ECPRI_SYMX_PKT_LEN);
}
}
}
}
memset_ucp((void *)&g_ecpri_test_result1, 0, sizeof(g_ecpri_test_result1));
/* ECS_RFM1 test flag init */
debug_write(ECPRI_TEST_IDX1(0), g_ecpri_test_flag1); /* ECS_RFM1: 0xB7E42000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_status_check
* Description: eCPRI test ECS_RFM1 status check
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_status_check(void)
{
/* get ECS_RFM1 test flag */
g_ecpri_test_flag1 = do_read_volatile((void *)ECPRI_TEST_ADDR1(0)); /* ECS_RFM1: 0xB7E42000(0) */
if (0 == g_ecpri_test_flag1)
{
return;
}
/* eCPRI test ECS_RFM1 result update */
ecpri_test_ecs1_result_update();
/* clear ECS_RFM1 test flag */
g_ecpri_test_flag1 = 0;
debug_write(ECPRI_TEST_IDX1(0), g_ecpri_test_flag1); /* ECS_RFM1: 0xB7E42000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_result_update
* Description: eCPRI test ECS_RFM1 result update
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_result_update(void)
{
debug_write(ECPRI_TEST_IDX1(4), g_ecpri_test_result1.test_times); /* ECS_RFM1: 0xB7E42010(4) */
debug_write(ECPRI_TEST_IDX1(5), g_ecpri_test_result1.succ_times); /* ECS_RFM1: 0xB7E42014(5) */
debug_write(ECPRI_TEST_IDX1(6), g_ecpri_test_result1.fail_times); /* ECS_RFM1: 0xB7E42018(6) */
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,60 @@
// +FHDR------------------------------------------------------------
// Copyright (c) 2022 SmartLogic.
// ALL RIGHTS RESERVED
// -----------------------------------------------------------------
// Filename : ape_test_case111.s.c
// Author :
// Created On : 2023-12-22
// Last Modified :
// -----------------------------------------------------------------
// Description:
//
//
// -FHDR------------------------------------------------------------
#include "typedef.h"
#include "osp_task.h"
#include "osp_timer.h"
#include "ucp_printf.h"
void ape0_test_task_reg(void)
{
return ;
}
void ape1_test_task_reg(void)
{
return ;
}
void ape2_test_task_reg(void)
{
return ;
}
void ape3_test_task_reg(void)
{
return ;
}
void ape4_test_task_reg(void)
{
return ;
}
void ape5_test_task_reg(void)
{
return ;
}
void ape6_test_task_reg(void)
{
return ;
}
void ape7_test_task_reg(void)
{
return ;
}

View File

@ -0,0 +1,56 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case112.h
* Create Date: 23/12/22
* Description: eCPRI Test Case112 Module Header File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/22 1.0 Build this module
**********************************************************************************************************************/
#ifndef _ECPRI_TEST_CASE112_H_
#define _ECPRI_TEST_CASE112_H_
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#include "ecpri_test.h"
#ifdef ECS_RFM0
#include "ecpri_irq.h"
#endif
#ifdef ECS_RFM1
#include "ecpri_test_case112_antdata.h"
#include "ecpri_driver.h"
#endif
/* -------------------------------------------------- <MACRO DEF> -------------------------------------------------- */
/* -------------------------------------------------- <TYPE DEF> --------------------------------------------------- */
/* --------------------------------------------------- <DECLARE> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test ECS_RFM0 init */
void ecpri_test_ecs0_init(void);
/* eCPRI test PL packet process */
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len);
/* eCPRI test ECS_RFM0 status check */
void ecpri_test_ecs0_status_check(void);
/* eCPRI test ECS_RFM0 result update */
void ecpri_test_ecs0_result_update(void);
#endif
#ifdef ECS_RFM1
/* eCPRI test ECS_RFM1 init */
void ecpri_test_ecs1_init(void);
/* eCPRI test ECS_RFM1 status check */
void ecpri_test_ecs1_status_check(void);
/* eCPRI test ECS_RFM1 result update */
void ecpri_test_ecs1_result_update(void);
#endif
#endif /* _ECPRI_TEST_CASE112_H_ */

View File

@ -0,0 +1,110 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case112_antdata.h
* Create Date: 23/12/22
* Description: eCPRI Test Case112 Antenna Data Module Header File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/22 1.0 Build this module
**********************************************************************************************************************/
#ifndef _ECPRI_TEST_CASE112_ANTDATA_H_
#define _ECPRI_TEST_CASE112_ANTDATA_H_
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#ifdef ECS_RFM1
#include "mem_sections.h"
#include "ecpri_comm.h"
#endif
/* -------------------------------------------------- <MACRO DEF> -------------------------------------------------- */
/* FDD eCPRI IQ 10bit compress enable */
//#define FDD_ECPRI_COMP_10BIT_EN
/* FDD eCPRI PRB number */
#define FDD_ECPRI_PRB_NUM 273
/* FDD eCPRI RE number per PRB */
#define FDD_ECPRI_PRB_RE_NUM 12
/* FDD eCPRI symbol0~symbol13 length */
#define FDD_ECPRI_SYMX_LEN (FDD_ECPRI_PRB_NUM * FDD_ECPRI_PRB_RE_NUM)
/* FDD eCPRI symbol0~symbol13 compress length(2,048) */
#define FDD_ECPRI_SYMX_COMP_LEN ((uint32_t)(FDD_ECPRI_SYMX_LEN * 10 / 16 + 1))
/* FDD eCPRI symbol0~symbol13 packet length(8,228) */
#define FDD_ECPRI_SYMX_PKT_LEN (FDD_ECPRI_SYMX_COMP_LEN * 4 + 36)
/* -------------------------------------------------- <TYPE DEF> --------------------------------------------------- */
#ifdef ECS_RFM1
/* FDD eCPRI head structure */
typedef struct FddEcpriHead
{
/* ethernet head */
uint8_t dst_mac[MAC_ADDR_LEN]; /* destination MAC address */
uint8_t src_mac[MAC_ADDR_LEN]; /* source MAC address */
uint32_t vlan_tag; /* VLAN tag */
uint16_t ether_type; /* ethernet type */
/* common head */
uint8_t pkt_concat : 1; /* packet concatenation[0] */
uint8_t ecpri_rsv : 3; /* eCPRI reserved[3:1] */
uint8_t ecpri_ver : 4; /* eCPRI version[7:4] */
uint8_t msg_type; /* message type */
uint16_t payload_size; /* payload size */
/* custom head */
uint8_t sector_id : 4; /* sector index[3:0] */
uint8_t cu_port_id : 4; /* CU port index[7:4] */
uint8_t ant_id : 4; /* antenna index[3:0] */
uint8_t cc_id : 4; /* carrier unit[7:4] */
uint8_t seq_id; /* sequence index */
uint8_t subseq_id : 7; /* subsequence index[6:0] */
uint8_t seq_end : 1; /* sequence end flag[7] */
uint8_t fltr_id : 4; /* filter index[3:0] */
uint8_t payload_ver : 3; /* payload version[6:4] */
uint8_t data_dir : 1; /* data direction[7] */
uint8_t frame_id; /* frame index */
uint32_t startPrbc_h : 2; /* start PRB high[1:0] */
uint32_t symInc : 1; /* symbol increase[2] */
uint32_t rb : 1; /* resource block[3] */
uint32_t sectionId : 12; /* section index[15:4] */
uint32_t sym_id : 6; /* symbol index[21:16] */
uint32_t slot_id : 6; /* slot index[27:22] */
uint32_t subframe_id : 4; /* subframe index[31:28] */
uint8_t startPrbc_l; /* start PRB low */
uint8_t numPrbc; /* PRB number */
uint8_t udCompHdr; /* user data compress header */
uint8_t reserved; /* reserved */
} FddEcpriHead_t;
/* FDD eCPRI symbol0~symbol13 packet structure */
typedef struct FddEcpriSymXPkt
{
FddEcpriHead_t fdd_ecpri_head; /* FDD ethernet head */
uint32_t fdd_symx_data[FDD_ECPRI_SYMX_COMP_LEN];
/* FDD symbol0~symbol13 data */
} FddEcpriSymXPkt_t;
/* FDD eCPRI antenna config data structure */
typedef struct FddEcpriAntCfgData
{
FddEcpriSymXPkt_t fdd_symx[ECPRI_SYM_NUM]; /* FDD symbol0~symbol13 */
} FddEcpriAntCfgData_t;
#endif
/* --------------------------------------------------- <DECLARE> --------------------------------------------------- */
#ifdef ECS_RFM1
/* FDD eCPRI antenna config data */
extern DDR0 FddEcpriAntCfgData_t g_fdd_ecpri_ant_cfg_data[ECPRI_ANT_NUM];
#endif
#endif /* _ECPRI_TEST_CASE112_ANTDATA_H_ */

View File

@ -0,0 +1,2 @@
场景eCPRI发包测试
模式25G速率FDD。

View File

@ -0,0 +1,366 @@
/**********************************************************************************************************************
* Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
* File Name: ecpri_test_case112.s.c
* Create Date: 23/12/22
* Description: eCPRI Test Case112 Module Source File
* Change History:
* <author> <time> <version> <desc>
* 1. ShangH 23/12/22 1.0 Build this module
**********************************************************************************************************************/
/* -------------------------------------------------- <INC FILE> --------------------------------------------------- */
#include "ecpri_test_case112.h"
/* --------------------------------------------------- <VAR DEF> --------------------------------------------------- */
#ifdef ECS_RFM0
/* eCPRI test ECS_RFM0 flag */
uint32_t g_ecpri_test_flag0 = 0; /* ECS_RFM0: 0xB7E32000(0) */
/* eCPRI test antenna index */
uint32_t g_ecpri_test_ant_id = 0; /* ECS_RFM0: 0xB7E32004(1) */
/* eCPRI test symbol index */
uint32_t g_ecpri_test_sym_id = 0; /* ECS_RFM0: 0xB7E32008(2) */
/* eCPRI test ECS_RFM0 result */
EcpriTestResult_t g_ecpri_test_result0 = {0};
#endif
#ifdef ECS_RFM1
/* eCPRI test ECS_RFM1 flag */
uint32_t g_ecpri_test_flag1 = 0; /* ECS_RFM1: 0xB7E42000(0) */
/* eCPRI test ECS_RFM1 result */
EcpriTestResult_t g_ecpri_test_result1 = {0};
#endif
/* -------------------------------------------------- <FUNC DEF> --------------------------------------------------- */
/**********************************************************************************************************************
* Function: fh_data_init
* Description: fronthaul data init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_data_init(void)
{
#ifdef ECS_RFM0
ecpri_test_ecs0_init();
#endif
#ifdef ECS_RFM1
ecpri_test_ecs1_init();
#endif
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_drv_init
* Description: fronthaul driver init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_drv_init(void)
{
#ifdef ECS_RFM1
/* eCPRI init */
ecpri_init(ECPRI_OPTION_25G);
#endif
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_csu_test_init
* Description: fronthaul CSU test init
* Input: none
* Output: none
* Return: operation result - success or failure.
* Others: none
**********************************************************************************************************************/
int32_t fh_csu_test_init(void)
{
return SUCCESS;
}
/**********************************************************************************************************************
* Function: fh_data_check
* Description: fronthaul data check
* Input:
* <name> <type> <desc>
* times uint32_t check times
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void fh_data_check(uint32_t times)
{
#ifdef ECS_RFM0
ecpri_test_ecs0_status_check();
#endif
#ifdef ECS_RFM1
ecpri_test_ecs1_status_check();
#endif
}
/**********************************************************************************************************************
* Function: fh_test_case
* Description: fronthaul test case
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void fh_test_case(void)
{
return;
}
#ifdef ECS_RFM0
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_init
* Description: eCPRI test ECS_RFM0 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_init(void)
{
memset_ucp((void *)&g_ecpri_test_result0, 0, sizeof(g_ecpri_test_result0));
/* send flag init(symbol interrupt) */
debug_write(ECPRI_DBG_IDX0(64), 0); /* ECS_RFM0: 0xB7E30100(64) */
/* send length init */
debug_write(ECPRI_DBG_IDX0(65), 0); /* ECS_RFM0: 0xB7E30104(65) */
/* ECS_RFM0 test flag init */
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag0); /* ECS_RFM0: 0xB7E32000(0) */
/* antenna index init */
debug_write(ECPRI_TEST_IDX0(1), g_ecpri_test_ant_id); /* ECS_RFM0: 0xB7E32004(1) */
/* symbol index init */
debug_write(ECPRI_TEST_IDX0(2), g_ecpri_test_sym_id); /* ECS_RFM0: 0xB7E32008(2) */
}
/**********************************************************************************************************************
* Function: ecpri_test_pl_pkt_proc
* Description: eCPRI test PL packet process
* Input:
* <name> <type> <desc>
* pkt_addr uint32_t packet address
* pkt_len uint16_t packet length
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_pl_pkt_proc(uint32_t pkt_addr, uint16_t pkt_len)
{
return;
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_status_check
* Description: eCPRI test ECS_RFM0 status check
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_status_check(void)
{
/* return value */
int32_t ret = 0;
/* antenna number */
uint32_t ant_num = 1;
/* symbol number */
uint32_t sym_num = 1;
/* count index */
uint8_t i = 0;
uint8_t j = 0;
/* get ECS_RFM0 test flag */
g_ecpri_test_flag0 = do_read_volatile((void *)ECPRI_TEST_ADDR0(0)); /* ECS_RFM0: 0xB7E32000(0) */
if (0 == g_ecpri_test_flag0)
{
return;
}
/* get test antenna index */
g_ecpri_test_ant_id = do_read_volatile((void *)ECPRI_TEST_ADDR0(1)); /* ECS_RFM0: 0xB7E32004(1) */
if (ECPRI_ANT_NUM <= g_ecpri_test_ant_id)
{
ant_num = ECPRI_ANT_NUM;
}
/* get test symbol index */
g_ecpri_test_sym_id = do_read_volatile((void *)ECPRI_TEST_ADDR0(2)); /* ECS_RFM0: 0xB7E32008(2) */
if (ECPRI_SYM_NUM <= g_ecpri_test_sym_id)
{
sym_num = ECPRI_SYM_NUM;
}
for (i = 0; i < ant_num; i++)
{
for (j = 0; j < sym_num; j++)
{
g_ecpri_test_result0.test_times++;
if ((1 == ant_num) && (1 == sym_num))
{
ret = ecpri_sym_irq_send(g_ecpri_test_ant_id, 0, g_ecpri_test_sym_id);
}
else if ((1 == ant_num) && (ECPRI_SYM_NUM == sym_num))
{
ret = ecpri_sym_irq_send(g_ecpri_test_ant_id, 0, j);
}
else if ((ECPRI_ANT_NUM == ant_num) && (1 == sym_num))
{
ret = ecpri_sym_irq_send(i, 0, g_ecpri_test_sym_id);
}
else
{
ret = ecpri_sym_irq_send(i, 0, j);
}
if (SUCCESS == ret)
{
g_ecpri_test_result0.succ_times++;
}
else
{
g_ecpri_test_result0.fail_times++;
}
}
}
/* eCPRI test ECS_RFM0 result update */
ecpri_test_ecs0_result_update();
/* clear ECS_RFM0 test flag */
g_ecpri_test_flag0 = 0;
debug_write(ECPRI_TEST_IDX0(0), g_ecpri_test_flag0); /* ECS_RFM0: 0xB7E32000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs0_result_update
* Description: eCPRI test ECS_RFM0 result update
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs0_result_update(void)
{
debug_write(ECPRI_TEST_IDX0(4), g_ecpri_test_result0.test_times); /* ECS_RFM0: 0xB7E32010(4) */
debug_write(ECPRI_TEST_IDX0(5), g_ecpri_test_result0.succ_times); /* ECS_RFM0: 0xB7E32014(5) */
debug_write(ECPRI_TEST_IDX0(6), g_ecpri_test_result0.fail_times); /* ECS_RFM0: 0xB7E32018(6) */
}
#endif
#ifdef ECS_RFM1
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_init
* Description: eCPRI test ECS_RFM1 init
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_init(void)
{
/* antenna index */
uint8_t ant_id = 0;
/* slot type */
uint8_t slot_type = 0;
/* symbol index */
uint8_t sym_id = 0;
/* count index */
uint16_t i = 0;
/* eCPRI buffer clear */
memset_ucp((void *)ECPRI_BUF_ADDR, 0x00, ECPRI_BUF_SIZE);
/* data conversion */
for (ant_id = 0; ant_id < ECPRI_ANT_NUM; ant_id++)
{
for (sym_id = 0; sym_id < ECPRI_SYM_NUM; sym_id++)
{
HTON_L(g_fdd_ecpri_ant_cfg_data[ant_id].fdd_symx[sym_id].fdd_ecpri_head.vlan_tag);
HTON_S(g_fdd_ecpri_ant_cfg_data[ant_id].fdd_symx[sym_id].fdd_ecpri_head.ether_type);
HTON_S(g_fdd_ecpri_ant_cfg_data[ant_id].fdd_symx[sym_id].fdd_ecpri_head.payload_size);
for (i = 0; i < FDD_ECPRI_SYMX_COMP_LEN; i++)
{
HTON_L(g_fdd_ecpri_ant_cfg_data[ant_id].fdd_symx[sym_id].fdd_symx_data[i]);
}
}
}
/* eCPRI antenna config */
for (ant_id = 0; ant_id < ECPRI_ANT_NUM; ant_id++)
{
for (slot_type = 0; slot_type < ECPRI_SLOT_TYPE; slot_type++)
{
for (sym_id = 0; sym_id < ECPRI_SYM_NUM; sym_id++)
{
ecpri_ant_cfg(ant_id, slot_type, sym_id,
(uint32_t)(&g_fdd_ecpri_ant_cfg_data[ant_id].fdd_symx[sym_id]), FDD_ECPRI_SYMX_PKT_LEN);
}
}
}
memset_ucp((void *)&g_ecpri_test_result1, 0, sizeof(g_ecpri_test_result1));
/* ECS_RFM1 test flag init */
debug_write(ECPRI_TEST_IDX1(0), g_ecpri_test_flag1); /* ECS_RFM1: 0xB7E42000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_status_check
* Description: eCPRI test ECS_RFM1 status check
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_status_check(void)
{
/* get ECS_RFM1 test flag */
g_ecpri_test_flag1 = do_read_volatile((void *)ECPRI_TEST_ADDR1(0)); /* ECS_RFM1: 0xB7E42000(0) */
if (0 == g_ecpri_test_flag1)
{
return;
}
/* eCPRI test ECS_RFM1 result update */
ecpri_test_ecs1_result_update();
/* clear ECS_RFM1 test flag */
g_ecpri_test_flag1 = 0;
debug_write(ECPRI_TEST_IDX1(0), g_ecpri_test_flag1); /* ECS_RFM1: 0xB7E42000(0) */
}
/**********************************************************************************************************************
* Function: ecpri_test_ecs1_result_update
* Description: eCPRI test ECS_RFM1 result update
* Input: none
* Output: none
* Return: none
* Others: none
**********************************************************************************************************************/
void ecpri_test_ecs1_result_update(void)
{
debug_write(ECPRI_TEST_IDX1(4), g_ecpri_test_result1.test_times); /* ECS_RFM1: 0xB7E42010(4) */
debug_write(ECPRI_TEST_IDX1(5), g_ecpri_test_result1.succ_times); /* ECS_RFM1: 0xB7E42014(5) */
debug_write(ECPRI_TEST_IDX1(6), g_ecpri_test_result1.fail_times); /* ECS_RFM1: 0xB7E42018(6) */
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,60 @@
// +FHDR------------------------------------------------------------
// Copyright (c) 2022 SmartLogic.
// ALL RIGHTS RESERVED
// -----------------------------------------------------------------
// Filename : ape_test_case112.s.c
// Author :
// Created On : 2023-12-22
// Last Modified :
// -----------------------------------------------------------------
// Description:
//
//
// -FHDR------------------------------------------------------------
#include "typedef.h"
#include "osp_task.h"
#include "osp_timer.h"
#include "ucp_printf.h"
void ape0_test_task_reg(void)
{
return ;
}
void ape1_test_task_reg(void)
{
return ;
}
void ape2_test_task_reg(void)
{
return ;
}
void ape3_test_task_reg(void)
{
return ;
}
void ape4_test_task_reg(void)
{
return ;
}
void ape5_test_task_reg(void)
{
return ;
}
void ape6_test_task_reg(void)
{
return ;
}
void ape7_test_task_reg(void)
{
return ;
}