GNU Radio是一个完全开源的软件无线电结构平台,它可以用来设计和仿真,也可以连接真实的无线电系统。GNU Radio是一个高度模块化,采用流图形式的软件结构平台,它本身提供了许多模块库,使用者可以很快速的使用这些模块来建立关于信号处理的流程。
##2、为什么要用GNU Radio?
从前,在开发无线电设备时,工程师必须开发一种特定的信号级检测电路,设计一个特定的集成电路,该芯片能够解码或编码。软件无线电(Software Defined Radio,SDR)采用模块化处理,处理无线电信号的算法在计算机上实现。
当然你也可以用你的电脑连接无线设备在一个程序中从头开始编写算法,但这就变得很麻烦:为什么你要重新执行一个标准的滤波器?为什么你要关心如何在不同的处理模块之间移动数据?用高度优化的方法,而不用自己写不是很好嘛?你如何王你的程序在架构上很好地扩展,而且在嵌入式设备上运行的很好?进入GNU Radio:框架致力于编写计算机信号处理中的应用。GNU Radio包易于使用且可重用的模块功能,提供良好的可扩展性,还提供了一个广泛的标准算法库,适用于各种不同的通用平台。
LimeSuite是一个软件集合,支持多种硬件平台,包括LimeSDR,LMS7002M收发器RFIC的驱动程序,以及用于LMS7的硬件开发的其他工具。接下来具体介绍LimeSuite的组件,它是如何支持LimeSDR,如何适应SDR应用程序生态系统,以及用户如何使用LimeSuite创建基于LMS7收发器的定制应用程序和新设备。
##1、LMS7002M驱动程序
LimeSuite提供多种驱动期器件,可以直接连接LMS7002M RFIC。这些驱动器充当低级SPI总线事务与高级调用(如调整,增益控制和数据接口配置)之间的桥梁。LimeSuite在内部使用LMS7驱动程序来捆绑硬件,并提供更高级二等与设备无关的接口。此外。LMS7驱动程序已经发步了C或C++API,供开发人员基于LMS7002M RFIC的设计。
##2、LMS7002M C++驱动程序
包含在套件中的是用于LMS7 RFIC的C++ API。该驱动程序为大多数设置(如增益,滤波,调整)提供高级API调用。它还提供了几个用于自我校准的API使用程序,以及从SQLite数据库缓存和检索校准结果。LimeSuite的安装提供了基于这个API创建项目所需的所有开发头文件和库。
##3、LMS7002M C驱动程序
此外,该套件还包含一个用于LMS7的嵌入式C驱动程序,代码库足够小,完全用C语言编写,可以很容易的将其纳入项目或编译嵌入式体系结构。该驱动程序具有通常的高级调用增益,滤波器和调谐;但不包括完整的自我校准或数据库缓存。
几个硬件支持模块随同LimeSuite捆绑在一起。这包括支持新的LimeSDR,带EVB7评估硬件的STREAM开发板,带有LMS7字卡的Novena等等。LimeSuite能够通过单个链接注册表和连接接口来支持许多不同的硬件支持。这使该套件可以提供驱动程序,调试,GUI和应用程序支持,而不管底层硬件如何。
连接接口是抽象了硬件具体细节,诸如底层向USB协议栈呼叫的C++类。特定于主板的实现创建自己的IConnection类的自定义重载,为低级控制例程(如SPI总线事务和寄存器写入)提供实现;为发送和接收的可选流式传输提供实现。连接接口API足够灵活,可处理多个LMS7 RFIC。多个流,以及高级时间和突发流控制。
所述连接注册表是处理可用设备的枚举,并且每个设备的实例化作为IConnection接口C++类。使用连接注册表,电路板特定的支持模块基本上指示LimeSuite如何定位和实例化硬件的句柄。注册表支持多种识别硬件的方法,包括连续、索引、接口类型和设备节点名称。
使用所讨论的连接API,可以在套件内支持任何定制硬件开发。就LimeSuite而言,绑定硬件支持和定制开发之间没有任何区别。只要板卡在连接注册表中,它将由套件软件支持。开发人员可以构建和安装针对LimeSuite环境编译的自定义支持模块,而无需更改套件本身或对其进行任何添加。
LimeSuite还提供一个图形界面,用于选择可用设备,调试LMS7,实时频谱绘图以及更新各种设备的固件和FPGA镜像。以图形方式调试LMS7可能非常有用。开发人员可以将LMS7的整个配置作为“.ini”文件上传和下载,并使用按钮,滑块和下拉菜单于LMS7进行图形交互,而且内置的FFT绘图仪可以为任何实现了流挂钩的电路板提供实时的频谱观察。
当涉及到于LimeSDR等支持的硬件接口时,LimeSDR为用户提供了许多选择。用户将通过Soapy SDR获得低级和高级API访问,并与SDR生态系统中的各种API和软件应用程序集成。使用上面提到的连接注册表,任何注册表的设备都可以在C++中实例化,配置和流式传输。另外,LimeSDR为C语言应用提供了C语言绑定。
该套件附带一个名为Soapy LMS7的支持模块,将SoCySDR库中的LimeSuite连接和驱动程序API绑定在一起。Soapy SDR就像驱动程序,API和SDR应用程序之间的桥梁。它提供了多种语言(C,C++,Python)的API,通过本地网络透明地使用远程访问,以及绑定多个SDR编程环境和图形化SDR应用程序。这些应用包括GQRX, Pothos, CubicsSDR和GNU Radio
LimeSuite是将基于Lime RFIC的硬件设计与SDR应用程序生态系统结合的粘合剂。硬件开发人员可以在调试工具和驱动程序API的帮助下创建硬件。用户可以在现有的SDR应用程序中与LimeSDR和其他设备进行交互。应用程序开发人员可以在各种API和编程环境下创建软件
LimeSuite是Driver,需要首先安装
以下是两种方法:二进制安装和源代码编译
如果采用二进制包,安装就会在/usr/lib/x86_64-linux-gnu/SoapySDR/modules0.6/目录下面。而采用源码编译安装,默认是在/usr/local/lib/SoapySDR/modules0.6/下面。如果同时采用二进制安装,又进行源码安装,就会出现两个LibLMS7 Support.so。虽然不影响正常使用,但版本似乎又不一样,所以建议使用源码安装方式。
#更新软件包
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
#安装LimeSuite套件
sudo apt-get -y install limesuite liblimesuite17.06-1 liblimesuite-dev limesuite-udev limesuite-images
#安装soapysdr支持,可以使用soapysdr接口
sudo apt-get -y install soapysdr soapysdr-module-lms7
#先准备好依赖库
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
#install核心库和构建依赖项
sudo apt-get install git g++ cmake libsqlite3-dev
#install硬件支持依赖项
sudo apt-get install libsoapysdr-dev libi2c-dev libusb-1.0-0-dev
#intall图形依赖
sudo apt-get install libwxgtk3.0-dev freeglut3-dev
#源码编译LimeSuite
git clone https://github.com/myriadrf/LimeSuite.git
cd LimeSuite
mkdir builddir && cd builddir
cmake ../
make -j4
sudo make install
sudo ldconfig
#安装成功,LimeSuiteGUI启动LimeSDR的软件图形界面
#接下来保证非root用户能够访问LimeSDR usb设备
cd LimeSuite/udev-rules
sudo ./install.sh
sudo add-apt-repository -y ppa:pothosware/framework
sudo add-apt-repository -y ppa:pothosware/support
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo add-apt-repository -y ppa:bladerf/bladerf
sudo add-apt-repository -y ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install cmake g++ libpython-dev python-numpy swig python-dev
sudo apt-get -y install build-essential cmake git-core autoconf automake libtool g++ python-dev swig pkg-config libfftw3-dev libcppunit-dev libusb-dev sdcc libsdl1.2-dev python-numpy python-cheetah python-lxml doxygen python-qt4 python-qwt5-qt4 libxi-dev libqt4-opengl-dev libqwt5-qt4-dev libfontconfig1-dev libxrender-dev
sudo apt-get install pothos-all
sudo apt-get install python-pothos
sudo apt-get install python3-pothos
sudo apt-get install pothos-python-dev
sudo apt-get install soapysdr
sudo apt-get install python-soapysdr python-numpy
sudo apt-get install python3-soapysdr python3-numpy
sudo apt-get install soapysdr-module-remote soapysdr-server
sudo apt-get install osmo-sdr soapysdr-module-osmosdr
sudo apt-get install rtl-sdr soapysdr-module-rtlsdr
sudo apt-get install bladerf soapysdr-module-bladerf
sudo apt-get install hackrf soapysdr-module-hackrf
sudo apt-get install uhd-host uhd-soapysdr soapysdr-module-uhd
sudo apt-get install umtrx uhd-host uhd-soapysdr soapysdr-module-uhd
sudo apt-get install miri-sdr soapysdr-module-mirisdr
sudo apt-get install soapysdr-module-rfspace
sudo apt-get install airspy soapysdr-module-airspy
PothosUtil --system-info
SoapySDRUtil --info
sudo apt-get -y install git cmake libboost-dev libcppunit-dev libfftw3-dev python-numpy doxygen python-cheetah python-gtk2-dev python-qt4 python-qwt5-qt4 libxi-dev libqt4-opengl-dev libqwt5-qt4-dev python-lxml
sudo apt-get install gnuradio
sudo apt-get install libsoapysdr-dev
sudo apt install gr-fcdproplus
##2、clone源码,编译安装gr-osmosdr
git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr/
mkdir build
cd build/
cmake ../
#解决办法:下载boost库
apt-cache search boost
搜到所有的boost库
然后:
sudo apt-get install libboost-all-dev
安装相应的库
#此处提示错误
#解决办法:
sudo apt-get install gnuradio-dev
#此处提示错误
gnuradio版本需>=3.7.8 解决办法如下:参见网址
http://blog.csdn.net/wxsdr/article/details/51966559
make
sudo make install
sudo ldconfig
gr-osmosdr cmake后会出现支持GNURadio的扩展部件
若是想要扩展上图中的部件,可以参照如下,网址:
http://blog.csdn.net/sinat_38431275/article/details/77367773