From 26418275e838d05c0f617b672e3ff9140a007a56 Mon Sep 17 00:00:00 2001 From: Wang Tsu-Han Date: Fri, 12 Oct 2018 14:47:04 +0200 Subject: [PATCH 1/8] adding file log in emulation mode --- targets/RT/USER/nr-ru.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index b223261db2..2a0bcfb2be 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -852,13 +852,24 @@ void tx_rf(RU_t *ru) { VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-ru->openair0_cfg.tx_sample_advance)&0xffffffff ); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 ); // prepare tx buffer pointers - - txs = ru->rfdevice.trx_write_func(&ru->rfdevice, + if(emulate_rf) + { + if(proc->frame_tx < 2) + { + LOG_M("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i],fp->samples_per_subframe_wCP, 1, 1); + LOG_M("txdata_frame.m","txdata_frame",&ru->common.txdata[i],fp->samples_per_subframe, 1, 1); + } + else oai_exit = 1; + } + else + { + txs = ru->rfdevice.trx_write_func(&ru->rfdevice, proc->timestamp_tx+ru->ts_offset-ru->openair0_cfg.tx_sample_advance-sf_extension, txp, siglen+sf_extension, ru->nb_tx, flags); + } LOG_D(PHY,"[TXPATH] RU %d tx_rf, writing to TS %llu, frame %d, unwrapped_frame %d, subframe %d\n",ru->idx, (long long unsigned int)proc->timestamp_tx,proc->frame_tx,proc->frame_tx_unwrap,proc->subframe_tx); @@ -1521,11 +1532,8 @@ static void* ru_thread( void* param ) { // do OFDM if needed if ((ru->fh_north_asynch_in == NULL) && (ru->feptx_ofdm)) ru->feptx_ofdm(ru); - if (!emulate_rf) - { - // do outgoing fronthaul (south) if needed - if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru); - } + // do outgoing fronthaul (south) if needed + if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru); if (ru->fh_north_out) ru->fh_north_out(ru); } From 006af69782d9a87b7573c68d4a7fa8fb4ebb2129 Mon Sep 17 00:00:00 2001 From: "Wolfgang A. Mozart" Date: Tue, 16 Oct 2018 12:26:39 +0200 Subject: [PATCH 2/8] write out for txdataF_BF and txdata and minor fix for uhd load --- targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp | 2 +- targets/RT/USER/nr-ru.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp index 2ae124f29d..abeaf4e4c8 100644 --- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp +++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp @@ -1039,7 +1039,7 @@ extern "C" { if(device_adds.size() == 0) { double usrp_master_clock = 184.32e6; - std::string args = "type=x300, addr=192.168.30.2"; + std::string args = "type=x300"; // workaround for an api problem, master clock has to be set with the constructor not via set_master_clock_rate args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock); diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index 2a0bcfb2be..d2deba23c9 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -854,12 +854,16 @@ void tx_rf(RU_t *ru) { // prepare tx buffer pointers if(emulate_rf) { - if(proc->frame_tx < 2) + for (i=0; inb_tx; i++) { - LOG_M("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i],fp->samples_per_subframe_wCP, 1, 1); - LOG_M("txdata_frame.m","txdata_frame",&ru->common.txdata[i],fp->samples_per_subframe, 1, 1); + if(proc->frame_tx > 0 && proc->frame_tx < 2) + { + LOG_M("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i][0],fp->samples_per_subframe_wCP, 1, 1); + LOG_M("txdata_frame.m","txdata_frame",&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_subframe)-sf_extension],fp->samples_per_subframe, 1, 1); + } + else if (proc->frame_tx >= 2) oai_exit = 1; } - else oai_exit = 1; + txs = siglen+sf_extension; } else { From 10e432174d18cf0a677f966174cfaf3d16759409 Mon Sep 17 00:00:00 2001 From: Wang Tsu-Han Date: Fri, 19 Oct 2018 18:51:15 +0200 Subject: [PATCH 3/8] modifing emulate-rf write function the same as lte-ru.c --- targets/RT/USER/nr-ru.c | 49 +++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index d2deba23c9..7214379388 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -852,28 +852,12 @@ void tx_rf(RU_t *ru) { VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-ru->openair0_cfg.tx_sample_advance)&0xffffffff ); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 ); // prepare tx buffer pointers - if(emulate_rf) - { - for (i=0; inb_tx; i++) - { - if(proc->frame_tx > 0 && proc->frame_tx < 2) - { - LOG_M("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i][0],fp->samples_per_subframe_wCP, 1, 1); - LOG_M("txdata_frame.m","txdata_frame",&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_subframe)-sf_extension],fp->samples_per_subframe, 1, 1); - } - else if (proc->frame_tx >= 2) oai_exit = 1; - } - txs = siglen+sf_extension; - } - else - { - txs = ru->rfdevice.trx_write_func(&ru->rfdevice, + txs = ru->rfdevice.trx_write_func(&ru->rfdevice, proc->timestamp_tx+ru->ts_offset-ru->openair0_cfg.tx_sample_advance-sf_extension, txp, siglen+sf_extension, ru->nb_tx, flags); - } LOG_D(PHY,"[TXPATH] RU %d tx_rf, writing to TS %llu, frame %d, unwrapped_frame %d, subframe %d\n",ru->idx, (long long unsigned int)proc->timestamp_tx,proc->frame_tx,proc->frame_tx_unwrap,proc->subframe_tx); @@ -1403,6 +1387,9 @@ static void* ru_thread( void* param ) { int ret; int subframe =9; int frame =1023; + char filename[40]; + int print_frame = 1; + int i = 0; // set default return value ru_thread_status = 0; @@ -1536,10 +1523,30 @@ static void* ru_thread( void* param ) { // do OFDM if needed if ((ru->fh_north_asynch_in == NULL) && (ru->feptx_ofdm)) ru->feptx_ofdm(ru); - // do outgoing fronthaul (south) if needed - if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru); - - if (ru->fh_north_out) ru->fh_north_out(ru); + if(!emulate_rf) + { + // do outgoing fronthaul (south) if needed + if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru); + + if (ru->fh_north_out) ru->fh_north_out(ru); + } + else + { + if(proc->frame_tx == print_frame) + { + for (i=0; inb_tx; i++) + { + sprintf(filename,"tx%ddataF_frame%d_sf%d.m", i, print_frame, proc->subframe_tx); + LOG_M(filename,"txdataF_frame",&ru->common.txdataF_BF[i][0],fp->samples_per_subframe_wCP, 1, 1); + if(proc->subframe_tx == 9) + { + sprintf(filename,"tx%ddataF_frame%d.m", i, print_frame); + LOG_M(filename,"txdata_frame",&ru->common.txdata[i][0],fp->samples_per_frame, 1, 1); + } + } + } + //else if (proc->frame_tx > print_frame) oai_exit = 1; + } } From a7518f055706d7bf4f90ec6cb9ea3d0dfe26babd Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Fri, 19 Oct 2018 20:53:50 +0200 Subject: [PATCH 4/8] adding write to file to lte-ru.c --- targets/RT/USER/lte-ru.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 9d5b69adf5..77925940cc 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -1525,6 +1525,7 @@ volatile int16_t phy_tx_end; static void* ru_thread_tx( void* param ) { RU_t *ru = (RU_t*)param; RU_proc_t *proc = &ru->proc; + LTE_DL_FRAME_PARMS *fp = &ru->frame_parms; cpu_set_t cpuset; CPU_ZERO(&cpuset); @@ -1560,7 +1561,23 @@ static void* ru_thread_tx( void* param ) { if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru); if (ru->fh_north_out) ru->fh_north_out(ru); + } + else { + { + for (int i=0; inb_tx; i++) + { + if(proc->frame_tx == 2) { + sprintf(filename,"txdataF%d_frame%d_sf%d",i,proc->frame_tx,proc->subframe_tx); + LOG_M(filename,"txdata_frame",ru->common.txdataF_BF[i],fp->samples_per_tti_wCP, 1, 1); + } + if(proc->frame_tx == 2 && proc->subframe_tx==0){ + sprintf(filename,"txdata%d_frame%d",i,proc->frame_tx); + LOG_M(filename,"txdata_frame",ru->common.txdata[i],fp->samples_per_tti*10, 1, 1); + } } + } + } + release_thread(&proc->mutex_eNBs,&proc->instance_cnt_eNBs,"ru_thread_tx"); pthread_mutex_lock( &proc->mutex_eNBs ); From d8a921311f20fbfc0282805ae138659a6d94f110 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 22 Oct 2018 00:55:28 -0700 Subject: [PATCH 5/8] fix to previous commit --- targets/RT/USER/lte-ru.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 77925940cc..607c3615dc 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -1528,7 +1528,7 @@ static void* ru_thread_tx( void* param ) { LTE_DL_FRAME_PARMS *fp = &ru->frame_parms; cpu_set_t cpuset; CPU_ZERO(&cpuset); - + char filename[256]; thread_top_init("ru_thread_tx",1,400000,500000,500000); @@ -1563,17 +1563,14 @@ static void* ru_thread_tx( void* param ) { if (ru->fh_north_out) ru->fh_north_out(ru); } else { - { - for (int i=0; inb_tx; i++) - { - if(proc->frame_tx == 2) { - sprintf(filename,"txdataF%d_frame%d_sf%d",i,proc->frame_tx,proc->subframe_tx); - LOG_M(filename,"txdata_frame",ru->common.txdataF_BF[i],fp->samples_per_tti_wCP, 1, 1); - } - if(proc->frame_tx == 2 && proc->subframe_tx==0){ - sprintf(filename,"txdata%d_frame%d",i,proc->frame_tx); - LOG_M(filename,"txdata_frame",ru->common.txdata[i],fp->samples_per_tti*10, 1, 1); - } + for (int i=0; inb_tx; i++) { + if(proc->frame_tx == 2) { + sprintf(filename,"txdataF%d_frame%d_sf%d.m",i,proc->frame_tx,proc->subframe_tx); + LOG_M(filename,"txdata_frame",ru->common.txdataF_BF[i],fp->symbols_per_tti*fp->ofdm_symbol_size, 1, 1); + } + if(proc->frame_tx == 2 && proc->subframe_tx==0){ + sprintf(filename,"txdata%d_frame%d.m",i,proc->frame_tx); + LOG_M(filename,"txdata_frame",ru->common.txdata[i],fp->samples_per_tti*10, 1, 1); } } } From d3ed2382da7a018bc7cf1e38b15cf3d2d842da68 Mon Sep 17 00:00:00 2001 From: Wang Tsu-Han Date: Mon, 22 Oct 2018 12:37:06 +0200 Subject: [PATCH 6/8] chaning the print out funtion to frame 2 --- targets/RT/USER/nr-ru.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index 7214379388..68b5e8614e 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -1388,7 +1388,7 @@ static void* ru_thread( void* param ) { int subframe =9; int frame =1023; char filename[40]; - int print_frame = 1; + int print_frame = 2; int i = 0; // set default return value @@ -1540,7 +1540,7 @@ static void* ru_thread( void* param ) { LOG_M(filename,"txdataF_frame",&ru->common.txdataF_BF[i][0],fp->samples_per_subframe_wCP, 1, 1); if(proc->subframe_tx == 9) { - sprintf(filename,"tx%ddataF_frame%d.m", i, print_frame); + sprintf(filename,"tx%ddata_frame%d.m", i, print_frame); LOG_M(filename,"txdata_frame",&ru->common.txdata[i][0],fp->samples_per_frame, 1, 1); } } From f32ab81934d7a1d02b5ae35cfa54ed985a3dea3c Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 22 Oct 2018 07:44:41 -0700 Subject: [PATCH 7/8] more fixes --- targets/RT/USER/lte-ru.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 607c3615dc..65b160bae4 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -1566,7 +1566,7 @@ static void* ru_thread_tx( void* param ) { for (int i=0; inb_tx; i++) { if(proc->frame_tx == 2) { sprintf(filename,"txdataF%d_frame%d_sf%d.m",i,proc->frame_tx,proc->subframe_tx); - LOG_M(filename,"txdata_frame",ru->common.txdataF_BF[i],fp->symbols_per_tti*fp->ofdm_symbol_size, 1, 1); + LOG_M(filename,"txdataF_frame",ru->common.txdataF_BF[i],fp->symbols_per_tti*fp->ofdm_symbol_size, 1, 1); } if(proc->frame_tx == 2 && proc->subframe_tx==0){ sprintf(filename,"txdata%d_frame%d.m",i,proc->frame_tx); @@ -1602,7 +1602,7 @@ static void* ru_thread( void* param ) { int frame =1023; cpu_set_t cpuset; CPU_ZERO(&cpuset); - + char filename[256]; // set default return value ru_thread_status = 0; @@ -1808,6 +1808,19 @@ static void* ru_thread( void* param ) { if (ru->fh_north_out) ru->fh_north_out(ru); } + else { + for (int i=0; inb_tx; i++) { + if(proc->frame_tx == 2) { + sprintf(filename,"txdataF%d_frame%d_sf%d.m",i,proc->frame_tx,proc->subframe_tx); + LOG_M(filename,"txdataF_frame",ru->common.txdataF_BF[i],fp->symbols_per_tti*fp->ofdm_symbol_size, 1, 1); + } + if(proc->frame_tx == 2 && proc->subframe_tx==0){ + sprintf(filename,"txdata%d_frame%d.m",i,proc->frame_tx); + LOG_M(filename,"txdata_frame",ru->common.txdata[i],fp->samples_per_tti*10, 1, 1); + } + } + } + proc->emulate_rf_busy = 0; } #else From 5a3b657f58acb7a2b2d08b260f786be1b73bdc72 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 22 Oct 2018 12:27:29 -0700 Subject: [PATCH 8/8] small fix --- targets/RT/USER/lte-ru.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 65b160bae4..41dd01405c 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -1525,7 +1525,7 @@ volatile int16_t phy_tx_end; static void* ru_thread_tx( void* param ) { RU_t *ru = (RU_t*)param; RU_proc_t *proc = &ru->proc; - LTE_DL_FRAME_PARMS *fp = &ru->frame_parms; + LTE_DL_FRAME_PARMS *fp = ru->frame_parms; cpu_set_t cpuset; CPU_ZERO(&cpuset); char filename[256];