mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-12-08 01:28:05 +00:00
Small fixes (#26)
* Decouple the FPGA DMA signal source from the AD9361 FPGA signal source. * Add the MAX2771_EVKIT FPGA signal source and the ENABLE_FPGA_MAX2771_EVKIT flag to enable it. * Adjust cross-compilation flags to properly support FPGA signal sources * fix signal source names for consistency * Detect if the spidev driver is installed when the ENABLE_MAX2771 flag is set. Detect if the DMA proxy driver is installed when the ENABLE_DMA_PROXY flag is set. Check if ENABLE_FPGA is set when either ENABLE_MAX2771 or ENABLE_DMA_PROXY is set. * fix FPGA signal source names for consistency * Fix FPGA-related CMakefile flags * make cpplint happy * make cpplint happy * make cmakelint happy * make clang-format happy * Replaced the AD9361 FPGA signal source with the ADRV9361_Z7035 FPGA and the FMCOMMS5 FPGA signal sources. * Bump local version of GoogleTest to 1.15.2 and Protocol Buffers to 27.3 * Avoid code duplication in CMake modules * Update clang-tidy job * Clang Tidy fixes * Improve efficiency of Concurrent_Map and Concurrent_Queue classes * Fix segmentation fault if the SignalSource implementation is not available * Moved decimation factor count variable to the class * Avoid possible runtime error when PVT.enable_rx_clock_correction=true * Fix formatting * Fix clang-tidy job * Capitalize FPGA in class implementation names * Capitalize acronyms in FPGA-related class names * Instantiate sources only once * Update changelog * Fix building in some environments and fix CI jobs * Fix clang-tidy complain --------- Co-authored-by: Marc Majoral <majoralmarc@gmail.com> Co-authored-by: cesaaargm <cesare.martinez@proton.me> Co-authored-by: Xavier Guerrero-Pau <xguerrero@cttc.es>
This commit is contained in:
107
CMakeLists.txt
107
CMakeLists.txt
@@ -45,6 +45,10 @@ option(ENABLE_AD936X_SDR "Enable the use of AD936X front-ends using libiio, requ
|
||||
|
||||
option(ENABLE_AD9361 "Enable the use of AD9361 direct to FPGA hardware, requires libiio" OFF)
|
||||
|
||||
option(ENABLE_MAX2771 "Enable the use of MAX2771 direct to FPGA hardware, requires the spidev driver" OFF)
|
||||
|
||||
option(ENABLE_DMA_PROXY "Enable the use of the DMA direct to FPGA hardware, requires the DMA Proxy driver" OFF)
|
||||
|
||||
option(ENABLE_RAW_UDP "Enable the use of high-optimized custom UDP packet sample source, requires libpcap" OFF)
|
||||
|
||||
option(ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNU Radio driver" OFF)
|
||||
@@ -3267,6 +3271,107 @@ endif()
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Check signal sources related to FPGA only.
|
||||
#####################################################################
|
||||
if(ENABLE_MAX2771 AND NOT ENABLE_FPGA)
|
||||
message(STATUS "The SPIdev driver is enabled, but the FPGA is not enabled. The FPGA is required when using the SPIdev driver.")
|
||||
if(ENABLE_PACKAGING)
|
||||
set(ENABLE_MAX2771 OFF)
|
||||
else()
|
||||
message(FATAL_ERROR "ENABLE_MAX2771 can only be set when ENABLE_FPGA is also set.")
|
||||
endif()
|
||||
endif()
|
||||
if(ENABLE_DMA_PROXY AND NOT ENABLE_FPGA)
|
||||
message(STATUS "The DMA Proxy driver is enabled, but the FPGA is not enabled. The FPGA is required when using the DMA Proxy driver.")
|
||||
if(ENABLE_PACKAGING)
|
||||
set(ENABLE_DMA_PROXY OFF)
|
||||
else()
|
||||
message(FATAL_ERROR "ENABLE_DMA_PROXY can only be set when ENABLE_FPGA is also set.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# spidev driver - OPTIONAL
|
||||
# Linux kernel driver that provides user-space access to Serial
|
||||
# Peripheral Interface)
|
||||
#####################################################################
|
||||
if(ENABLE_MAX2771)
|
||||
if(DEFINED ENV{SDKTARGETSYSROOT})
|
||||
set(TARGET_ROOTFS_PATH $ENV{SDKTARGETSYSROOT})
|
||||
else()
|
||||
set(TARGET_ROOTFS_PATH "")
|
||||
endif()
|
||||
find_program(STRINGS_EXECUTABLE strings)
|
||||
if(NOT STRINGS_EXECUTABLE)
|
||||
message(STATUS "The 'strings' command could not be found. See https://www.gnu.org/software/binutils/")
|
||||
message(STATUS " You can try to install it by typing:")
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
|
||||
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
|
||||
message(STATUS " sudo yum install binutils")
|
||||
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
|
||||
message(STATUS " sudo zypper install binutils")
|
||||
else()
|
||||
message(STATUS " sudo apt-get install binutils")
|
||||
endif()
|
||||
endif()
|
||||
message(FATAL_ERROR "Binutils are required to build GNSS-SDR for SoC FPGA devices using the MAX2771 option.")
|
||||
endif()
|
||||
set(DTB_FILE "${TARGET_ROOTFS_PATH}/boot/devicetree/system-top.dtb")
|
||||
if(EXISTS "${DTB_FILE}")
|
||||
message(STATUS "Found DTB file: ${DTB_FILE}")
|
||||
# Run the strings command and grep for "spidev"
|
||||
execute_process(
|
||||
COMMAND ${STRINGS_EXECUTABLE} ${DTB_FILE}
|
||||
COMMAND grep "spidev"
|
||||
OUTPUT_VARIABLE GREP_OUTPUT
|
||||
RESULT_VARIABLE GREP_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(GREP_RESULT EQUAL 0)
|
||||
message(STATUS "Found spidev-compatible peripheral in ${DTB_FILE}.")
|
||||
else()
|
||||
message(STATUS "SPIdev driver not found, its installation is required.")
|
||||
if(ENABLE_PACKAGING)
|
||||
set(ENABLE_MAX2771 OFF)
|
||||
else()
|
||||
message(FATAL_ERROR "SPIdev driver is required for building gnss-sdr with -DENABLE_MAX2271=ON.")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "The device tree (DTB) file ${DTB_FILE} cannot be found.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# DMA Proxy driver - OPTIONAL
|
||||
# Simplified and efficient interface for user-space applications
|
||||
# to leverage DMA capabilities for Xilinx FPGA and SoC systems
|
||||
#####################################################################
|
||||
if(ENABLE_DMA_PROXY)
|
||||
if(DEFINED ENV{SDKTARGETSYSROOT})
|
||||
set(TARGET_ROOTFS_PATH $ENV{SDKTARGETSYSROOT})
|
||||
else()
|
||||
set(TARGET_ROOTFS_PATH "")
|
||||
endif()
|
||||
set(DMA_PROXY_FILE "${TARGET_ROOTFS_PATH}/lib/modules/5.10.0-xilinx-v2021.2/extra/dma-proxy.ko")
|
||||
if(EXISTS "${DMA_PROXY_FILE}")
|
||||
message(STATUS "Found dma-proxy.ko file: ${DMA_PROXY_FILE}")
|
||||
else()
|
||||
if(ENABLE_PACKAGING)
|
||||
set(ENABLE_DMA_PROXY OFF)
|
||||
else()
|
||||
message(FATAL_ERROR "DMA Proxy driver is required for building gnss-sdr with -DENABLE_DMA_PROXY=ON.")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
##############################################
|
||||
# TELEORBIT FLEXIBAND FRONTEND - OPTIONAL
|
||||
##############################################
|
||||
@@ -3471,6 +3576,8 @@ add_feature_info(ENABLE_LIMESDR ENABLE_LIMESDR "Enables Limesdr_Signal_Source. R
|
||||
add_feature_info(ENABLE_FMCOMMS2 ENABLE_FMCOMMS2 "Enables Fmcomms2_Signal_Source for FMCOMMS2/3/4 devices. Requires gr-iio and libad9361-dev.")
|
||||
add_feature_info(ENABLE_PLUTOSDR ENABLE_PLUTOSDR "Enables Plutosdr_Signal_Source for using ADALM-PLUTO boards. Requires gr-iio.")
|
||||
add_feature_info(ENABLE_AD9361 ENABLE_AD9361 "Enables Ad9361_Fpga_Signal_Source for devices with the AD9361 chipset. Requires libiio and libad9361-dev.")
|
||||
add_feature_info(ENABLE_MAX2771 ENABLE_MAX2771 "Enables FPGA_MAX2771_EVKIT_Signal_Source for devices with the MAX2771 chipset. Requires the spidev driver")
|
||||
add_feature_info(ENABLE_DMA_PROXY ENABLE_DMA_PROXY "Enables DMA Signal_Source. Requires the DMA Proxy driver")
|
||||
add_feature_info(ENABLE_AD936X_SDR ENABLE_AD936X_SDR "Enables Ad936x_Iio_Signal_Source to access AD936X front-ends using libiio. Requires libiio and libad9361-dev.")
|
||||
add_feature_info(ENABLE_RAW_UDP ENABLE_RAW_UDP "Enables Custom_UDP_Signal_Source for custom UDP packet sample source. Requires libpcap.")
|
||||
add_feature_info(ENABLE_FLEXIBAND ENABLE_FLEXIBAND "Enables Flexiband_Signal_Source for using Teleorbit's Flexiband RF front-end. Requires gr-teleorbit.")
|
||||
|
||||
Reference in New Issue
Block a user