通用软件无线电平台 - Universal Software Radio Peripheral (USRP)

运行 OSSIE 数字信号的 USRP 可以同 GNU Radio 关联的外设 相互接口。

该设备正在研发阶段。(国内最新状态请参阅:http://www.microembedded.cn/)

可行的版本:

  • 0.6.1 release tag (死链接)
  • USRP development trunk (死链接)

安装指导 - Installation Guide

安装 SDCC(C 的微设编译器);在 http://sdcc.sourceforge.net/ 处下载并运行下面的命令:

$ tar -xvf sdcc-src-2.6.0.tar.gz
$ cd sdcc-src-2.6.0
$ ./configure
$ make
# make install

接下来安装 USRP 源码: ftp://ftp.gnu.org/gnu/gnuradio/usrp-0.12.tar.gz 处下载并运行下面的命令:

$ tar -xvf usrp-0.12.tar.gz
$ cd usrp-0.12
$ ./bootstrap
$ ./configure
$ make
# make install

安装用于 OSSIE 的 USRP 平台设备 基于查看库源码如下:

$ svn co https://ossie-dev.mprg.org/repos/ossie/platform/USRP/trunk/USRP
$ cd USRP
$ ./reconf
$ ./configure
$ make
$ make install

最后链接库

# /sbin/ldconfig

配置 USB 更改 USRP 目录权限 - Configure USB and change USRP permissions

为了使得在 USRP 运行信号要处理应用,要么具有 root 权限要么赋予用户使用 USRP 的权限。目录权限的更改对于不同的操作系统可能不尽相同,下面以 Fedora 5 或 6 为例:

定义一个 usrp 组(以 root 的身份):

# /usr/sbin/groupadd usrp

添加用户到该组

# /usr/sbin/usermod -a usrp [username]

或,在 usermod 没有被定义的情况下使用

# /usr/sbin/usermod -G usrp -a [username]

基于下面的这些规则产生一个文件 /etc/udev/rules.d/10-usrp.rules 并确保包含 : in MODE 的内容为 :="0660" 如若不然,usb_device 的缺省规则便将 MODE 重写为 "0640"。这同样适用于 GROUP 的配置。

# rule to grant read/write access on USRP to group named usrp.
# to use, install this file in /etc/udev/rules.d as 10-usrp.rules
ACTION=="add", BUS=="usb", SYSFS{idVendor}=="fffe", SYSFS{idProduct}=="0002",GROUP:="usrp", MODE:="0660"

重启 udev daemon 使得更改生效。

# killall -HUP udevd

在启动 USRP (插入电源)后,通过查看 /dev/bus/usb 来确信其工作:

$ ls -lR /dev/bus/usb
这是应当在组 usrp 内发现一个带有 crw-rw---- 属性的设备

好了现在便可以重启计算机。

错误诊断 - Troubleshooting

下面是一系列在试图编译、或在 OSSIE环境下使用 USRP 时的常见问题。

问题 - Problem: 在安装 usrp-0.12 时,在运行命令 ./configure 时出现错误

error: USRP requires libusb. usb.h not found, stop.  - 错误:USRP 需要 libusb。usb.h 没有找到,程序终止。 请查阅: http://libusb.sf.net

答案 - Solution: 需要 libusb 开发工具。这可通过 yum 来自动安装,诸如:

# yum install libusb-devel

问题 - Problem: 在安装 usrp-0.12 时,在运行命令 ./configure 时出现错误

configure: error: USRP requires sdcc. sdcc not found, stop. - 编译错误:USRP 需要 sdcc。sdcc 没有找到,程序终止。参阅:http://sdcc.sf.net

答案 - Solution: You need to install SDCC (see instructions above).


问题 - Problem: 在运行 nodeBooter 时,得到下面的错误信息:

bin/USRP: error while loading shared libraries: libusrp.so.0: cannot open
shared object file: No such file or directory

答案 - Solution: 以 root 的角色,运行

# /sbin/ldconfig

问题 - Problem: 在运行 nodeBooter 时:

usrp: failed to find usrp[0] - usrp: 查找 usrp[0] 失败。

答案 - Solution:

重启系统 - Restart the machine

问题 - Problem: 在运行 nodeBooter 时招致下列或类似的错误:

usrp_open_interface:usb_claim_interface: failed interface 2
could not claim interface 2: Device or resource busy
usrp_basic_rx: can't open rx interface
Failed to create usrp rx
terminate called after throwing an instance of
'CF::LifeCycle::InitializeError'
Aborted

答案 - Solution: 断开 USRP 的 USB 电缆,然后重新连接并重启.







 
注:USRP(原文出处,翻译整理仅供参考!)