2015-08-06 6 views
0

Я очень новичок в использовании USRP устройств и пытаюсь узнать, как настроить центральную частоту либо приемника или передатчика E310 устройства с помощью C++ API, поэтому у меня есть несколько вопросов:Тюнинг Ettus 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; 

} 

Когда я компилирую с помощью г ++ -luhd Example.cpp -o тест, сообщение об ошибке я получаю

/usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2/../../../../arm-oe-linux-gnueabi/bin/ld: /usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2/../../../libuhd.so: undefined reference to symbol '_ZN5boost6system15system_categoryEv' //usr/lib/libboost_system.so.1.55.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status.

Я не уверен, если это в отношении синтаксис или какой-то недостающий аргумент или что-то еще я еще не понимаю.

+0

Не могли бы вы уточнить, как «это не сработало»? Результат? Сообщения об ошибках? – Anders

+0

При компиляции с использованием g ++ -luhd Example.cpp -o проверить сообщение об ошибке, которое я получаю: /usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2/../../../. ./arm-oe-linux-gnueabi/bin/ld: /usr/lib/gcc/arm-oe-linux-gnueabi/4.8.2/../../../libuhd.so: неопределенная ссылка на символ '_ZN5boost6system15system_categoryEv' //usr/lib/libboost_system.so.1.55.0: символы добавления ошибок: отсутствует DSO из командной строки collect2: error: ld возвращен 1 статус выхода. Я не уверен, что это касается синтаксиса или отсутствующего аргумента – user3760785

+0

Спасибо. Пожалуйста, добавьте новую информацию в исходный вопрос, отредактировав ее, а не просто разместив ее в комментариях. Это увеличит вероятность того, что вы найдете хороший ответ. – Anders

ответ

0

How do I get the my script to compile and run properly. Using cmake or g++? (tried both, didn't work for me.) Or even, how would I compile the example I would get from the github repository, just to make sure I'm doing it right.

CMake и g ++ - очень разные вещи. Первый используется для создания сценария сборки (так называемый Makefile), а второй - это компилятор (который обычно вызывается из скриптов сборки).

Вы должны взглянуть на init_usrp project example, начиная с README, а затем просто изменить init_usrp.cpp, пока вы не почувствуете себя как дома с созданием проекта на основе CMake, которое вы можете адаптировать для ваших проектов.

В качестве дополнительного узла: вы делаете это hard способом. E310, в отличие от любого не-E-серии USRP, представляет собой встроенный Linux-компьютер, поэтому вам нужно скомпилировать программное обеспечение и запустить его на самой USRP, вместо того, чтобы использовать ваш компьютер. Это действительно громоздко для кого-то, кто просто справляется с системами сборки. Если бы у меня было больше времени, я бы добавил некоторую информацию о том, как вы не должны создавать свое программное обеспечение на самом E310, но на вашем ПК с использованием кросс-компилятора toolchain, но это только усложнит ситуацию. Если вы можете (например, если ваша лаборатория имеет другую), используйте любой другой USRP; гораздо проще отлаживать ваш код и обработку вашего сигнала, если вы фактически работаете на ПК с экраном.

1) What am I missing in my code below

Трудно сказать. Это выглядит очень минимально, но хорошо для меня. Вы не включаете любые информацию о том, что происходит не так. Я имею в виду, вероятно, у вас должен быть #include <cstdio>, поскольку вы используете scanf и printf, но так как вам нужно использовать C++ в любом случае для разработки программного обеспечения обработки сигналов с UHD на встроенном устройстве, я не думаю, что это тривиальное информация вам очень помогает.

Смежные вопросы