1. fix UCP4008-SL-EVB feature #1612;

2. add para for phy_sniffer_start;
3. test case: case34, case44, case45, case48, case41, case42, case21.
This commit is contained in:
xinxin.li 2024-01-29 14:47:15 +08:00
parent 0456ba42e4
commit 926ce7e7a9
16 changed files with 125 additions and 79 deletions

View File

@ -43,6 +43,17 @@ typedef struct _tagJesdCsuNodePara
uint32_t allNum; // 需要csu搬运的总的数据长度B为单位 uint32_t allNum; // 需要csu搬运的总的数据长度B为单位
}stJesdCsuNodePara; }stJesdCsuNodePara;
/*******************************************************************************************************************
jesd_set_protocol_rx_advance
uint32_t rxAdvance:
NR提前13usLTE不提前LTE模式下
********************************************************************************************************************/
void jesd_set_protocol_rx_advance(uint32_t rxAdvance);
/******************************************************************************************************************* /*******************************************************************************************************************
jesd_csu_init jesd_csu_init
@ -59,13 +70,13 @@ int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode);
/******************************************************************************************************************* /*******************************************************************************************************************
jesd_orx_csu_init jesd_orx_csu_init
uint8_t margin: jesd csu一次搬移的数据量xnum=(32*2^margin)Bmargin值allnum/xnum是个整数值
0 : 0 :
-1: jesd_csu_init -1: jesd_csu_init
JESD ORX通道CSU初始化 JESD ORX通道CSU初始化
********************************************************************************************************************/ ********************************************************************************************************************/
int32_t jesd_orx_csu_init(void); int32_t jesd_orx_csu_init(uint8_t margin);
/******************************************************************************************************************* /*******************************************************************************************************************
jesd_csu_rx_inlatch_thres_cfg jesd_csu_rx_inlatch_thres_cfg

View File

@ -238,12 +238,13 @@ int32_t set_cpri_rru_msg(CpriRruMsg_t rru_msg);
/* /*
phy_sniffer_start phy_sniffer_start
uint32_t nOffsetUs:pp1s的us数
0 0
-1 -1
orx数据搬移 orx数据搬移
*/ */
int32_t phy_sniffer_start(); int32_t phy_sniffer_start(uint32_t nOffsetUs);
/* /*
spu_ddr_monitor_start spu_ddr_monitor_start

View File

@ -21,6 +21,7 @@ typedef struct JesdOrxPara
{ {
uint32_t orx_calldrv_cnt; uint32_t orx_calldrv_cnt;
uint32_t orx_start_flag; uint32_t orx_start_flag;
uint32_t orx_start_offset_us;
uint32_t orx_adjust_flag; uint32_t orx_adjust_flag;
uint32_t orx_adjust_val_lo; uint32_t orx_adjust_val_lo;
uint32_t orx_adjust_val_hi; uint32_t orx_adjust_val_hi;

View File

@ -33,6 +33,7 @@ typedef struct _tagJesdCsuPara
uint8_t nTotal; // n+cs+padding uint8_t nTotal; // n+cs+padding
uint8_t seq; uint8_t seq;
uint8_t margin; uint8_t margin;
uint8_t orxMargin;
uint8_t tfMode; uint8_t tfMode;
}stJesdCsuPara; }stJesdCsuPara;
@ -49,9 +50,11 @@ typedef struct _tagJesdListPara
uint32_t listNodeNum; uint32_t listNodeNum;
}stJesdListPara; }stJesdListPara;
int32_t jesd_para_init();
int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode); int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode);
int32_t jesd_orx_csu_init(void); int32_t jesd_orx_csu_init(uint8_t margin);
int32_t jesd_csu_rx_inlatch_thres_cfg(uint8_t ch, uint32_t send_threshold, uint32_t almostfull_threshold); int32_t jesd_csu_rx_inlatch_thres_cfg(uint8_t ch, uint32_t send_threshold, uint32_t almostfull_threshold);

View File

@ -3,7 +3,7 @@
#include "typedef.h" #include "typedef.h"
#define SNIFFER_TMR_PERIOD 100000 // 100ms #define SNIFFER_TMR_PERIOD 160000 // 160ms
int32_t jesd_orx_mtimer_init(int32_t nTmrId, int32_t nScsId); int32_t jesd_orx_mtimer_init(int32_t nTmrId, int32_t nScsId);
@ -29,7 +29,7 @@ void stop_jesd_orx_timer(void);
int32_t jesd_orx_pin_ctrl(void); int32_t jesd_orx_pin_ctrl(void);
// 物理层通知平台进行orx数据搬移 // 物理层通知平台进行orx数据搬移
int32_t phy_sniffer_start(); int32_t phy_sniffer_start(uint32_t nOffsetUs);
#endif #endif

View File

@ -50,6 +50,9 @@ int32_t jesd_mtimer_init(int32_t nTmrId, int32_t nScsId, int32_t nTddSlotNum);
int32_t jesd_timer_init(int32_t nTmrId, int32_t nScsId, int32_t nTddSlotNum); int32_t jesd_timer_init(int32_t nTmrId, int32_t nScsId, int32_t nTddSlotNum);
// 协议规定的接收提前量NR提前13usLTE不提前LTE模式下需在建小区之前调用该接口修改协议提前量
void jesd_set_protocol_rx_advance(uint32_t rxAdvance);
int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr); int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr);
int32_t jesd_timer_clear_cell(int32_t nTmrId, uint8_t scsId); int32_t jesd_timer_clear_cell(int32_t nTmrId, uint8_t scsId);

View File

@ -126,6 +126,7 @@ void cpri_timer_reconfig(phy_timer_config_ind_t *my_cpritmr)
{ {
pCpriDelay->cpriTxOffset = do_read_volatile(CSU_TX_ADVANCE_SAMPLE); pCpriDelay->cpriTxOffset = do_read_volatile(CSU_TX_ADVANCE_SAMPLE);
pCpriDelay->cpriRxOffset = do_read_volatile(CSU_RX_TD_SAMPLE); // ns pCpriDelay->cpriRxOffset = do_read_volatile(CSU_RX_TD_SAMPLE); // ns
pCpriDelay->cpriUlFrmDataOffset = do_read_volatile(CSU_UL_HEADER_DATA_OFFSET);
__ucps2_synch(0); __ucps2_synch(0);
} }
@ -141,7 +142,7 @@ void cpri_timer_reconfig(phy_timer_config_ind_t *my_cpritmr)
do_write(CPRI_TDD_ADVANCE_ADDR, pCpriDelay->cpriTddOffset); do_write(CPRI_TDD_ADVANCE_ADDR, pCpriDelay->cpriTddOffset);
do_write(CPRI_DELAY_ADDR, pCpriDelay->cpri10msRxOffset); do_write(CPRI_DELAY_ADDR, pCpriDelay->cpri10msRxOffset);
uint32_t addr = (uint32_t)&(phyPara[pMtimerPara->scsId].gpsOffset); uint32_t addr = (uint32_t)&(phyPara[my_cpritmr->scsId].gpsOffset);
uint16_t gpsOffset = do_read_volatile_short(addr); uint16_t gpsOffset = do_read_volatile_short(addr);
pCpriDelay->cpri10ms2PP1sTxOffset = pCpriDelay->cpri10msOffset + gpsOffset; // advance us pCpriDelay->cpri10ms2PP1sTxOffset = pCpriDelay->cpri10msOffset + gpsOffset; // advance us
@ -282,9 +283,7 @@ void cpri_timer_rcfg_act()
if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell
{ {
pMtimerSfn->txSfnNum = 0; pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum;
pMtimerSfn->rxSfnNum = 0; //1023;
//pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1;
} }
addr = (uint32_t)&(phyPara[nScsId].txSfnNum); addr = (uint32_t)&(phyPara[nScsId].txSfnNum);
do_write(addr, pMtimerSfn->txSfnNum); do_write(addr, pMtimerSfn->txSfnNum);

View File

@ -23,12 +23,12 @@ void isr_jesd_orx_csu()
if (JS_CSU_ALLPENDEVENT1 & BIT14) if (JS_CSU_ALLPENDEVENT1 & BIT14)
{ {
gJesdOrxCsuIntCnt++; gJesdOrxCsuIntCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+122), gJesdOrxCsuIntCnt); // 0x1E8 debug_write((DBG_DDR_IDX_DRV_BASE+58), gJesdOrxCsuIntCnt); // 0xE8
JS_CSU_TAGMASK2 &= (~BIT2); JS_CSU_TAGMASK2 &= (~BIT2);
JS_CSU_EVENTINTCLEAR = 46; JS_CSU_EVENTINTCLEAR = 46;
debug_write((DBG_DDR_IDX_DRV_BASE+50), GET_STC_CNT()); // 0xc8 debug_write((DBG_DDR_IDX_DRV_BASE+62), GET_STC_CNT()); // 0xF8
set_jesd_rf_state(JESD_ANT_ORX, GPIO_OFF); set_jesd_rf_state(JESD_ANT_ORX, GPIO_OFF);
set_jesd_rf_state(JESD_RF_ORX, GPIO_OFF); set_jesd_rf_state(JESD_RF_ORX, GPIO_OFF);
set_jesd_rf_state(JESD_TRANS_ORX, GPIO_OFF); set_jesd_rf_state(JESD_TRANS_ORX, GPIO_OFF);
@ -38,18 +38,8 @@ void isr_jesd_orx_csu()
} }
} }
int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode) int32_t jesd_para_init()
{ {
if ((0 == antNum) || (8 < antNum))
{
return -1;
}
if (7 < margin)
{
return -1;
}
volatile uint32_t *reg_addr = NULL; volatile uint32_t *reg_addr = NULL;
reg_addr = &JS_CSU_DMAADDRL0; reg_addr = &JS_CSU_DMAADDRL0;
@ -61,8 +51,7 @@ int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode)
memset(&gJesdTxListPara[0][0], 0, sizeof(stJesdListPara)*JESD_CH_NUM*JESD_LIST_NUM); memset(&gJesdTxListPara[0][0], 0, sizeof(stJesdListPara)*JESD_CH_NUM*JESD_LIST_NUM);
memset(&gJesdRxListPara[0][0], 0, sizeof(stJesdListPara)*JESD_CH_NUM*JESD_LIST_NUM); memset(&gJesdRxListPara[0][0], 0, sizeof(stJesdListPara)*JESD_CH_NUM*JESD_LIST_NUM);
memset(&gJesdCsuPara, 0, sizeof(stJesdCsuPara)); memset(&gJesdCsuPara, 0, sizeof(stJesdCsuPara));
gJesdCsuPara.antNum = antNum;
gJesdCsuPara.m = antNum*2;
gJesdCsuPara.n = JS_204B_CONVERTER_BITS; gJesdCsuPara.n = JS_204B_CONVERTER_BITS;
gJesdCsuPara.cs = JS_204B_CS_BITS; gJesdCsuPara.cs = JS_204B_CS_BITS;
gJesdCsuPara.cf = JS_204B_CF_VAL; gJesdCsuPara.cf = JS_204B_CF_VAL;
@ -78,6 +67,23 @@ int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode)
{ {
gJesdCsuPara.nTotal = ((gJesdCsuPara.nTotal>>2)+1) << 2; gJesdCsuPara.nTotal = ((gJesdCsuPara.nTotal>>2)+1) << 2;
} }
return 0;
}
int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode)
{
if ((0 == antNum) || (8 < antNum))
{
return -1;
}
if (7 < margin)
{
return -1;
}
gJesdCsuPara.antNum = antNum;
gJesdCsuPara.m = antNum*2;
gJesdCsuPara.seq = antNum; gJesdCsuPara.seq = antNum;
gJesdCsuPara.margin = margin; gJesdCsuPara.margin = margin;
gJesdCsuPara.tfMode = tfMode; gJesdCsuPara.tfMode = tfMode;
@ -93,6 +99,7 @@ int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode)
gJesdCsuPara.m = gJesdCsuPara.m >> 1; gJesdCsuPara.m = gJesdCsuPara.m >> 1;
gJesdCsuPara.seq = gJesdCsuPara.seq >> 1; gJesdCsuPara.seq = gJesdCsuPara.seq >> 1;
} }
uint32_t val = (((gJesdCsuPara.m>>1)-1)<<26)+((gJesdCsuPara.seq-1)<<24)+(((gJesdCsuPara.nTotal*gJesdCsuPara.m)/gJesdCsuPara.seq)<<16)+((gJesdCsuPara.n-8)<<8)+(margin<<4)+gJesdCsuPara.cs; uint32_t val = (((gJesdCsuPara.m>>1)-1)<<26)+((gJesdCsuPara.seq-1)<<24)+(((gJesdCsuPara.nTotal*gJesdCsuPara.m)/gJesdCsuPara.seq)<<16)+((gJesdCsuPara.n-8)<<8)+(margin<<4)+gJesdCsuPara.cs;
do_write((&JS_CSU_JESDTX0SET), val); do_write((&JS_CSU_JESDTX0SET), val);
//debug_write((DBG_DDR_IDX_DRV_BASE+216), val); // 0x360 //debug_write((DBG_DDR_IDX_DRV_BASE+216), val); // 0x360
@ -117,15 +124,11 @@ int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode)
return 0; return 0;
} }
int32_t jesd_orx_csu_init(void) int32_t jesd_orx_csu_init(uint8_t margin)
{ {
if (0 == gJesdCsuPara.antNum) gJesdCsuPara.orxMargin = margin;
{
return -1;
}
//uint32_t val = (((gJesdCsuPara.m>>1)-1)<<26)+((gJesdCsuPara.seq-1)<<24)+(((gJesdCsuPara.nTotal*gJesdCsuPara.m)/gJesdCsuPara.seq)<<16)+((gJesdCsuPara.n-8)<<8)+(gJesdCsuPara.margin<<4)+gJesdCsuPara.cs; //uint32_t val = (((gJesdCsuPara.m>>1)-1)<<26)+((gJesdCsuPara.seq-1)<<24)+(((gJesdCsuPara.nTotal*gJesdCsuPara.m)/gJesdCsuPara.seq)<<16)+((gJesdCsuPara.n-8)<<8)+(gJesdCsuPara.margin<<4)+gJesdCsuPara.cs;
uint32_t val = (((JS_204B_ORX_M>>1)-1)<<26)+((gJesdCsuPara.nTotal*JS_204B_ORX_M)<<16)+((gJesdCsuPara.n-8)<<8)+(gJesdCsuPara.margin<<4)+gJesdCsuPara.cs; uint32_t val = (((JS_204B_ORX_M>>1)-1)<<26)+((gJesdCsuPara.nTotal*JS_204B_ORX_M)<<16)+((gJesdCsuPara.n-8)<<8)+(gJesdCsuPara.orxMargin<<4)+gJesdCsuPara.cs;
do_write((&JS_CSU_JESDRX1SET), val); do_write((&JS_CSU_JESDRX1SET), val);
do_write((&JS_CSU_ALMOSTFULLSENDTHRED), 0x80048010); // [30:16]sendthred,<4, stop write; [14:0]almostfull, >=0x400,start write do_write((&JS_CSU_ALMOSTFULLSENDTHRED), 0x80048010); // [30:16]sendthred,<4, stop write; [14:0]almostfull, >=0x400,start write
do_write((&JS_CSU_EM_BS_SMSEL_PREDATANUM), ((0x3<<14) | (0x5<<5) | 0x8)); do_write((&JS_CSU_EM_BS_SMSEL_PREDATANUM), ((0x3<<14) | (0x5<<5) | 0x8));
@ -234,7 +237,7 @@ int32_t jesd_csu_tx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara*
int32_t jesd_csu_rx_list_init(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId, uint8_t orxFlag) int32_t jesd_csu_rx_list_init(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId, uint8_t orxFlag)
{ {
uint8_t mrg = gJesdCsuPara.margin; uint8_t mrg = (1 == orxFlag) ? (gJesdCsuPara.orxMargin) : (gJesdCsuPara.margin);
uint8_t seq = (1 == orxFlag) ? (1) : (gJesdCsuPara.seq); uint8_t seq = (1 == orxFlag) ? (1) : (gJesdCsuPara.seq);
// 设置链表节点cmd // 设置链表节点cmd

View File

@ -653,7 +653,7 @@ int32_t jesd_csu_init_nr_2500us_double_slot0()
int32_t jesd_sniffer_orx_csu_init() int32_t jesd_sniffer_orx_csu_init()
{ {
jesd_orx_csu_init(); jesd_orx_csu_init(5);
stJesdCsuNodePara orxCsuNode[1]; stJesdCsuNodePara orxCsuNode[1];
//orx的链表地址 //orx的链表地址
uint32_t orxListAddr = JESD_RX_LIST2_ADDR; // 0x8A00C000 uint32_t orxListAddr = JESD_RX_LIST2_ADDR; // 0x8A00C000

View File

@ -37,9 +37,10 @@ int32_t jesd_orx_mtimer_init(int32_t nTmrId, int32_t nScsId)
int32_t jesd_orx_timer_init(void) int32_t jesd_orx_timer_init(void)
{ {
stop_jesd_orx_timer();
jesd_orx_1pps_src_init(MTIMER_PP1S_SRC_TOD); jesd_orx_1pps_src_init(MTIMER_PP1S_SRC_TOD);
//mtimer_clear_all_event(MTIMER_JESD_RX1_ID); //mtimer_clear_all_event(MTIMER_JESD_RX1_ID);
//set_jesd_orx_tmr_period(); set_jesd_orx_tmr_period();
set_jesd_orx_1pps_scratch(); set_jesd_orx_1pps_scratch();
//set_jesd_orx_tmr_point(25000); // 25ms //set_jesd_orx_tmr_point(25000); // 25ms
@ -118,7 +119,7 @@ int32_t set_jesd_orx_timer_int(void)
#endif #endif
int32_t set_jesd_orx_tmr_point(int32_t usPoint) int32_t set_jesd_orx_tmr_point(int32_t usPoint)
{ {
if ((SNIFFER_TMR_PERIOD) <= usPoint) if ((SNIFFER_TMR_PERIOD) < usPoint)
{ {
return -1; return -1;
} }
@ -158,7 +159,7 @@ int32_t jesd_orx_pin_ctrl(void)
return 0; return 0;
} }
int32_t phy_sniffer_start() int32_t phy_sniffer_start(uint32_t nOffsetUs)
{ {
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt(); EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
JesdOrxPara_t* orx_para_ptr = pEcsDmLocalMgt->jesd_orx_para_ptr; JesdOrxPara_t* orx_para_ptr = pEcsDmLocalMgt->jesd_orx_para_ptr;
@ -172,9 +173,16 @@ int32_t phy_sniffer_start()
set_jesd_rf_state(JESD_ANT_ORX, GPIO_ON); set_jesd_rf_state(JESD_ANT_ORX, GPIO_ON);
set_jesd_rf_state(JESD_RF_ORX, GPIO_ON); set_jesd_rf_state(JESD_RF_ORX, GPIO_ON);
set_jesd_rf_state(JESD_TRANS_ORX, GPIO_ON); set_jesd_rf_state(JESD_TRANS_ORX, GPIO_ON);
orx_para_ptr->orx_start_offset_us = nOffsetUs;
if (0 != nOffsetUs)
{
set_jesd_orx_tmr_point(nOffsetUs);
}
orx_para_ptr->orx_start_flag = 1; orx_para_ptr->orx_start_flag = 1;
orx_para_ptr->orx_calldrv_cnt++; orx_para_ptr->orx_calldrv_cnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+64+8), orx_para_ptr->orx_calldrv_cnt); // 0x120 debug_write((DBG_DDR_IDX_DRV_BASE+56), orx_para_ptr->orx_calldrv_cnt); // 0xE0
return 0; return 0;
} }

View File

@ -41,6 +41,7 @@ extern stMtimerPhyPara gMtimerSfnNum[SCS_MAX_NUM];
extern stMtimerSfnCal gMtimerSfnCalPara[SCS_MAX_NUM]; extern stMtimerSfnCal gMtimerSfnCalPara[SCS_MAX_NUM];
int32_t gCsuTxAdvanceNs = JESD_TX_ADVANCE_NS; int32_t gCsuTxAdvanceNs = JESD_TX_ADVANCE_NS;
int32_t gCsuProtocolRx = JESD_RX_ADVANCE_NS;
int32_t gCsuRxAdvanceNs = JESD_RX_ADVANCE_NS - JESD_RRU_TD; int32_t gCsuRxAdvanceNs = JESD_RX_ADVANCE_NS - JESD_RRU_TD;
extern void rfm1_fapi_callback(); extern void rfm1_fapi_callback();
@ -74,6 +75,7 @@ void jesd_init(uint8_t option)
debug_write((DBG_DDR_IDX_DRV_BASE+2+(apeId<<2)), flag); // 0xB8 debug_write((DBG_DDR_IDX_DRV_BASE+2+(apeId<<2)), flag); // 0xB8
#endif #endif
jesd_para_init();
jesd_mtimer_init(MTIMER_JESD_RX0_ID, NR_SCS_30K, 10); jesd_mtimer_init(MTIMER_JESD_RX0_ID, NR_SCS_30K, 10);
jesd_mtimer_init(MTIMER_JESD_RX1_ID, NR_SCS_30K, 10); jesd_mtimer_init(MTIMER_JESD_RX1_ID, NR_SCS_30K, 10);
#ifdef PALLADIUM_TEST #ifdef PALLADIUM_TEST
@ -98,6 +100,12 @@ void jesd_init(uint8_t option)
#endif #endif
} }
// 协议规定的接收提前量NR提前13usLTE不提前LTE模式下需在建小区之前调用该接口修改协议提前量
void jesd_set_protocol_rx_advance(uint32_t rxAdvance)
{
gCsuProtocolRx = rxAdvance;
}
void jesd_delay_init() void jesd_delay_init()
{ {
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt(); EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
@ -260,10 +268,10 @@ int32_t jesd_timer_get_csu_point(int32_t nTmrId, phy_timer_config_ind_t *my_jesd
get_jesd_timer_point_para(nTmrId, pMtimerPara->rxCsuOff[i].timerPoint, &pMtimerPara->rxCsuOff[i].pointL, get_jesd_timer_point_para(nTmrId, pMtimerPara->rxCsuOff[i].timerPoint, &pMtimerPara->rxCsuOff[i].pointL,
&pMtimerPara->rxCsuOff[i].pointM, &pMtimerPara->rxCsuOff[i].pointH); &pMtimerPara->rxCsuOff[i].pointM, &pMtimerPara->rxCsuOff[i].pointH);
debug_write((DBG_DDR_IDX_DRV_BASE+48+(i<<2)), pMtimerTxPara->txCsuOn[i].timerPoint); // 0xC0 debug_write((DBG_DDR_IDX_DRV_BASE+992+(i<<2)), pMtimerTxPara->txCsuOn[i].timerPoint); // 0xF80
debug_write((DBG_DDR_IDX_DRV_BASE+49+(i<<2)), pMtimerTxPara->txCsuOff[i].timerPoint); // 0xC4 debug_write((DBG_DDR_IDX_DRV_BASE+993+(i<<2)), pMtimerTxPara->txCsuOff[i].timerPoint); // 0xF84
debug_write((DBG_DDR_IDX_DRV_BASE+50+(i<<2)), pMtimerPara->rxCsuOn[i].timerPoint); // 0xC8 debug_write((DBG_DDR_IDX_DRV_BASE+994+(i<<2)), pMtimerPara->rxCsuOn[i].timerPoint); // 0xF88
debug_write((DBG_DDR_IDX_DRV_BASE+51+(i<<2)), pMtimerPara->rxCsuOff[i].timerPoint); // 0xCC debug_write((DBG_DDR_IDX_DRV_BASE+995+(i<<2)), pMtimerPara->rxCsuOff[i].timerPoint); // 0xF8C
} }
} }
@ -321,10 +329,10 @@ int32_t jesd_timer_get_rf_point(int32_t nTmrId, phy_timer_config_ind_t *my_jesdt
get_jesd_timer_point_para(nTmrId, pMtimerPara->rxRfOff[i].timerPoint, &pMtimerPara->rxRfOff[i].pointL, get_jesd_timer_point_para(nTmrId, pMtimerPara->rxRfOff[i].timerPoint, &pMtimerPara->rxRfOff[i].pointL,
&pMtimerPara->rxRfOff[i].pointM, &pMtimerPara->rxRfOff[i].pointH); &pMtimerPara->rxRfOff[i].pointM, &pMtimerPara->rxRfOff[i].pointH);
debug_write((DBG_DDR_IDX_DRV_BASE+56+(i<<2)), pMtimerPara->txRfOn[i].timerPoint); // 0xE0 debug_write((DBG_DDR_IDX_DRV_BASE+1000+(i<<2)), pMtimerPara->txRfOn[i].timerPoint); // 0xFA0
debug_write((DBG_DDR_IDX_DRV_BASE+57+(i<<2)), pMtimerPara->txRfOff[i].timerPoint);// 0xE4 debug_write((DBG_DDR_IDX_DRV_BASE+1001+(i<<2)), pMtimerPara->txRfOff[i].timerPoint);// 0xFA4
debug_write((DBG_DDR_IDX_DRV_BASE+58+(i<<2)), pMtimerPara->rxRfOn[i].timerPoint); // 0xE8 debug_write((DBG_DDR_IDX_DRV_BASE+1002+(i<<2)), pMtimerPara->rxRfOn[i].timerPoint); // 0xFA8
debug_write((DBG_DDR_IDX_DRV_BASE+59+(i<<2)), pMtimerPara->rxRfOff[i].timerPoint);// 0xEC debug_write((DBG_DDR_IDX_DRV_BASE+1003+(i<<2)), pMtimerPara->rxRfOff[i].timerPoint);// 0xFAC
} }
return 0; return 0;
@ -348,13 +356,13 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr)
stMtimerPhyPara* pMtimerSfn = &gMtimerSfnNum[nTmrId]; stMtimerPhyPara* pMtimerSfn = &gMtimerSfnNum[nTmrId];
JesdDelay_t* pJesdDelay = pEcsDmLocalMgt->jesd_delay_ptr; JesdDelay_t* pJesdDelay = pEcsDmLocalMgt->jesd_delay_ptr;
uint32_t addr = (uint32_t)&(phyPara[pMtimerPara->scsId].gpsOffset); uint32_t addr = (uint32_t)&(phyPara[my_jesdtmr->scsId].gpsOffset);
uint16_t gpsOffset = do_read_volatile_short(addr); uint16_t gpsOffset = do_read_volatile_short(addr);
pJesdDelay->gps_offset = gpsOffset; pJesdDelay->gps_offset = gpsOffset;
pJesdDelay->jesd_10ms2pp1s_txoffset = pJesdDelay->tx_offset + gpsOffset; // advance us pJesdDelay->jesd_10ms2pp1s_txoffset = pJesdDelay->tx_offset + gpsOffset; // advance us
pJesdDelay->jesd_10ms2pp1s_rxoffset = pJesdDelay->rx_offset + gpsOffset; // gpsOffset - pJesdDelay->rxOffset; // delay us pJesdDelay->jesd_10ms2pp1s_rxoffset = pJesdDelay->rx_offset + gpsOffset; // gpsOffset - pJesdDelay->rxOffset; // delay us
pJesdDelay->jesd_tdd2pp1s_offset = gpsOffset + pJesdDelay->tdd_offset; // advance us as positive number pJesdDelay->jesd_tdd2pp1s_offset = gpsOffset + pJesdDelay->tdd_offset; // advance us as positive number
do_write(CPRI_TX_ADVANCE_PP1S_ADDR, pJesdDelay->jesd_10ms2pp1s_txoffset); do_write(CPRI_TX_ADVANCE_PP1S_ADDR, pJesdDelay->jesd_10ms2pp1s_txoffset);
do_write(CPRI_RX_ADVANCE_PP1S_ADDR, pJesdDelay->jesd_10ms2pp1s_rxoffset); do_write(CPRI_RX_ADVANCE_PP1S_ADDR, pJesdDelay->jesd_10ms2pp1s_rxoffset);
@ -442,7 +450,7 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr)
if (JESD_CSU_CTRL == gJesdIOMode) if (JESD_CSU_CTRL == gJesdIOMode)
{ {
gCsuRxAdvanceNs = JESD_RX_ADVANCE_NS - do_read_volatile(CSU_RX_TD_SAMPLE); gCsuRxAdvanceNs = gCsuProtocolRx - do_read_volatile(CSU_RX_TD_SAMPLE);
gCsuTxAdvanceNs = do_read_volatile(CSU_TX_ADVANCE_SAMPLE); gCsuTxAdvanceNs = do_read_volatile(CSU_TX_ADVANCE_SAMPLE);
if (FDD_MODE == gJesdTFMode) if (FDD_MODE == gJesdTFMode)
@ -522,8 +530,7 @@ void jesd_timer_rcfg_act(int32_t nTmrId)
if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell
{ {
pMtimerSfn->txSfnNum = 0; pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum;
pMtimerSfn->rxSfnNum = 0; //1023;
//pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1; //pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1;
} }
addr = (uint32_t)&(phyPara[nScsId].txSfnNum); addr = (uint32_t)&(phyPara[nScsId].txSfnNum);
@ -1196,19 +1203,14 @@ void jesd_10ms_callback(uint8_t nTmrId)
#ifdef ENABLE_SFNCAL #ifdef ENABLE_SFNCAL
if (MTIMER_JESD_RX0_ID == nTmrId) if (MTIMER_JESD_RX0_ID == nTmrId)
{ {
debug_write((DBG_DDR_IDX_DRV_BASE+57), GET_STC_CNT());
mtimer_1pps_func(nTmrId); mtimer_1pps_func(nTmrId);
} }
#endif #endif
pMtimerInt->pp1sIntCnt++; pMtimerInt->pp1sIntCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+64+1+(nTmrId<<2)), pMtimerInt->pp1sIntCnt); // 0x104, 0x114 debug_write((DBG_DDR_IDX_DRV_BASE+64+1+(nTmrId<<2)), pMtimerInt->pp1sIntCnt); // 0x104, 0x114
/***********************************************************************************/
//if ((7 == (pMtimerInt->pp1sIntCnt&0x7)) && (MTIMER_JESD_RX0_ID == nTmrId) && (0 < pMtimerInt->tddOffsetIntCnt))
{
//phy_sniffer_start();
}
/***********************************************************************************/
#if 0 //def PALLADIUM_TEST #if 0 //def PALLADIUM_TEST
uint32_t val = 0; uint32_t val = 0;
for (int32_t core = 0; core < 12; core++) for (int32_t core = 0; core < 12; core++)
@ -1282,20 +1284,18 @@ void jesd_10ms_callback(uint8_t nTmrId)
do_write(tFlagAddr, (1<<MTMR_TDD_OFFSET_10000)); // clear int flag do_write(tFlagAddr, (1<<MTMR_TDD_OFFSET_10000)); // clear int flag
pMtimerInt->insOffsetIntCnt++; pMtimerInt->insOffsetIntCnt++;
#ifdef PALLADIUM_TEST #ifdef PALLADIUM_TEST
debug_write((DBG_DDR_IDX_DRV_BASE+64+9), pMtimerInt->insOffsetIntCnt); // 0x124 debug_write((DBG_DDR_IDX_DRV_BASE+73), pMtimerInt->insOffsetIntCnt); // 0x124
#endif #endif
//set_jesd_rf_state(JESD_ANT_ORX, GPIO_OFF); jesd_csu_orx_start(0);
//set_jesd_rf_state(JESD_RF_ORX, GPIO_OFF);
//set_jesd_rf_state(JESD_TRANS_ORX, GPIO_OFF);
debug_write((DBG_DDR_IDX_DRV_BASE+58), GET_STC_CNT()); // 0xc4 debug_write((DBG_DDR_IDX_DRV_BASE+61), GET_STC_CNT()); // 0xF4
uint64_t rt_val = get_mtimer_rt_scr_value(MTIMER_JESD_RX1_ID); uint64_t rt_val = get_mtimer_rt_scr_value(MTIMER_JESD_RX1_ID);
debug_write((DBG_DDR_IDX_DRV_BASE+56), rt_val&0xFFFFFFFF); // 0xc0 debug_write((DBG_DDR_IDX_DRV_BASE+52), rt_val&0xFFFFFFFF); // 0xD0
debug_write((DBG_DDR_IDX_DRV_BASE+57), rt_val>>32); // 0xc4 debug_write((DBG_DDR_IDX_DRV_BASE+53), rt_val>>32); // 0xD4
stop_jesd_orx_timer(); stop_jesd_orx_timer();
// phy callback // phy callback
phy_sniffer_data_proc(); //phy_sniffer_data_proc();
} }
cEventFlag = do_read_volatile(cFlagAddr); cEventFlag = do_read_volatile(cFlagAddr);
tEventFlag = do_read_volatile(tFlagAddr); tEventFlag = do_read_volatile(tFlagAddr);

View File

@ -207,11 +207,18 @@ int32_t mtimer_orx_adjust(void)
if (1 == orx_para_ptr->orx_start_flag) if (1 == orx_para_ptr->orx_start_flag)
{ {
//start_jesd_orx_timer(); debug_write((DBG_DDR_IDX_DRV_BASE+60), GET_STC_CNT()); // 0xF0
jesd_csu_orx_start(0); if (0 == orx_para_ptr->orx_start_offset_us)
debug_write((DBG_DDR_IDX_DRV_BASE+49), GET_STC_CNT()); // 0xc4 {
jesd_csu_orx_start(0);
}
else
{
start_jesd_orx_timer();
}
orx_para_ptr->orx_start_flag = 0; orx_para_ptr->orx_start_flag = 0;
} }
#if 0
if (0 < orx_para_ptr->orx_calldrv_cnt) if (0 < orx_para_ptr->orx_calldrv_cnt)
{ {
orx_para_ptr->orx_adjust_flag = do_read_volatile(ORX_ADJUST_FLAG_ADDR); orx_para_ptr->orx_adjust_flag = do_read_volatile(ORX_ADJUST_FLAG_ADDR);
@ -231,7 +238,7 @@ int32_t mtimer_orx_adjust(void)
do_write(ORX_ADJUST_FLAG_ADDR, 0); do_write(ORX_ADJUST_FLAG_ADDR, 0);
} }
} }
#endif
return 0; return 0;
} }

View File

@ -41,7 +41,19 @@ int32_t mtimer_para_init(uint8_t nTmrId, int32_t nScsId, int32_t nTddSlotNum)
} }
else if (PROTOCOL_ECPRI == nBsType) else if (PROTOCOL_ECPRI == nBsType)
{ {
coreClk = 156240000; // 161132000; // 402832000; uint32_t rateOpt = get_protocol_opt();
if (ECPRI_OPTION_10G == rateOpt)
{
coreClk = 156240000; // 161132000; // 402832000;
}
else if (ECPRI_OPTION_25G == rateOpt)
{
coreClk = 402832000;
}
else
{
return -1;
}
} }
else else
{ {

View File

@ -74,13 +74,11 @@ void ecs_rfm1_drv_init(void)
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4 debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4
#endif #endif
#if 1
gtimer2_init(0); gtimer2_init(0);
rfm1_gtimer2_1_set_int(); rfm1_gtimer2_1_set_int();
#ifdef PALLADIUM_TEST #ifdef PALLADIUM_TEST
flag++; flag++;
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4 debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4
#endif
#endif #endif
ecs_hw_que_init(apeId); ecs_hw_que_init(apeId);

View File

@ -314,11 +314,11 @@ void phy_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
} }
else if (ORX_MSG_TYPE_SIMULATION == msg_type) else if (ORX_MSG_TYPE_SIMULATION == msg_type)
{ {
// if (1 > orx_para_ptr->orx_calldrv_cnt) //if (1 > orx_para_ptr->orx_calldrv_cnt)
// { {
phy_sniffer_start(); phy_sniffer_start(10000);
debug_write(DBG_DDR_COMMON_IDX(get_core_id(),2), ORX_MSG_TYPE_SIMULATION); debug_write(DBG_DDR_COMMON_IDX(get_core_id(),2), ORX_MSG_TYPE_SIMULATION);
// } }
} }
return; return;

View File

@ -1 +1 @@
NR15K122.88M采样率40M带宽发256QAM宽带信号 NR15K61.44M采样率40M带宽发256QAM宽带信号