调整Ettus E310

时间:2015-08-06 21:59:34

标签: usrp

我是使用usrp设备的新手,我正在尝试学习如何使用C ++ API调整E310设备的接收器或发射器的中心频率,所以我有几个问题:

1)我在下面的代码中遗漏了什么

2)如何让我的脚本编译并正常运行。使用cmake还是g ++? (尝试过两者,对我来说都不起作用。)或者甚至,我将如何编译我从github存储库获取的示例,以确保我做得对。

我也试图用一些例子作为起点。

由于

#include <uhd/utils/safe_main.hpp>
#include <uhd/usrp/multi_usrp.hpp>
#include <boost/format.hpp>
#include <uhd/types/tune_request.hpp>
#include <iostream>
#include <csignal>
#include <cstdio>


int UHD_SAFE_MAIN()
{

double freq;

    printf("Enter RX frequency in Hz");
    scanf("%lf",&freq); 

//create a USRP
uhd::usrp::multi_usrp::sptr usrp;

//set the frequency
usrp->set_rx_freq(freq);

//Read the frequency
usrp->get_rx_freq();


    return 0;

}

当我使用g ++ -luhd Example.cpp -o test编译时,我得到的错误消息是

  

/usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2 /../../../../臂-OE-Linux的gnueabi / bin中/ LD:   /usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2/../../../libuhd.so:undefined   引用符号'_ZN5boost6system15system_categoryEv'   //usr/lib/libboost_system.so.1.55.0:添加符号时出错:DSO丢失   从命令行collect2:错误:ld返回1退出状态。

我不确定这是关于语法还是缺少一些参数或其他我还不了解的东西。

1 个答案:

答案 0 :(得分:0)

  

如何让我的脚本编译并正常运行。使用cmake还是g ++? (尝试过两者,对我来说都不起作用。)或者甚至,我将如何编译我从github存储库获取的示例,以确保我做得对。

CMake和g ++是完全不同的东西。第一个用于生成构建脚本(所谓的Makefile),第二个用于编译器(通常从构建脚本调用)。

你应该看看init_usrp project example,从README开始,然后修改init_usrp.cpp,直到你有足够的感觉回家基于CMake的项目构建,你可以调整你自己的项目需要。

作为一个额外的节点:你正在以 hard 的方式做这件事。与任何非E系列USRP不同,E310是嵌入式Linux计算机,因此您需要为其编译软件并在USRP上运行,而不是能够使用您的PC。对于刚刚掌握构建系统的人来说,这真的很麻烦。如果我有更多的时间,我会添加一些关于你不应该如何在E310本身上构建软件的信息,而是在你的PC上使用交叉编译工具链,但这只会让事情变得更复杂。 如果可以(例如,如果您的实验室碰巧有另一个实验室),请使用任何其他USRP;如果您实际在带有屏幕的PC上工作,那么调试代码和信号处理会更容易。

  

1)我在下面的代码中遗漏了什么

很难说。它看起来很小,但对我来说还可以。您没有包含任何有关出错的信息。我的意思是,你可能应该有一个#include <cstdio>,因为你正在使用scanfprintf,但是因为你需要习惯C ++才能用UHD开发信号处理软件在嵌入式设备上,我认为这些琐碎的信息对你没什么帮助。