From 3d0f5dbfe97d8b58d6f2963bfd1b457ea990162e Mon Sep 17 00:00:00 2001 From: "lal.harshita" Date: Mon, 23 Nov 2020 17:41:06 +0530 Subject: [PATCH] Added user-guide.rst and api-docs.rst Change-Id: I872d3d942f0094f7d39782d0e703f5382cacc67c Signed-off-by: lal.harshita --- docs/L1-L2_Message_Flow.jpg | Bin 0 -> 34536 bytes docs/api-docs.rst | 158 ++++++++++++++++++++++++++++++++ docs/index.rst | 2 + docs/user-guide.rst | 215 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 375 insertions(+) create mode 100644 docs/L1-L2_Message_Flow.jpg create mode 100644 docs/api-docs.rst create mode 100644 docs/user-guide.rst diff --git a/docs/L1-L2_Message_Flow.jpg b/docs/L1-L2_Message_Flow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bbcd10853695879e05ba55a4f38f535f56c5164b GIT binary patch literal 34536 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 + + +User Guide +========== + +This is the user guide for Cherry release of O-DU/l2. + +.. contents:: + :depth: 3 + :local: + +A. Compilation: +--------------- + +1. Build O-DU High: + + a. Build folder + + - cd /l2/build/odu + + b. Build O-DU High binary + + - make odu MACHINE=BIT64 MODE=FDD + + c. Clean O-DU High binary + + - make clean_odu MACHINE=BIT64 MODE=FDD + +2. Build CU Stub : + + a. Build folder + + - cd /l2/build/odu + + b. Build CU Stub binary + + - make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD + + c. Clean CU Stub binary + + - make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD + +3. Build RIC Stub : + + a. Build folder + + - cd /l2/build/odu + + b. Build RIC Stub binary + + - make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD + + c. Clean RIC Stub binary + + - make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD + +4. Clean ODU, CU Stub and RIC Stub together + + a. make clean_all + + +B. Execution: +------------- + +1. Assign virtual IP addresses as follows: + + a. ifconfig :ODU "192.168.130.81" + b. ifconfig :CU_STUB "192.168.130.82" + c. ifconfig :RIC_STUB "192.168.130.80" + +2. Execute CU Stub: + + a. CU execution folder + + - cd /l2/bin/cu_stub + + b. Run CU Stub binary + + - ./cu_stub + +3. Execute RIC Stub: + + a. RIC execution folder + + - cd /l2/bin/ric_stub + + b. Run RIC Stub binary + + - ./ric_stub + +4. Execute DU: + + a. DU execution folder + + - cd /l2/bin/odu + + b. Run ODU binary + + - ./odu + +PS: CU stub and RIC stub must be run (in no particular sequence) before ODU + + +C. Testing with Intel O-DU Low: +------------------------------- + +I. Compilation +^^^^^^^^^^^^^^ + + 1. Build ODU : + + a. Create folder /l2/src/wls_lib. Copy wls_lib.h from /phy/wls_lib/ to + /l2/src/wls_lib. + + b. Create folder /l2/src/dpdk_lib. Copy following files from + /dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to /l2/src/dpdk_lib. + + - rte_branch_prediction.h + - rte_common.h + - rte_config.h + - rte_dev.h + - rte_log.h + - rte_pci_dev_feature_defs.h + - rte_bus.h + - rte_compat.h + - rte_debug.h + - rte_eal.h + - rte_os.h + - rte_per_lcore.h + + c. Build folder + + - cd /l2/build/odu + + d. Build ODU Binary: + + - make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD + + 2. Build CU Stub and RIC Stub: + + a. Execute steps in sections A.2 and A.3. + +II. Execution +^^^^^^^^^^^^^ + + 1. Execute O-DU Low: + + a. Setup environment: + + - cd /phy/ + - source ./setupenv.sh + + b. Run O-DU Low binary : + + - cd /FlexRAN/l1/bin/nr5g/gnb/l1 + - To run in timer mode : ./l1.sh -e + - L1 is up when following prints are seen on console: + + | Non BBU threads in application + | \================================================================== + | nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1] + | wls_rx_handler (non-rt):                [PID: 8663] binding on [CPU 0] + | \================================================================== +   + PHY>welcome to application console + + 2. Execute FAPI Translator: + + a. Setup environment: + + - cd /phy/ + - source ./setupenv.sh + + b. Run FAPI translator binary: + + - cd /phy/fapi_5g/bin/ + - ./oran_5g_fapi --cfg=oran_5g_fapi.cfg + + 3. Execute CU Stub and RIC Stub: + + a. Run steps in sections B.1-B.3. + + 4. Execute DU: + + a. DU execution folder + + - cd /l2/bin/odu + + b. Export WLS library path + + - export LD_LIBRARY_PATH=/phy/wls_lib/lib:$LD_LIBRARY_PATH + + c. Run ODU binary + + - ./odu + + +D. Message Flow: +---------------- + +O-DU High opens WLS interface during bring up. Message exchanges can begin once the interface is ready. +Following diagram shows P5 messages exchange with O-DU Low in timer mode. + +.. figure:: L1-L2_Message_Flow.jpg + :width: 600 + :alt: Figure 1 O-DU High - O-DU Low Message Flow Diagram + + Figure 1 - O-DU High - O-DU Low Message Flow Diagram + +Note: UL IQ-Sample request and response are needed by Intel O-DU Low in timer mode(testing mode) only. Code changes for +these are guarded under INTEL_TIMER_MODE flag which can be enabled using compilation option "PHY_MODE=TIMER", as mention +in section C.I.1.d . -- 2.16.6