首先在PC上安装USRP的UHD驱动和镜像,具体安装方案相关的教程比较多。在此安装的uhd版本为3.13.1.0。(建议安装3.13以后的版本)
N310内部自带了ARM CPU,运行通过连接到内部ARM CPU的方式来进行配置和管理,为了后续的使用还是有必要连接到ARM
CPU,可以采用多种方法连接到usrp n310的CPU:
1.1、通过console JTAG口
1.2、利用SSH协议
1.1.1 安装screen
可以在linux上使用screen工具使用串行终端模拟器通过串行控制台端口获得对设备的shell访问。通过CONSOLE JTAG口连接到PC,如果linux未安装screen工具,采用以下命令安装:
$ sudo apt install screen
安装完screen 将PC和 usrp n310 通过 console JTAG接口连接到PC的USB接口后运行以下命令:
$ ls /dev/serial/by-id
显示结果参考如下,这里需要使用到第三、四行的输出结果
usb-Digilent_Digilent_USB_Device_25163517D396-if00-port0
usb-Digilent_Digilent_USB_Device_25163517D396-if01-port0
usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_0097D3E0-if00-port0
usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_0097D3E0-if01-port0
根据上述指令运行结果,采用以下命令 连接到N310的ARM CPU
$ sudo screen /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_0097D3E0-if00-port0 115200
输入密码默认为:root,登入到ARM CPU,
在此操作模式下,可以通过指令对设备执行操作: 如关机命令:
root@ni-n3xx-317E259:~# shutdown -h now
重启设备命令:
root@ni-n3xx-317E259:~# reboot //还可以在此模式下更新设备的FPGA镜像
在默认情况下,n310的RJ45(1Gb)管理接口配置为DHCP IP地址。如果您可以访问具有DHCP服务器的网络(例如公共路由器的LAN),直接将RJ45 1Gb端口连接到此网络,后运行uhd_find_devices命令应该可以识别到设备,在mgmt_addr一栏对应设备的IP地址。可以直接跳到步骤 1.2.2
-1.2.1 dnsmasq命令创建DHCP服务器
你可以在ARM模式下输入ip a 指令,查看n310各个端口的ip地址
(注意图中eth0对应RJ45 1GB端口,因为我所访问的网络不具有DHCP服务器故图中eth0没有IP,因此我采取了自己创建的方式)
如果无法访问具有DHCP服务器的网络,则可以使用Linux实例程序dnsmasq创建一个:
将RJ45 1GB 端口连接到PC的网卡(名为enp4s0)后,首先再PC上网络→编辑连接,新建一个连接命名为RJ45,选择对应网卡(enp4s0)后,注意要设置MTU为8000字节,不要设置为自动,再IPV4一栏将此网卡ip与n310设设置为同一网段,设置为192.168.1.254/25。设置如下图:
设置完后在终端窗口输入:
$ sudo dnsmasq -i enp4s0 --dhcp-range=192.168.1.151,192.168.1.254 --except-interface=lo --bind-dynamic --no-daemon
其中enp4s0根据自己要创建DHCP服务器的网卡名称修改。
在ARM CPU模式下再次使用 ip a 查看设备地址,可以看到设备此时的地址为192.168.1.205。
-1.2.2 SSH连接到ARM CPU
假设uhd_find_devices查看设备ip(mgmt_addr)为192.168.1.187/24,设备获得ip地址后采用以下命令通过ssh连接到设备ARM CPU:
$ ssh [email protected]
输入默认密码root后,即可连接成功。
根据N310的官方文档要求,在操作设备之前,强烈建议更新到最新版本的嵌入式Linux文件系统。 也就是说如果你在网络模式(不连接到ARM CPU)下操作设备,则主机上运行的UHD版本和N3xx USRP必须匹配。
官方档案(http://kb.ettus.com/N300/N310_Getting_Started_Guides#Probe_the_USRP_N300.2FN310
中提供了两种方法来更新LINUX文件系统:
因为没有买读卡器。。。在此采用了第一种方法(第二种参考官方文档)更新文件系统,依次运行以下命令:
下载mender镜像:
$ sudo uhd_images_downloader -t mender -t n3xx –yes
采用scp将此镜像拷贝到n310(ip注意根据设备的ip地址修改):
$ scp /usr/local/share/uhd/images/usrp_n3xx_fs.mender [email protected]:~/.
连接到ARM CPU,在设备模式下输入命令:
root@ni-n3xx-serial:~# mender -rootfs /home/root/usrp_n3xx_fs.mender
更新完成后,在此模式下输入reboot重启设备,重启完成后确认无误,输入指令提交更改
root@ni-n3xx-serial:~# reboot
root@ni-n3xx-serial:~# mender -commit
2.2 N310 FPGA更新
-2.2.1 主机模式下更新方法
首先确认对应的FPGA镜像已经下载,/usr/local/share/uhd/images目录下有对应文件,可以采用sudo uhd_images_downloader -v 指令自动下载(我在采用这种方式下载时遇到了uhd 版本与FPGA版本“noc_shell”不匹配的问题,后来手动下载对应镜像到指定目录后才解决问题),也可以手动下载的镜像包解压后拷贝到/usr/local/share/uhd/images目录下,在uhd_find_devices识别设备,获得设备的mmgt_addr为192.168.205 后,运行以下指令:
$ uhd_image_loader --args "type=n3xx,addr=192.168.1.205,fpga=HG"
更新完后运行uhd_find_devices,可以识别到设备,注意此时除了设备地址192.168.1.205外,连接上主机的SFP1的端口的默认地址192.168.20.2也可以识别。(将SFP1连接到PC,并且编辑连接设置主机与n310的SFP1接口ip处于同一网段,MTU设置为8000)
运行uhd_usrp_probe
root@ni-n3xx-serial:~# uhd_image_loader --args "type=n3xx,fpga=HG"
完结~
-后续使用n310只需将设备与PC连接完成后,按顺序执行以下步骤即可:
首先运行uhd_find_devices看能否识别设备与端口地址,接着uhd_usrp_probe如果可以识别即可以直接使用。
如果不行则依次再终端命令行输入:
$ sudo dnsmasq -i enp4s0 --dhcp-range=192.168.1.151,192.168.1.254 --except-interface=lo --bind-dynamic --no-daemon
$ uhd_image_loader --args "type=n3xx,addr=192.168.1.187,fpga=HG"
注意addr的值根据上一步所分配的ip可能会有所变动。再次运行uhd_find_devices和uhd_usrp_probe。
参考文献 https://kb.ettus.com/N300/N310_Getting_Started_Guides