使用官方IIO示波器连接设备,有多种方式可实现。
meta-adi方式:使用adi提供的meta-adi,需要能正常上网,第一次编译时会从github里下载很多东西,修改的东西比较少(改设备树)。
设备树添加方式:需要修改的东西多(设备树、bbpend文件、相关的lib),但是可以离线编译,而且可配置性高。

1.meta-adi方式

1adi移植到yocto layer0必须是Meta-adi/core
2.yotco 的github下载失败解决https://www.arduino.cn/thread-22070-1-1.html经试验本地方式,无效,。
3.BB_NO_WORKbu不能更改,之后的yotco layer会下载adi-linux库在编译成功一次之后可以设置为YES
4.根据readme指示,因为硬件搭建是基于zc702+fmcomms2,所以这里使用最接近的zynq-zc702-adv7511-ad9361-fmcomms5


之后需要根据自己的设备修改yocto设备树 ,fmcomms5有两个9361所以要修改为如下:
/Delete nodes from pl.dtsi which are redefined in ADI dts/
/ {
/delete-node/ aliases;
};

/delete-node/ &axi_ad9361;
/delete-node/ &misc_clk_0;
/delete-node/ &axi_ad9361_adc_dma;
/delete-node/ &axi_ad9361_dac_dma;
/delete-node/ &axi_hdmi_clkgen;
/delete-node/ &axi_hdmi_core;
/delete-node/ &misc_clk_1;
/delete-node/ &axi_hdmi_dma;
/delete-node/ &axi_iic_main;
/delete-node/ &axi_spdif_tx_core;
/delete-node/ &misc_clk_2;
/delete-node/ &axi_sysid_0;
5.使用上面的设备树,由于删除了 aliases 节点 开机之后会提示找不到 默认输出串口0的 aliases,而官方的默认是串口1,导致之后开机之后不能通过串口0访问设备。不能在这个地方添加aliases节点,需要在system-user.dtsi里添加默认串口0的aliases。配置成功后开机会有iiod在运行的启动信息。
6.在IIO示波器上设置,自动扫描Network 不能识别到设备,需要手动输入

6.连上示波器后可以通过iio配置设备寄存器等设置,在Debug->Device Selection->Device里可以看到4个设备。此时可以通过ad936x界面配置发送和接收的参数,可以用频谱仪看到发送的信号。之后打开示波器plot界面,发现没有接收到数据,发送界面设置为DAC Buffer Output,load数据后提示不能建立IIObuffer。尝试使用zed+fmcomms2的设备,直接不能启动内核。后面在adi-的linux内核代码里查看zc702和zed使用的设备树的区别:

修改system-user.dtsi设备树如下

/include/ “system-conf.dtsi”

/ {
aliases{
serial0 = &uart0;
};
chosen {
linux,stdout-path = “serial0:115200n8”;
};
};
&phy0 {
/delete-property/ marvell,reg-init;
};
&cf_ad9361_adc_core_0{
/delete-property/ slavecore-reg ;
};
&cf_ad9361_dac_core_0 {
/delete-property/ slavecore-reg;
};

///delete-node/ &adc0_ad9361;
/delete-node/ &cf_ad9361_adc_core_1;
/delete-node/ &cf_ad9361_dac_core_1;

编译,之后测试正常,LINUX 的IIO示波器移植完成。

2 设备树方式

需要在petalinux-config里设置不自动生成PL端设备树,IIO功能不只是使用AD9361,还包括两个配置的设备。
最终的system_user.dtsi如下:
/include/ “system-conf.dtsi”

#define fmc_spi spi0

&fmc_spi {
status = “okay”;
};

/ {

fpga_axi: fpga-axi@0 {compatible = "simple-bus";#address-cells = <0x1>;#size-cells = <0x1>;ranges;rx_dma: dma@7c400000 {compatible = "adi,axi-dmac-1.00.a";reg = <0x7c400000 0x10000>;#dma-cells = <1>;interrupts = <0 57 0>;clocks = <&clkc 16>;adi,channels {#size-cells = <0>;#address-cells = <1>;dma-channel@0 {reg = <0>;adi,source-bus-width = <64>;adi,source-bus-type = <2>;adi,destination-bus-width = <64>;adi,destination-bus-type = <0>;};};
};tx_dma: dma@7c420000 {compatible = "adi,axi-dmac-1.00.a";reg = <0x7c420000 0x10000>;#dma-cells = <1>;interrupts = <0 56 0>;clocks = <&clkc 16>;adi,channels {#size-cells = <0>;#address-cells = <1>;dma-channel@0 {reg = <0>;adi,source-bus-width = <64>;adi,source-bus-type = <0>;adi,destination-bus-width = <64>;adi,destination-bus-type = <2>;};};
};cf_ad9361_adc_core_0: cf-ad9361-lpc@79020000 {compatible = "adi,axi-ad9361-6.00.a";reg = <0x79020000 0x6000>;dmas = <&rx_dma 0>;dma-names = "rx";spibus-connected = <&adc0_ad9361>;
};cf_ad9361_dac_core_0: cf-ad9361-dds-core-lpc@79024000 {compatible = "adi,axi-ad9361-dds-6.00.a";reg = <0x79024000 0x1000>;clocks = <&adc0_ad9361 13>;clock-names = "sampl_clk";dmas = <&tx_dma 0>;dma-names = "tx";
};};

};

#include “useradi-fmcomms2.dtsi”

&adc0_ad9361 {
en_agc-gpios = <&gpio0 98 0>;
sync-gpios = <&gpio0 99 0>;
reset-gpios = <&gpio0 100 0>; /* Previously 84 */
enable-gpios = <&gpio0 101 0>;
txnrx-gpios = <&gpio0 102 0>;
};

同时修改adi-fmcomms2.dtsi的内容并保存为useradi-fmcomms2.dtsi,主要是注释掉硬件没有的fmc_i2c相关的内容。

在device-tree.bbappend文件里添加如下内容:
SRC_URI += “file://useradi-fmcomms2.dtsi”

配置petalinux-config ,配置使用的内核文件为adi的linux内核。并使用petalinux-config -c kernel --defconfig "filename"将默认配置写入,filename是要使用的默认配置文件,如:petalinux-config -c kernel --defconfig zynq_xcomm_adv7511_defconfig
写入这个配置后,默认没有打开NFS功能,需要重新在内核配置里使能。

上电测试发现IIO_INFO只能识别到ad9361-phy,识别不到另外两个iio设备。猜测与DMA配置有关,DMA使用了中断。cat /proc/interrupts查看中断状态。
在根节点添加:
model = “Xilinx Zynq ZC702”;
interrupt-parent = <&intc>;
最终的system_user.dtsi:

/include/ “system-conf.dtsi”

#define fmc_spi spi0

&fmc_spi {
status = “okay”;
};

/ {
model = “Xilinx Zynq ZC702”;
interrupt-parent = <&intc>;
chosen {
bootargs = “console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait”; ///home/yetob/zynq/rootfs
//bootargs = “console=ttyPS0,115200 root=/dev/nfs rw nfsroot=192.168.1.89:/home/yetob/zynq/qtrootfs ip=192.168.1.109:192.168.1.89:192.168.1.1:255.255.255.0::eth0:off rootwait”;
stdout-path = “serial0:115200n8”;
};

fpga_axi: fpga-axi@0 {compatible = "simple-bus";#address-cells = <0x1>;#size-cells = <0x1>;ranges;rx_dma: dma@7c400000 {compatible = "adi,axi-dmac-1.00.a";reg = <0x7c400000 0x10000>;#dma-cells = <1>;interrupts = <0 57 0>;clocks = <&clkc 16>;adi,channels {#size-cells = <0>;#address-cells = <1>;dma-channel@0 {reg = <0>;adi,source-bus-width = <64>;adi,source-bus-type = <2>;adi,destination-bus-width = <64>;adi,destination-bus-type = <0>;};};
};tx_dma: dma@7c420000 {compatible = "adi,axi-dmac-1.00.a";reg = <0x7c420000 0x10000>;#dma-cells = <1>;interrupts = <0 56 0>;clocks = <&clkc 16>;adi,channels {#size-cells = <0>;#address-cells = <1>;dma-channel@0 {reg = <0>;adi,source-bus-width = <64>;adi,source-bus-type = <0>;adi,destination-bus-width = <64>;adi,destination-bus-type = <2>;};};
};cf_ad9361_adc_core_0: cf-ad9361-lpc@79020000 {compatible = "adi,axi-ad9361-6.00.a";reg = <0x79020000 0x6000>;dmas = <&rx_dma 0>;dma-names = "rx";spibus-connected = <&adc0_ad9361>;
};cf_ad9361_dac_core_0: cf-ad9361-dds-core-lpc@79024000 {compatible = "adi,axi-ad9361-dds-6.00.a";reg = <0x79024000 0x1000>;clocks = <&adc0_ad9361 13>;clock-names = "sampl_clk";dmas = <&tx_dma 0>;dma-names = "tx";
};
};

};

#include “useradi-fmcomms2.dtsi”

&adc0_ad9361 {
en_agc-gpios = <&gpio0 98 0>;
sync-gpios = <&gpio0 99 0>;
reset-gpios = <&gpio0 100 0>; /* Previously 84 */
enable-gpios = <&gpio0 101 0>;
txnrx-gpios = <&gpio0 102 0>;
};

上电测试,正常。设备树方式移植完成。

zynq+ad9361 petalinux使用官方IIO示波器调试记录相关推荐

  1. 基于ZYNQ+AD9361的软件无线电平台设计与实现

    所谓软件无线电,它是一种以通用硬件平台为基础,以自定义软件为核心,来实现各种无线通信系统功能的一种体系和技术.从字面上看,"软件无线电"这个词并不深奥."无线电" ...

  2. 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统

    本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...

  3. 基于ZYNQ+AD9361的软件无线电平台设计与实现 (2)

    基于ZYNQ+AD9361的软件无线电平台设计与实现(1) 1 评估板简介 信迈科技 XM-ZYNQ7045-EVM 是一款基Xilinx Zynq-7000 系列 XC7Z045/XC7Z100 高 ...

  4. 基于ZYNQ的petalinux 2018.3 DMA驱动的移植和内核编译

    vivado硬件设计 DMA设置 第一步,创建项目 petalinux-create --type project --template zynq --name petalinux_Dma john@ ...

  5. 用示波器调试模拟串口

    串口是单片机与外部联系的主要通道,一般地,单片机都会设置有标准的串口.但是,在实际工作时往往会发现,由于通信的通道数多于原有的标准串口,开发者不得不用普通的I/O口模拟标准串口以满足实际工作的需要.用 ...

  6. ZYNQ FPGA PetaLinux构建操作系统

    ZYNQ FPGA PetaLinux构建操作系统 版本:2019.1 开发板:ZCU102 PetaLinux是一套嵌入式Linux软件开发包,针对的是Xilinx的基于FPGA的SoC设计.Pet ...

  7. ADF4350调试记录及频点锁定

    ADF4350调试记录及频点锁定 简介 宽带频率合成器,集成VCO 控制时序 调试记录 无法锁定 最开始,一直无法锁定,参考的官方例子程序,硬件外围电路也排查了好几遍,环路滤波带宽等设定,硬件软件来回 ...

  8. WK2204 - spi转uart调试记录

    WK2204 - spi转uart调试记录 硬件 芯片简介 电路设计 驱动 添加设备树 添加驱动 调试 查看启动加载 检查串口通信 数据乱码或丢失 RS485只能收不能发 系统中断响应异常 思考 硬件 ...

  9. 【tm1650调试记录】

    tm1650调试记录 阅读芯片手册 调试遇到的问题 1:数据的写入 2:数码管不亮 3:数码管调试模式亮,正常运行不亮 TM1650的应用补充--仅适用于LED驱动 亮度 片选信号DIG 配置顺序 代 ...

最新文章

  1. java 右键获取路径,java路径
  2. 理论+实操: linux中firewalld防火墙基础讲解(转载)
  3. Python 简单入门指北(二)
  4. 2020-08-14 光纤通信第三章知识点整理
  5. 阿里云神龙团队拿下TPCx-BB排名第一的背后技术
  6. Asp.net Request方法获取客户端的信息
  7. 学习c++一点一滴----读取注册表
  8. paip.提升安全性--------密码控件与软键盘
  9. vue 项目npm install奇怪错误处理办法(一)
  10. 域策略(4)——设置统一锁屏壁纸(此策略仅适用于企业版、教育版和 Server SKU版)
  11. 今日笔记:Envi利用bandmath修改特定dn值
  12. 不使用拇指玩安装器安装GPK文件
  13. 学习ios Metal(9)—iphone X真实感深度相机True Depth Camera的调用和metal GPGPU
  14. 使用ViKey加密狗实现Windows登陆的方法
  15. MapReduce基本概述——分布式计算框架
  16. 主成分分析(PCA)原理与故障诊断(SPE、T^2以及结合二者的综合指标)-MATLAB实现
  17. [置顶]《游戏引擎架构》信息总汇
  18. GIS在线学堂开课招生了
  19. 亚马逊首席技术官:2023年及未来五大技术趋势预测 | 美通社头条
  20. h5页面loading丝滑小妙招,vue+vant

热门文章

  1. 应届毕业生选择国企还是外企好
  2. mysql++ 安装vs2008
  3. C++--输出:保留两位小数
  4. 经历 C/C++ 大辩论之后
  5. 如何策划夏季营销,激发人们的消费欲望?
  6. 深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(6)
  7. python计算ema_python – 添加一个列(EMA),它是pandas中先前新列值的结果
  8. 服务器安全维护的七大方案
  9. 用csc.exe和记事本写一个C#应用程序
  10. ssl证书如何安装?常见的四类ssl证书安装方法介绍