Linux下修改AD9361默认参数的方法

1. 概述

SDR-B1是正旗通信推出的基于Xilinx Zynq XC7Z045+ADI AD9361/AD9363的软件无线电平台,近期有客户在使用Petalinux进行软件开发过程中,提出更改AD9361/AD9363默认参数的需求,本文档给出具体的实现方式。

2. 分析

在《SDR-B1软件无线电平台开发环境搭建》一文中,我们使用了zynq-adrv9361-z7035-bob.dts作为设备树文件,这个设备树文件包含了一个名为zynq-adrv9361-z7035.dtsi的文件。通过搜索,得知zynq-adrv9361-z7035.dtsi存放在build/tmp/work-shared/plnx-zynq7/kernel-source/arch/arm/boot/dts/目录下, 查看zynq-adrv9361-z7035.dtsi文件的内容,可知&spi0节点下正是AD9361的默认参数,如下图。

因此,通过修改zynq-adrv9361-z7035.dtsi文件,就可以修改AD9361的默认参数。

3. 实现过程

假定用户已经根据《SDR-B1软件无线电平台开发环境搭建》一文的说明搭建了Petalinux开发环境,按如下步骤进行操作:

cd ~/data/code
git clone https://github.com/analogdevicesinc/linux.git ‘linux_adi’
cd linux_adi
vi arch/arm/boot/dts/zynq-adrv9361-z7035.dtsi

按需对zynq-adrv9361-z7035.dtsi中的AD9361/AD9363默认参数进行调整后,保存退出。在本例中,修改了TX与RX的本振频率,如下图

继续输入以下命令

git diff > 0001-ad9361-init-parameters-modify-by-zencheer.patch
cd ~/data/code/petalinux/sdr_b1_v11/project-spec/meta-user
mkdir recipes-kernel
cd recipes-kernel
mkdir linux
cd linux
mkdir linux-xlnx
cp ~/data/code/linux_adi/0001-ad9361-init-parameters-modify-by-zencheer.patch linux-xlnx/
vi linux-xlnx_%.bbappend

输入以下内容

SRC_URI_append += "file://0001-ad9361-init-parameters-modify-by-zencheer.patch"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

保存后退出,输入以下命令

cd ~/data/code/petalinux/sdr_b1_v11
petalinux-build

编译完成后,重新生成TF卡固件,并将固件复制到TF卡中。SDR-B1启动完成后,查看AD9361/AD9363默认参数,输入以下命令

cd /sys/bus/spi/devices/spi0.0/iio:device0
cat out_altvoltage0_RX_LO_frequency
cat out_altvoltage1_TX_LO_frequency

结果如下图所示

可知,AD9361/AD9363默认参数已正确变更。