1. What is the recommended way to leverage the ADRV9009 HDL Reference Design example for a custom board that uses Xilinx Zynq Ultrascale+ FPGA to communicate with the ADRV9009? a. How should the drivers needed for the ADI IPs and libiio be integrated into Petalinux? b. Can someone build a Petalinux OS using the Vivado generated .hdf file from a modified version of the HDL example.
2. Is there a resource on how to create a device tree file for a generic platform interfacing with the ADRV9009? a. Is ADI provided yocto layer (meta-adi) a possibility for an OS solution? It seems tailored for the example designs. Can it be modified to fit a custom platform? b. For example we use HMC7044 ultra low phase noise clock chip instead of ad9528 that is used on the ADRV9009 evaluation board .
3. Is the no-os software portable to run on a linux kernel, and does ADI see any issues if we try to run on the no-os software on a linux kernel?
So likely we figured it is power issue on our part. But will post more information if not the case
Yes it was a power issue after all!
Looking forward to the answer for the third question
We did something similar for AD9361 (https://github.com/analogdevicesinc/no-OS/tree/master/ad9361/sw/platform_linux) – it’s not something we would normally encourage the customers to use and something we would support since we have the kernel drivers available, but it’s possible.
Hi, allow me to expand on the questions that Charly posted on our behalf...
1. We have gone through the user guide for the adrv9009 to build the HDL reference design and accompanying Petalinux project for the ZCU102. This process is fairly simple as it's outlined in the links you posted. What we are having trouble with now is, after modifying the HDL reference design to target our custom board, we are not sure how to create a matching Petalinux image.
The 'Building with Petalinux' guide shows how to bring in ADI's yocto layer (meta-adi) and choose the right device tree for the build. While our custom solution is a derivative of the ZCU102 HDL reference design, it isn't exactly the same. Thus, we encounter errors during build using our custom HDL paired with the 'zynqmp-zcu102-rev10-adrv9009' device tree, which is to be expected.
I am not sure how we can modify these device trees, or where to located them because I cannot find them in the meta-adi repo (with the exception of the pl-delete-nodes-*.dtsi files). Any guidance on how to move forward from here?
The ADI Linux kernel is built by Petalinux (https://github.com/analogdevicesinc/meta-adi/blob/master/meta-adi-xilinx/recipes-kernel/linux/linux-adi.inc#L8), so the devicetree you are looking for should be: https://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts
For extending the devicetree, I would look at https://github.com/analogdevicesinc/meta-adi/tree/master/meta-adi-xilinx#extending-the-devicetree.
Thank you for pointing me to the location of this device tree. Is my understanding correct that this device tree is pulled from the analogdevicesinc/linux repo during the build process?
I am not well versed in Linux as I would like to be, so I would like some clarification on extending the device tree. From the description on the readme you linked, it sounds like we can add new nodes to system-user.dtsi. Is it also possible to direct removal of a node, or re-define a node through system-user.dtsi as well? For example, we have modified the reference HDL design by removing the IP cores for the RX OS channel. How should we go about specifying this in system-user.dtsi?