I'm considering making my own AD9361 development board based on Zynq, but ADI only provides many examples for the official development board, so I have a lot of questions.
ADI official documents provide a way to control AD9361 and send and receive data through matlab plug-in or iio Oscilloscop, but this seems to be based on libiio.
[1] I think that iio is similar to a bus. I want to know what it is based on to determine whether there are iio devices, such as two AD9361s. What mechanism is it based on to determine whether there are two 9361s?
[2] 9361 is controlled through the spi bus. Why can iio control 9361? What is the relationship between the iio bus and the spi bus? Why can iio even read the data received by the axi_9361 ip core? Can it be considered that the spi and axi_9361 inside the iio library are driver?
[3] I built the Linux system through petalinux2018.3 and meta-adi-2019_R1. Is libiio installed by default in this way? However, to build a Linux system in this way, it seems that you must use the official hdl design, which only supports the official development board. I think it is very difficult to modify the device tree or driver. For example, I want to control multiple chips AD9361 through independent spi. I don’t need HDMI port either.
[4] In addition to the libiio library, I also found a library libad9361-iio library. Does this library require additional installation? This library seems to provide the function of multi-chip synchronization. After I install the libiio library, can I use the matlab plug-in to connect to my own development board, even if my development board is made by myself, the design is different from the official development board.
[5] I prefer to use matlab plug-ins than iioscope. I want to know if matlab can achieve fmcomms5 synchronization. If so, can I adapt it to my own board by modifying the ad9361_fmcomms5_phase_sync.c function in libad9361-iio?
Thank you very much. Hope to get your reply