赞
踩
Pluto SDR是基于AD9363和Zynq7010/20的架构,其中Zynq具有双核Cortex A9,可以独立运行Linux。事实上,正常运作的Pluto SDR就是一直在运行Linux的,只不过是定制过的精简的嵌入式Linux,这个固件官方是直接提供的,本文就演示如何从源代码进行编译,得到用于Pluto SDR交叉编译的sysroot环境,并且可以自行调整Pluto SDR运行的Linux功能(默认的固件预装很少,有些Linux通常预装的库和命令都没有)。
声明:本文使用固件分支为v0.38,使用的Vivado/Vitis版本为2022.2,系统版本为Ubuntu20.04 LTS,内核版本为5.15-62,没有安装其他任何额外的软件或运行库,使用全新系统实测没有问题。若出现了本文没有涵盖的情况请参考官方安装文档。
首先当然是拉取官方提供的固件源码:
git clone --recursive https://github.com/analogdevicesinc/plutosdr-fw.git
注意其中的--recursive
一定要有,否则拉取到的是不完整的,该仓库还引用了Linux kernel、Buildroot等的仓库,加了这个参数才能够完整的拉取下来,文件较大,约4.3GB。
拉取后运行如下命令查看拉取到的分支需要用什么版本的Vivado:
cd plutosdr-fw
grep -i REQUIRED_VIVADO_VERSION $(find ./ -name "adi*.tcl") | grep set
若输出的类似于下面这种,则代表需要Vivado 2022.2版本的Vitis。
set required_vivado_version "2022.2"
使用此链接下载Vitis 2022.2,或者在这个网页中选择2022.2版本,下载Linux版的:
下载得到的是一个在线安装器,并非离线安装包(完整安装包大小非常惊人),为其分配执行权限,然后运行:
chmod +x ./Xilinx_Unified_2022.2_1014_8888_Lin64.bin
./Xilinx_Unified_2022.2_1014_8888_Lin64.bin
然后安装器就会启动。登录Xilinx网站注册的账号后,安装选项选择第一个Vitis:
然后组件选择如图即可,其他组件按需选择:
安装路径建议选择在/opt/Xilinx/
,若提示没有权限,则使用root权限创建并赋权:
sudo mkdir /opt/Xilinx/
sudo chmod 777 /opt/Xilinx/
这样就可以顺利下一步,等待下载安装完毕即可。
然后安装一些待会需要的运行库:
sudo apt-get install git build-essential ccache device-tree-compiler dfu-util fakeroot help2man libncurses5-dev libssl1.0-dev mtools rsync u-boot-tools bc python cpio zip unzip file wget libmpc-dev libgmp-dev
直接输入下列命令即可:
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/opt/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin
export VIVADO_SETTINGS=/opt/Xilinx/Vivado/2022.2/settings64.sh
如果刚才安装的路径并非/opt/Xilinx/
,将第二句和第三句修改为实际的安装路径即可。
确保自己连接到了互联网,进入到源码根目录,运行:
make
就会开始执行,命令行会有非常多的输出,等待大约半小时,没有报错地结束,然后运行:
ls -AGhl build
若显示类似于下列这种文件结构,则编译成功(可以确认total总文件大小是否为543MB)。
total 543M -rw-rw-r-- 1 kloz 294 4月 15 21:23 aie_primitive.json -rw-rw-r-- 1 kloz 14M 4月 15 21:24 ant.dfu -rw-rw-r-- 1 kloz 14M 4月 15 21:24 ant.frm -rw-rw-r-- 1 kloz 33 4月 15 21:24 ant.frm.md5 -rw-rw-r-- 1 kloz 14M 4月 15 21:24 ant.itb -rw-rw-r-- 1 kloz 23M 4月 15 21:24 antsdr-fw-v0.38-dirty.zip -rw-rw-r-- 1 kloz 696K 4月 15 21:24 antsdr-jtag-bootstrap-v0.38-dirty.zip -rw-rw-r-- 1 kloz 69 4月 15 21:24 boot.bif -rw-rw-r-- 1 kloz 510K 4月 15 21:24 boot.bin -rw-rw-r-- 1 kloz 510K 4月 15 21:24 boot.dfu -rw-rw-r-- 1 kloz 639K 4月 15 21:24 boot.frm -rw-rw-r-- 1 kloz 460M 4月 15 21:24 legal-info-v0.38-dirty.tar.gz -rw-rw-r-- 1 kloz 636K 4月 15 21:07 LICENSE.html -rw-rw-r-- 1 kloz 535K 4月 15 21:23 ps7_init.c -rw-rw-r-- 1 kloz 536K 4月 15 21:23 ps7_init_gpl.c -rw-rw-r-- 1 kloz 4.2K 4月 15 21:23 ps7_init_gpl.h -rw-rw-r-- 1 kloz 3.6K 4月 15 21:23 ps7_init.h -rw-rw-r-- 1 kloz 2.8M 4月 15 21:23 ps7_init.html -rw-rw-r-- 1 kloz 36K 4月 15 21:23 ps7_init.tcl -rw-r--r-- 1 kloz 6.4M 4月 15 21:13 rootfs.cpio.gz drwxrwxr-x 6 kloz 4.0K 4月 15 21:24 sdk -rw-rw-r-- 1 kloz 2.4M 4月 15 21:23 system_top.bit -rw-rw-r-- 1 kloz 835K 4月 15 21:23 system_top.xsa -rwxrwxr-x 1 kloz 473K 4月 15 21:24 u-boot.elf -rw-rw---- 1 kloz 128K 4月 15 21:24 uboot-env.bin -rw-rw---- 1 kloz 129K 4月 15 21:24 uboot-env.dfu -rw-rw-r-- 1 kloz 7.7K 4月 15 21:24 uboot-env.txt -rwxrwxr-x 1 kloz 4.4M 4月 15 21:06 zImage -rw-rw-r-- 1 kloz 24K 4月 15 21:13 zynq-ant.dtb
如果需要SD卡能用的固件,则运行:
make sdimg
在build_sdimg目录下可以看到五个文件:
将他们拷贝到SD卡插入到设备上,跳线跳到SD启动,即可使用自己刚刚编译好的固件启动Pluto SDR。
在/buildroot/output/staging/
文件夹或/plutosdr-fw/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot/
下即为板载Linux的根目录:
可以以此目录为基准来编译代码,使编译后的文件可以在Pluto SDR上脱机运行。具体教程可以参考我的这篇文章。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。