Wiki

This version (05 May 2021 08:52) was approved by Dragos Bogdan.The Previously approved version (19 Mar 2021 08:21) is available.Diff

no-OS IIO

IIO interfaces and application documentation available at : http://analogdevicesinc.github.io/no-OS/index.html under IIO headline.

BUILD PROJECT WITH IIO SUPPORT

Go to no-OS To build project with no-OS IIO support go to no-OS folder and do:

git submodule update --recursive

Then go to the project “/no-OS/projects/project_name” and execute:

make clean_all

make TINYIIOD=y

Depending on the project and hardware used, the platform might have to be specified inside the Makefile in the project folder, or from command line:

make PLATFORM=desired_platform clean_all

make PLATFORM=desired_platform TINYIIOD=y

For more information about building projects, go to: https://github.com/analogdevicesinc/no-OS/wiki/Building-no-OS-on-Linux. After build, execute command:

Xilinx(Click to expand)

Xilinx(Click to expand)

make run

Linux (Click to expand)

Linux (Click to expand)

sudo ./build/project.out

Make sure IIOD is not already running! It can be stopped it with:
sudo systemctl stop iiod

The binaries are loaded to the board. Next, it is possible to connect with a libiio client.

For debugging and development execute command:

make develop

Connecting to Clients

After building and running a no-Os project, the data can be displayed, processed and visualized through a series of clients, such as command line tools, MATLAB® and Simulink®, IIO-Oscilloscope, etc. Find the complete list of frameworks and applications at http://analogdevicesinc.github.io/libiio/master/index.html

For simply displaying or storing information regarding the devices, iio_info, iio_attr, iio_reg, iio_readdev, iio_writedev are included in the default builds.

Here is an example on how to use iio_info :

  • For serial context iio_info -u serial:/dev/ttyUSB0,115200
  • For network iio_info -u ip:<host>

For a graphical user interface and plots IIO-Oscilloscope is one possible client. For more information about IIO Oscilloscope go to: https://wiki.analog.com/resources/tools-software/linux-software/iio_oscilloscope

Connecting to IIO-Oscilloscope with the serial context:

And with network:

Once connected, two windows should pop up.

Python device over iio client

A python abstraction module for ADI hardware also exists, to make them easier to use. The supported devices can be found at https://analogdevicesinc.github.io/pyadi-iio/devices/index.html

IIO DEMO APPLICATION

A demo iio application can be found in the following location:

https://github.com/analogdevicesinc/no-OS/tree/master/projects/iio_demo

This project is independent of a physical device and should be used as reference, when creating a new iio application for a new iio device. To view information regarding the devices, one can use:

iio_info -u serial:/dev/ttyUSB0,115200
or,
iio_info -u ip:host (only on Linux)

To load data into RAM, that could be seen in iio-oscilloscope application, execute the following command:

cat sample_sine.dat | iio_writedev -u serial:/dev/ttyUSB0,115200 -b 400 dac_demo

This will write 400 samples to “dac_demo” from “sample_sine.dat” file.

FOLDER STRUCTURE

iio_app – IIO application interface. Sets IIO application communication interface and executes the main application, where commands are received, parsed, and executed. This module is necessary.

iio_ad9361 – This module will register a new interface into iio_interfaces element. Wrapper over ad9361 api, it adapts the interface to iio. This module is optional.

iio_axi_adc – This module will register a new interface into iio_interfaces element. It also creates an iio_axi_adc device instance and a struct iio_device element, that specifies it’s channels and attributes. Wrapper over axi_adc_core, it adapts the interface to iio. This module is optional.

iio_axi_dac – This module will register a new interface into iio_interfaces element. It also creates an iio_axi_dac device instance and a struct iio_device element, that specifies it’s channels and attributes. Wrapper over axi_adc_core, it adapts the interface to iio. This module is optional.

SOFTWARE ARCHITECTURE

The relations between modules can be seen in the following figure.

LIBTINYIIOD

Is a library to ease the development of software interfacing I/O (IIO) devices. The library abstracts the low-level details of hardware, and provides a simple yet complete programming interface that can be used for advanced projects.

https://github.com/analogdevicesinc/libtinyiiod

resources/tools-software/no-os-software/iio.txt · Last modified: 29 Apr 2021 11:13 by Ramona Alexandra Nechita