USRP E1XX 常见问题

USRP E1XX FAQ

通过串口同超级终端(console)相连。E100 串口配置参数:

  • 波特率 -Baud Rate: 115200
  • 位数 - Data: 8-bit
  • 校验 - Parity: None
  • 停止位 - Stop: 1-bit
  • 流控形式 - Flow Control: None
串行终端: 长位方式

最方便上手 E100 的方法是通过超级终端 "console" 的端口。使用 mini-A USB 转 USB 电缆将 E100 同计算机相连。如若计算机运行 Linux 系统,内核便会给 USB 设备分配一个地址文件,使用如下指令便可明了它是如何工作的:

$ dmesg

在刚插入 E100 之初,在输出行便会出现如下诸类信息:

usb 4-2: Detected FT232RL
usb 4-2: Number of endpoints 2
usb 4-2: Endpoint 1 MaxPacketSize 64
usb 4-2: Endpoint 2 MaxPacketSize 64
usb 4-2: Setting MaxPacketSize 64
usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0

请注意上面最后一行 "... now attached to ttyUSB0"。‘ttyUSB0'便是文档所描述的设备地址。

可以使用任何应用程序来连接串口终端和 E100, 最常见的选择便是 MinicomGNU Screen。这两个应用十有八九已经包含在随机系统中。

使用 screen 连接,假定设备的地址为 ttyUSB0,便可使用下面的命令:

$ sudo screen /dev/ttyUSB0 115200,cs8,-ixon,-ixoff

这样一来,E100 一上电,屏幕便会立刻出现串口终端的输出。

建议方式: SSH

E100 缺省地运行 SSH daemon,如若不想涉及 pre-kernel-load (boot-time) 的尝试的话,简单地 SSH 登录进入设备便是建议的方式。这样一来,串行终端便是必须的。

E100 所使用的 DHCP 使得其一旦上电后,待其一分钟完成其启动(booting)过程便可查看路由器的 DHCP 记录 - 设备及其被分配的 IP地址。使用这些 IP 地址以及下面的登录信息便可简单地 SSH 登录这些设备。

另外,使用串口终端运行 '# ifconfig' 也可获得这些 IP。

E100 登录信息如何?

目前有两组登录信息:

Username: root
Password: empty

Username: root
Password: usrpe

如何完美地配置 E1XX?

注:有人已经完美地使用串口线及或许网线同 E100 对讲 :)

为了将外设(诸如:键盘和鼠标)同 E1XX 相连,一个有源的 USB Hub 便是必须的。USB Hub 可以同 USB OTG 或 USB Host 端口相连。

为了展示其完善的功能(发挥其所有性能),下面部件清单是除 E1XX(当然包含电源)之外所必须的:

  • RF 射频接头 (E1XX 随机附件)
  • USB-ADP 电缆 (E1XX 随机附件)
  • 子板 (Ettus 订购页面提供)
  • 天线 (Ettus 订购页面提供)
  • CAT-5e 网络电缆 (Ettus 订购页面提供)
  • USB 转 Mini-B 电缆(USB 串口终端需要)
  • 有源 USB Hub
  • 带有外部电源及 Mini-A 连接器的 USB Hub
  • USB 键盘
  • USB 鼠标
  • HDMI/DVI-D 电缆
  • 外部电源驱动的音箱
  • 麦克风
参阅该链接的图片了解如何配置: E100 Examples

如何从源码构建 UHD 和 GNU Radio?

常规安装指导注解如下:

移除现有的 uhd 和 gnuradio:

# opkg remove --force-depends uhd uhd-dev uhd-examples uhd-tests
# opkg remove --force-depends gnuradio gnuradio-dev gnuradio-examples task-gnuradio

添加用户库搜索路径:

# echo "/usr/local/lib" >> /etc/ld.so.conf

构建和安装 UHD:

$ git clone git://ettus.sourcerepo.com/ettus/uhd.git
$ cd uhd/host/
$ mkdir build
$ cd build
$ cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" -DENABLE_USRP_E100=TRUE ../
$ make
$ make test
$ su
# make install
# ldconfig

构建和安装 GNU Radio:

使用 GIT 的再加一个分支(next branch)遍历 gnuradio git 库:

$ git clone git://gnuradio.org/gnuradio.git
$ cd gnuradio
$ git branch --track next origin/next
$ git checkout next
$ ./bootstrap
$ ./configure --disable-volk --disable-usrp2 --disable-usrp1 --disable-gr-video-sdl CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" CXXFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3"
$ make
$ make check
$ su
# make install
# ldconfig

如何使用 GRC 构建 GNU Radio?

缺省地 GRC 没有被构建,其原因是 autoconfig 同 wxPython 相关联,wxPython 没有被 opkg 库缺省地提供。运行 GRC 并非必须 wxPython,但对 GUI 流程图它却是必须的。

在 E1XX 上构建没有 wxPython 的 GRC,需对 autoconf m4 文档做如下修改

https://github.com/balister/GNU-Radio/commit/e4d9277ca3822d55562f6a75b7044dec78d68ff0

在使用 opkg 安装新的软件应用包,必须使用下面方法更新种子数据库(feed database):

# opkg update

进而,还需安装一个额外应用包:

# opkg install python-lxml

经过上面的步骤之后,遵循 GNU Radio 的构建步骤重新安装,包含 './bootstrap' 操作在内。

如何测试 UHD 及 E1XX?

假如一直遵循上面的安装步骤,此时所有的二进制包理应被安装到 uhd/host/build 目录下。UHD 的一些例程代码 uhd/host/build/examples 便可用来测试 E1XX。

$ su
# ./benchmark_rx_rate

与此同时,也会观察到诊断 E1XX 及所附着的子板的过程输出、以及接收速率测试结果诸如如下:

接收速率 0.500000 Msps 测试 - Testing receive rate 0.500000 Msps (10.000000 second run)

Received packets: 9882
Received samples: 5000292
Lost samples: 0
Lost packets: 0 (approximate)
Sustained receive rate: 0.500000 Msps

接收速率 1.000000 Msps 测试 - Testing receive rate 1.000000 Msps (10.000000 second run)

Received packets: 19763
Received samples: 10000078
Lost samples: 0
Lost packets: 0 (approximate)
Sustained receive rate: 1.000000 Msps

(接续)

最后,所测试的速率太高,便会使得缓存溢出。

如何备份 E1XX 的 microSD 存储卡?

从 E100 上将 micro SD 卡拔下后插入 PC 的读写器(假如是 Linux PC)。如若分区被自动挂载,在此将其卸载。(也不要操作"safely remove the hardware" - 译注:使得插接的 micro SD 卡处于非挂载状态)。使用 dmesg 指令的输出辨识 micro SD 的类型。(比如,它可能是 /dev/sdf)。运行如下指令:

# dd if=/dev/sdf of=sd-backup.bin

理应可以使用(同下面)相类似的方法来复原映像文件,但请使用下面命令:

# dd if=sd-backup.bin of=/dev/sdf

请千万小心,写 /dev/sd* 时不要将本地文件覆盖。

如何更改屏幕分辨率?

在 u-boot 阶段可以通过修改 dvimode 参数来暂时改变屏幕的分辨率。比如

# setenv dvimode 1440x900MR-16@60
# boot

在此显示的分辨率被设定为 1440x900。不用操心(上面指令的参数) MR-16@60 部分,它目前适用大多数的屏幕。一般而言,一旦配置好屏幕,便须生成一个相关的 boo.scr 并重新启动使之生效。

生成文件 boot.cmd 将下面命令:

setenv dvimode 1440x900MR-16@60 
if run loaduimage; then run mmcboot; fi

置身其中,然后运行:

$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "boot" -d boot.cmd boot.scr

将该文件复制到 Micro SD 卡的 FAT 分区上然后重启。

mkimage 是 u-boot 的一部分。在此所使用的是 tmp/sysroot 下面的由 OpenEmbedded 所构建的。在下面的链接中可以找到更多的 u-boot 脚本:

http://www.gumstix.net/wiki/index.php?title=U-Boot

如若需求通用的分辨率(请告知),今后便会在此广告从而省去生成 boot.scf 的麻烦。

如何更新 FPGA 固件?

更新 FPGA 固件是您想象不到的容易。E100 的固件是在线被安装的。所要做的工作是将所需的固件下载到 UHD_IMAGE_PATH 目录下。缺省的,该路径一般是 <install-path>/share/uhd/images。到下面的页面找到最新的 tarball 格式的固件的地址:

http://code.ettus.com/redmine/ettus/projects/uhd/wiki

然后,遵循下面的操作便可:

$ cd <install-path>/share/uhd/images
$ su
# mv usrp_e100_fpga.bin usrp_e100_fpga.bin.bak
# wget <paste link>
# tar zxvf <downloaded tarball>
# mv <tarball directory>/share/uhd/images/* .
# exit

如何通过控制端口(console)设置时区?

时区(timezone)的配置是通过建立 /usr/share/zoneinfo 到 /etc/localtime 的软连接(soft link)来实现的。有一组 tzdata opkg 涵盖不同的地理区域和一个涵盖全球区域的一个 tzdata 文档。如果没有 /usr/share/zoneinfo 目录的话,便须安装一个 tzdata 包:

# opkg install tzdata
# ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

还需要确认在 zoneinfo 内文档对本地有效。以及,确保更改有效的话。还需 log out 和 log in 。

如若 E100 同互联网相连,可以安装 ntpdate 来配置时间:

# opkg install ntpdate
# /usr/bin/ntpdate -b -s -u pool.ntp.org





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