Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
openairinterface5G
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Merge Requests
16
Merge Requests
16
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
oai
openairinterface5G
Commits
f6aaedf3
Commit
f6aaedf3
authored
Jul 18, 2014
by
knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git-svn-id:
http://svn.eurecom.fr/openair4G/trunk@5573
818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent
daeb5304
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
96 additions
and
32 deletions
+96
-32
targets/RT/USER/Makefile
targets/RT/USER/Makefile
+25
-17
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+71
-15
No files found.
targets/RT/USER/Makefile
View file @
f6aaedf3
...
...
@@ -17,8 +17,17 @@ ifeq "$(GCCVERSION)" "4.6.1"
CFLAGS
+=
-Wno-packed-bitfield-compat
endif
ifndef
USRP
USRP
=
0
endif
CFLAGS
+=
-O2
CFLAGS
+=
-DDRIVER2013
-I
$(OPENAIR_TARGETS)
/ARCH/COMMON
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/DEFS
-DENABLE_VCD_FIFO
CFLAGS
+=
-DDRIVER2013
-I
$(OPENAIR_TARGETS)
/ARCH/COMMON
ifeq
($(USRP),0)
CFLAGS
+=
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/DEFS
-DENABLE_VCD_FIFO
endif
ifdef
DEBUG
CFLAGS
+=
-g
-ggdb
endif
...
...
@@ -29,9 +38,7 @@ ifndef RTAI
RTAI
=
1
endif
ifndef
USRP
USRP
=
0
endif
ifeq
($(ENABLE_RAL), 1)
CFLAGS
+=
-DENABLE_RAL
...
...
@@ -62,10 +69,14 @@ CFLAGS += -DENABLE_USE_CPU_EXECUTION_TIME
OBJ
+=
sched_dlsch.o sched_rx_pdsch.o rt_wrapper.o
endif
OBJ
+=
$(OPENAIR1_DIR)
/SIMULATION/TOOLS/taus.o
$(OPENAIR_TARGETS)
/SIMU/USER/init_lte.o
#
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.o
OBJ
+=
$(OPENAIR1_DIR)
/SIMULATION/TOOLS/taus.o
$(OPENAIR_TARGETS)
/SIMU/USER/init_lte.o
ifeq
($(USRP),0)
OBJ
+=
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.o
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/gain_control.o
CFLAGS
+=
-DDRIVER2013
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/DEFS
-DENABLE_VCD_FIFO
CFLAGS
+=
-DDRIVER2013
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/USERSPACE/LIB/
-I
$(OPENAIR_TARGETS)
/ARCH/EXMIMO/DEFS
endif
CFLAGS
+=
-DENABLE_VCD_FIFO
TOP_DIR
=
$(OPENAIR1_DIR)
include
$(OPENAIR1_DIR)/PHY/Makefile.inc
...
...
@@ -154,11 +165,8 @@ CPUFLAGS = -mmmx -msse -msse2 -mssse3 -msse4.1
CFLAGS
+=
-Wall
-fno-strict-aliasing
-DPHYSIM
-DUSER_MODE
-DPC_TARGET
-DPC_DSP
-DNB_ANTENNAS_RX
=
2
-DNB_ANTENNAS_TXRX
=
2
-DNB_ANTENNAS_TX
=
2
-DPHY_CONTEXT
=
1
-rdynamic
$(CPUFLAGS)
# -Wno-packed-bitfield-compat
CFLAGS
+=
-DOPENAIR_LTE
-DENABLE_FXP
-DOPENAIR1
-DDLSCH_THREAD
#-DULSCH_THREAD
#only for CBMIMO1
ifdef
CBMIMO1
CFLAGS
+=
-DFW2011
-DBIT8_TX
-DCBMIMO1
else
#only for EXPRESS MIMO
ifeq
($(USRP),0)
CFLAGS
+=
-DEXMIMO
#CFLAGS += -DEXMIMO -DTIMING_ADVANCE_HW=138 #this is for ExpressMIMO 1
#CFLAGS += -DEXMIMO -DTIMING_ADVANCE_HW=45 #this is for ExpressMIMO 2
...
...
@@ -184,10 +192,10 @@ RTAI_CFLAGS += $(shell rtai-config --lxrt-cflags) -DRTAI
LDFLAGS
+=
$(
shell
rtai-config
--lxrt-ldflags
)
endif
ifeq
($(USRP),1)
CFLAGS
+=
-I
/opt/uhd/include
-L
/opt/uhd/lib
-luhd
-lpthread
-lstdc
++
CFLAGS
+=
-DUSRP
endif
#
ifeq ($(USRP),1)
#
CFLAGS += -I/opt/uhd/include -L/opt/uhd/lib -luhd -lpthread -lstdc++
#
CFLAGS += -DUSRP
#
endif
#CFLAGS += -I/usr/include/c++/4.6 -I/usr/include/c++/4.6/x86_64-linux-gnu -I/usr/include/rtai/
LFDS_OBJ_DIR
=
$(
subst
$(OPENAIR_HOME)
,
$(OBJS_DIR)
,
$(LFDS_DIR)
)
...
...
@@ -208,7 +216,7 @@ $(LFDS_LIB):
ifeq
($(USRP),1)
$(USRP_OBJ)
:
$(USRP_FILE_OBJ)
#
@echo Compiling $<
@
echo
Compiling
$<
@
$(CXX)
-c
$(USRP_CFLAGS)
$(USRP_FILE_OBJ)
-o
$(USRP_OBJ)
endif
...
...
@@ -261,7 +269,7 @@ sleeptest: rt_wrapper.o sleeptest.c
lte-softmodem
:
$(OBJ) $(USRP_OBJ) $(ASN1_MSG_OBJS1) $(RTAI_OBJ) lte-softmodem.o $(SHARED_DEPENDENCIES)
@
echo
Linking
$@
@
$(CC)
$(CFLAGS)
$(EXTRA_CFLAGS)
$(OBJ)
$(RTAI_OBJ)
$(ASN1_MSG_OBJS1)
lte-softmodem.o
-o
lte-softmodem
$(LDFLAGS)
$(LIBS)
@
$(CC)
$(CFLAGS)
$(EXTRA_CFLAGS)
$(OBJ)
$(
USRP_OBJ)
$(
RTAI_OBJ)
$(ASN1_MSG_OBJS1)
lte-softmodem.o
-o
lte-softmodem
$(LDFLAGS)
$(LIBS)
emos-raw
:
$(SHARED_DEPENDENCIES) $(OBJ_EMOS) emos-raw.c
@
$(CC)
$(CFLAGS)
$(EXTRA_CFLAGS)
$(RTAI_CFLAGS)
$(OBJ_EMOS)
-o
emos-raw emos-raw.c
$(LDFLAGS)
$(LIBS)
...
...
targets/RT/USER/lte-softmodem.c
View file @
f6aaedf3
...
...
@@ -71,7 +71,12 @@ static int hw_subframe;
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
#ifndef USRP
#include "openair0_lib.h"
#else
#include "../../ARCH/COMMON/common_lib.h"
#endif
#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
#include "PHY/vars.h"
...
...
@@ -227,7 +232,7 @@ static char *itti_dump_file = NULL;
#endif
double
tx_gain
=
20
;
double
rx_gain
=
3
0
;
double
rx_gain
=
2
0
;
double
sample_rate
=
30.72e6
;
double
bw
=
14e6
;
...
...
@@ -292,7 +297,7 @@ static int mbox_bounds[20] = {8,16,24,30,38,46,54,60,68,7
static
LTE_DL_FRAME_PARMS
*
frame_parms
;
int
multi_thread
=
0
;
int
multi_thread
=
1
;
int
N_RB_DL
=
25
;
unsigned
int
build_rflocal
(
int
txi
,
int
txq
,
int
rxi
,
int
rxq
)
...
...
@@ -698,7 +703,9 @@ void *l2l1_task(void *arg)
void
do_OFDM_mod
(
int
subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
)
{
unsigned
int
aa
,
slot_offset
,
slot_offset_F
;
#ifndef USRP
int
dummy_tx_b
[
7680
*
4
]
__attribute__
((
aligned
(
16
)));
#endif
int
i
,
tx_offset
;
int
slot_sizeF
=
(
phy_vars_eNB
->
lte_frame_parms
.
ofdm_symbol_size
)
*
((
phy_vars_eNB
->
lte_frame_parms
.
Ncp
==
1
)
?
6
:
7
);
...
...
@@ -753,8 +760,42 @@ void do_OFDM_mod(int subframe,PHY_VARS_eNB *phy_vars_eNB) {
((
short
*
)
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
1
]
=
((
short
*
)
dummy_tx_b
)[
2
*
i
+
1
]
<<
4
;
}
#endif //EXMIMO
}
#else
for
(
aa
=
0
;
aa
<
phy_vars_eNB
->
lte_frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
phy_vars_eNB
->
lte_frame_parms
.
Ncp
==
EXTENDED
){
PHY_ofdm_mod
(
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
0
][
aa
][
slot_offset_F
],
&
PHY_vars_eNB_g
[
0
]
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
slot_offset
],
phy_vars_eNB
->
lte_frame_parms
.
log2_symbol_size
,
6
,
phy_vars_eNB
->
lte_frame_parms
.
nb_prefix_samples
,
phy_vars_eNB
->
lte_frame_parms
.
twiddle_ifft
,
phy_vars_eNB
->
lte_frame_parms
.
rev
,
CYCLIC_PREFIX
);
PHY_ofdm_mod
(
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
0
][
aa
][
slot_offset_F
+
slot_sizeF
],
&
PHY_vars_eNB_g
[
0
]
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
slot_offset
+
(
phy_vars_eNB
->
lte_frame_parms
.
samples_per_tti
>>
1
)],
phy_vars_eNB
->
lte_frame_parms
.
log2_symbol_size
,
6
,
phy_vars_eNB
->
lte_frame_parms
.
nb_prefix_samples
,
phy_vars_eNB
->
lte_frame_parms
.
twiddle_ifft
,
phy_vars_eNB
->
lte_frame_parms
.
rev
,
CYCLIC_PREFIX
);
}
else
{
normal_prefix_mod
(
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
0
][
aa
][
slot_offset_F
],
&
PHY_vars_eNB_g
[
0
]
->
lte_eNB_common_vars
.
txdata
[
aa
][
slot_offset
],
7
,
&
(
phy_vars_eNB
->
lte_frame_parms
));
normal_prefix_mod
(
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
0
][
aa
][
slot_offset_F
+
slot_sizeF
],
&
PHY_vars_eNB_g
[
0
]
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
slot_offset
+
(
phy_vars_eNB
->
lte_frame_parms
.
samples_per_tti
>>
1
)],
7
,
&
(
phy_vars_eNB
->
lte_frame_parms
));
}
}
#endif //EXMIMO
}
}
...
...
@@ -1248,8 +1289,8 @@ static void *eNB_thread(void *arg)
if
(
multi_thread
==
0
)
{
if
((
slot
&
1
)
==
0
)
{
LOG_I
(
PHY
,
"[eNB] Single thread slot %d
\n
"
,
slot
);
phy_procedures_eNB_lte
((
1
+
(
slot
>>
1
))
%
10
,
PHY_vars_eNB_g
[
0
],
0
,
no_relay
,
NULL
);
do_OFDM_mod
((
1
+
(
slot
>>
1
))
%
10
,
PHY_vars_eNB_g
[
0
]);
phy_procedures_eNB_lte
((
2
+
(
slot
>>
1
))
%
10
,
PHY_vars_eNB_g
[
0
],
0
,
no_relay
,
NULL
);
do_OFDM_mod
((
2
+
(
slot
>>
1
))
%
10
,
PHY_vars_eNB_g
[
0
]);
}
}
else
{
// multi-thread > 0
...
...
@@ -1570,6 +1611,9 @@ static void get_options (int argc, char **argv) {
int
c
;
// char line[1000];
// int l;
#ifdef USRP
int
clock_src
;
#endif
const
Enb_properties_array_t
*
enb_properties
;
enum
long_option_e
{
...
...
@@ -1627,7 +1671,7 @@ static void get_options (int argc, char **argv) {
mode
=
no_L2_connect
;
break
;
case
'M'
:
multi_thread
=
1
;
multi_thread
=
0
;
break
;
case
'C'
:
downlink_frequency
[
0
]
=
atof
(
optarg
);
// Use float to avoid issue with frequency over 2^31.
...
...
@@ -1692,15 +1736,16 @@ static void get_options (int argc, char **argv) {
}
case
's'
:
#ifdef USRP
int
clock_src
=
atoi
(
optarg
);
if
(
clock_src
==
0
)
{
char
ref
[
128
]
=
"internal"
;
//strncpy(uhd_ref, ref, strlen(ref)+1);
}
else
if
(
clock_src
==
1
)
{
char
ref
[
128
]
=
"external"
;
//strncpy(uhd_ref, ref, strlen(ref)+1);
}
clock_src
=
atoi
(
optarg
);
if
(
clock_src
==
0
)
{
char
ref
[
128
]
=
"internal"
;
//strncpy(uhd_ref, ref, strlen(ref)+1);
}
else
if
(
clock_src
==
1
)
{
char
ref
[
128
]
=
"external"
;
//strncpy(uhd_ref, ref, strlen(ref)+1);
}
#else
printf
(
"Note: -s not defined for ExpressMIMO2
\n
"
);
#endif
...
...
@@ -2155,7 +2200,10 @@ int main(int argc, char **argv) {
PHY_vars_eNB_g
[
0
]
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
i
]
=
0x00010001
;
}
#ifndef USRP
openair0_dump_config
(
card
);
#endif
/*
for (ant=0;ant<4;ant++)
p_exmimo_config->rf.do_autocal[ant] = 0;
...
...
@@ -2212,8 +2260,10 @@ int main(int argc, char **argv) {
// this starts the DMA transfers
#ifndef USRP
if
(
UE_flag
!=
1
)
openair0_start_rt_acquisition
(
card
);
#endif
#ifdef XFORMS
if
(
do_forms
==
1
)
{
...
...
@@ -2412,10 +2462,12 @@ int main(int argc, char **argv) {
#endif
#endif
#ifndef USRP
printf
(
"stopping card
\n
"
);
openair0_stop
(
card
);
printf
(
"closing openair0_lib
\n
"
);
openair0_close
();
#endif
#ifdef EMOS
printf
(
"waiting for EMOS thread
\n
"
);
...
...
@@ -2439,6 +2491,7 @@ int main(int argc, char **argv) {
void
setup_ue_buffers
(
PHY_VARS_UE
*
phy_vars_ue
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
carrier
)
{
int
i
;
#ifndef USRP
if
(
phy_vars_ue
)
{
if
((
frame_parms
->
nb_antennas_rx
>
1
)
&&
(
carrier
>
0
))
{
printf
(
"RX antennas > 1 and carrier > 0 not possible
\n
"
);
...
...
@@ -2465,6 +2518,9 @@ void setup_ue_buffers(PHY_VARS_UE *phy_vars_ue, LTE_DL_FRAME_PARMS *frame_parms,
printf
(
"txdata[%d] @ %p
\n
"
,
i
,
phy_vars_ue
->
lte_ue_common_vars
.
txdata
[
i
]);
}
}
#else
printf
(
"USRP not supported for UE yet!"
);
#endif
}
void
setup_eNB_buffers
(
PHY_VARS_eNB
*
phy_vars_eNB
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
carrier
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment