Wiki

no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


Previous revision
Next revision
resources:tools-software:linux-software:iio_oscilloscope [25 Jan 2022 00:45] – [macOS] Travis Collins
Line 1: Line 1:
 +====== IIO Oscilloscope ======
  
 +{{ :resources:tools-software:linux-software:osc128.png?direct}}
 + 
 +===== About =====
 +
 +The ADI IIO Oscilloscope is a cross platform GUI application, which demonstrates how to interface different evaluation boards from within a Linux system. The application supports plotting of the captured data in four different modes (time domain, frequency domain, constellation and cross-correlation). The application also allows to view and modify several settings of the evaluation board's devices.
 +
 +===== Installation =====
 +
 +======  ======
 +{{page>:resources:eval:user-guides:ad-fmcomms2-ebz:downloads#download_iio-oscilloscope}}
 +
 +
 +==== Linux ====
 +
 +For building on the target, we recommend using the [[/resources/tools-software/linux-software/zynq_images#staying_up_to_date|update scripts]]. This is a tried/proven method that does everything in a quick script.
 +
 +To build on a host, do not use the script, you **must**:
 +  - make sure the following libraries are installed. This list is maintained in the ''adi_update_tools.sh'' shell script, and can be copied/pasted to most Debian based distributions. For others - make sure they are installed, or the below steps will not work. If you are not sure how to do this - consult your distribution documentation. file: [[https://github.com/analogdevicesinc/linux_image_ADI-scripts/blob/master/adi_update_tools.sh|adi_update_tools.sh]] <xterm>
 +> **apt-get -y install libglib2.0-dev libgtk2.0-dev libgtkdatabox-dev libmatio-dev libfftw3-dev libxml2 libxml2-dev bison flex libavahi-common-dev libavahi-client-dev libcurl4-openssl-dev libjansson-dev cmake libaio-dev libserialport-dev**
 +</xterm>
 +  - build **and install** the libiio library, by following these [[libiio#how_to_build_it|instructions]]. Make sure you do the final ''make install''.
 +  - build **and install** the libad9361-iio library, by following these [[:resources:eval:user-guides:ad-fmcomms5-ebz:multi-chip-sync#linux|instructions]].
 +  - download the source <xterm>
 +> **git clone https://github.com/analogdevicesinc/iio-oscilloscope.git**
 +> **cd iio-oscilloscope**
 +> **git checkout origin/master**
 +</xterm>Or, [[https://github.com/analogdevicesinc/iio-oscilloscope/archive/master.zip|download a zip]], and uncompress it:<xterm>
 +rgetz@pinky:~$ **wget https://github.com/analogdevicesinc/iio-oscilloscope/archive/master.zip**
 +rgetz@pinky:~$ **unzip master.zip**
 +rgetz@pinky:~/iio-oscilloscope$ **cd iio-oscilloscope**
 +</xterm>
 +   - and run `make` and `make install`. If you did not do a ''make install'' of the libiio, the libiio install location needs to be set in your path ie: (PATH=/usr/lib:$PATH") or else an error "Package libiio not found.." will occur.<xterm>
 +rgetz@pinky:~/iio-oscilloscope$ **mkdir build && cd build**
 +rgetz@pinky:~/iio-oscilloscope$ **cmake ../ && make -j $(nproc)**
 +rgetz@pinky:~/iio-oscilloscope$ **sudo make install**
 +</xterm>
 +   - if you don't want to do a ''make install'' (sometimes I don't), you will need to make sure that the most recently built shared libraries can be found, by setting the [[http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN77|LD_LIBRARY_PATH]] environmental variable.<xterm>rgetz@pinky:~/iio-oscilloscope$ **export LD_LIBRARY_PATH=./**</xterm>otherwise you may get an error like this:<xterm>rgetz@pinky:~/iio-oscilloscope$ **./osc** 
 +./osc: error while loading shared libraries: libosc.so: cannot open shared object file: 
 +No such file or directory
 +</xterm>Or, worse case, when you are debugging things, you will see your modified source code, but it will be running/executing the older shared shared object which was loaded (since it didn't find things in the library path). 
 +
 +==== macOS ====
 +
 +The recommended method is to use brew which we there is a recipe for:
 +<code>
 +git clone -b fix-gtk-upgrade https://github.com/tfcollins/homebrew-formulae.git
 +cd homebrew-formulae
 +brew install --build-from-source ./gtkdatabox-prev1.rb
 +# if necessary: brew link --overwrite gtkdatabox-prev1
 +brew install --build-from-source ./iio-oscilloscope.rb
 +</code>
 +
 +====== User guide ======
 +
 +===== Launching the application =====
 +
 +==== Running Local ====
 +
 +The application can run locally which means it runs on the same platform where your device is connected.
 +
 +To start the IIO Oscilloscope open up the start menu of your system and search for “IIO Oscilloscope”. E.g. if you are using a Ubuntu Linux system move your mouse cursor to the left side of your screen and “Dash home” button and type “IIO Oscilloscope” into the search box.
 +
 +{{ :resources:tools-software:linux-software:osc_launch.png?direct&400 |Select the IIO Oscilloscope from the launch menu}}
 +
 +==== Running Remote ====
 +
 +The application can be used to connect to another platform that has a connected device in order to configure the device and read data from it. You can connect in 3 different ways:
 +  - Manually:<WRAP box bggreen><wrap info>This specifies any shell prompt running on the host or target - Run IIO Oscilloscope in remote mode</wrap>
 +<xterm>
 +> **export OSC_REMOTE=IP address of the remote platform** (old)
 +> **export IIOD_REMOTE=IP address of the remote platform** (new)
 +> **osc**
 +</xterm>
 +</WRAP>
 +  - Settings -> Connect and enter the IP address in the popup window, and click "OK" or "Refresh". {{ :resources:tools-software:linux-software:connect.png?300 |}}
 +  - Settings -> Connect and click "Refresh" with a blank IP number. If your network supports [[http://avahi.org/|zeroconf]]((also referred to as multicast DNS/DNS-SD service discovery)), you will be connected to the device on the network.
 +The application can be used to connect to another platform that runs no-OS software:
 +https://wiki.analog.com/resources/tools-software/no-os-software/iio
 + 
 +
 +===== Using the application =====
 +
 +==== Main Window ====
 +
 +{{ :resources:tools-software:linux-software:plugin_disconnect_button.png?direct&400|IIO Oscilloscope disconnect plugins}}
 +Each plugin (or tab) can be detached from the main window simply by clicking on the button placed on the right side of the name of the plugin. Close the detached window to attach the plugin back to the main window.
 +
 +The Main Window is designed to display a configuration panel (plugin) for each device recognized by the system. Additional plugins will be loaded for device debugging and monitoring purposes such as:
 +
 +=== DMM Tab/Plugin ===
 +
 +{{ :resources:tools-software:linux-software:dmm_plugin.png?direct&400|IIO Oscilloscope DMM plugin}}
 +
 +The **DMM** Plugin: The Digital Multimeter continuously displays device specific data once the start button is activated.
 +  * **Device** tab: Displays the list of all available devices.
 +  * **Active channels ** tab:Displays the list of channels that belong to the enabled devices. All channels can be enabled simultaneously by using the //All Channels// button.
 +  * **Right side** tab: Displays data readings of the enabled channels in Active channels tab.
 +
 +\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\
 +
 +=== Debug Tab/Plugin ===
 +
 +{{  :resources:tools-software:linux-software:debug_plugin.png?direct&400|IIO Oscilloscope Debug plugin}}
 +
 +**Debug** Plugin: Is a tool for device debugging. Since "normal" users should not be doing this, features on this tab may not work unless you have started the ''osc'' application as root (try ''sudo osc'' in a terminal).
 +
 +  * **Device Selection:** Sets the active device. Once a device is selected any other information displayed in the plugin is related to this particular device.
 +  * **IIO Device Attributes:** Allows Read/Write operation for the attributes of a device.
 +  * **Register:** Provides low level access to the registers of the device.
 +    * **Detailed Register Map:** When enabled it displays a graphical representation of a register and groups the bits by their functionality. When disabled the newly displayed option (//Register Map Type//) allows the selection of the register map to be used. SPI registers refer to the internal registers of the device while the AXI Core registers belong to the HDL core associated with the device.
 +    * **Enable AutoRead:** When enabled it allows the register to be read automatically as the register address changes.
 +    * **Address:** The address of the register.
 +    * **Value:** The value of the register at the given address.
 +
 +\\ \\ \\ \\
 +=== Hardware Specific Tab/Plugins ===
 +
 +There may be hardware specific plugins/tabs, specific to the platform you are running on. Here are a few:
 +
 +
 +==== Capture Window ====
 +
 +{{ :resources:tools-software:linux-software:osc_plot_window.png?direct&500|IIO Oscilloscope plot window}}
 +The Capture Window is where device data is displayed.
 +
 +  * **Capture Window Settings**
 +    * **Plot Title:** Click Edit->Plot Title to 
 +    * **Show Settings:** Click View->Show Settings to 
 +  * **Menu** (Along top of the capture/plot window).
 +    * **File**
 +      * **Save As :** Saves data to file.
 +      * **Quit :** Close the capture/plot window
 +    * **Edit**
 +      * **Plot Title :** Change the name of the window.
 +    * **View**
 +      * **Show Settings :** show/hide all settings in the left panel and allow the plot to fill the entire window.
 +      * **Full Screen :** Will make the window full screen.
 +  * **Settings**
 +    * **Device list:** Lists all available ADCs and the corresponding channels. It allows selecting the channels to be displayed.
 +    * **Plot type**
 +      * **Time domain:** Plots the signal in the time domain. Displays the raw samples.
 +        * **Sample count:** Selects the number of samples for time domain, constellation and cross-correlation plotting
 +        * **Graph Type:** Selects the type of all graphs: lines or dots.
 +      * **Frequency domain:** Plots the signal in the frequency domain. Performs a FFT on the signal and displays it.
 +        * **FFT size:** Selects the size of the FFT for frequency domain plotting
 +        * **Window:** Selects the FFT Window. Selecting a window function is not a simple task. Each window function has its own characteristics and suitability for different applications (some are more frequency accurate, others are more amplitude accurate). To choose a window function, you (the user) must select the most appropriate one. Check the [[./iio_oscilloscope/window_functions|details]].
 +        * **FFT Average:** Selects the average weight to be applied to the FFT samples.
 +        * **PWR Offset:** Selects the offset of the FFT graph.
 +      * **Constellation:** Plots the signal as a constellation plot. The I-channel will be plotted on the X-axis and the Q-channel on the Y-axis.
 +        * **Sample count:** Selects the number of samples for time domain, constellation and cross-correlation plotting
 +        * **Graph Type:** Selects the type of all graphs: lines or dots.
 +      * **Cross Correlation:** Plots the signal as a cross-correlation plot.
 +        * **Sample count:** Selects the number of samples for time domain, constellation and cross-correlation plotting
 +        * **Graph Type:** Selects the type of all graphs: lines or dots.
 +    * **Info** 
 +      * **Markers :** Displays marker measurements.
 +      * **Devices :** Displays Device info (sample rate)
 +  * **Plot Options/Icons** (along top of window)
 +    * **Capture/stop :** Starts or stops the data capture.
 +    * **Zoom In :** Zooms in on a region of the plot.
 +    * **Zoom Out :** Zooms out from a region of the plot.
 +    * **AutoZoom :** Zooms automatically for the signal to fit the screen.
 +    * **Save As :** Saves data to file.
 +    * **FullScreen :** Enters/leaves fullscreen.
 +    * **Auto scale :** When enabled the visible area will automatically be re-scaled to fit the entire plot.
 +    * **Show grid :** Shows or hides the grid in the plot window.
 +    * **Y Max :** Adjusts the upper limit of the vertical axis when **Auto scale** is disabled. 
 +    * **Y Min :** Adjusts the lower limit of the vertical axis when **Auto scale** is disabled.
 +    * **New Plot :** Creates a new plot of the same type.
 +
 +=== Activating Markers ===
 +
 +{{ :resources:tools-software:linux-software:markers_menu.png?direct&250|IIO Oscilloscope markers menu}}
 +
 +Markers are used for plot data measurement in when looking in the frequency domain or cross correlations. To activate the markers right click on the plot and select from the marker menu the type of marker you want to enable. Make sure the capture process is running and the appropriate domain is selected in order to enable the markers properly. The following types of markers are available:
 +  * FFT domain (1 channel enabled): Peak, Fixed and Single Tone markers. 
 +  * FFT domain (2 channels enabled): Peak, Fixed, Single Tone and Image markers. 
 +  * Constellation: Peak marker.
 +
 +The enabling of a marker will display a set of 5 markers by default. You can add more markers by selecting Add Marker from the marker menu and remove some by selection Remove Maker.
 +
 +Fixed markers are designed to have their position moved by the user. Once the fixed markers are visible on the plot right click on the marker symbol and while holding the right button pressed move the mouse to the desired location on the plot and release the right button.
 +
 +To disable the markers select Markers Off from the marker menu.
 +
 +\\
 +
 +=== Saving Captured Data ===
 +{{ :resources:tools-software:linux-software:osc_saveas_window.png?direct&400|IIO Oscilloscope saveas window}}
 +
 +\\ \\ \\ \\ \\
 +
 +Once the data is captured, it can be saved using one of the following formats: 
 +  * Agilent VSA
 +  * .csv
 +  * .mat
 +  * .png
 +
 +
 +Click on File→Save As to open the dialog needed to save the data. 
 +
 +\\ \\ \\ \\ 
 +
 +=== Channel Settings ===
 +
 +{{ :resources:tools-software:linux-software:channel_settings_menu.png?direct&250|IIO Oscilloscope channel settings}}
 +
 +  - Simple math operation can be applied to the channel data. Right click on the name of a channel listed in the Device list and select Math Settings to open the menu with the math operations.
 +  - The graph color associated with the channel can be modified. Right click on the name of the channel and select Color Settings to open a color selection panel that will allow you to pick the desired color.
 +
 +
 +The settings can be applied only in Time domain.
 +
 +\\ 
 +
 +=== Trigger settings ===
 +
 +{{ :resources:tools-software:linux-software:trigger_settings.png?250|}}
 +
 +In time domain, it is possible to select a capture channel as the trigger source of the oscilloscope.
 +To do so, right-click on the name of the device used for capture, and select **Trigger settings**.
 +The pop-up window that will open will allow you to configure the channel used for the trigger, as well as the trigger level and edge.
 +
 +====== Provided Waveforms ======
 +
 +Several waveforms are provided with the application for demonstration purposes, which can be loaded into different devices.  However, these are generally not meant for transceiver characterization or demodulation.  If you want to do such tasks, we would recommend creation of your own waveforms from tools such as [[resources:eval:user-guides:ad-fmcomms2-ebz:software:basic_iq_datafiles|MATLAB]].
 +
 +====== Source code ======
 +
 +===== Files =====
 +
 +The source code for the entire application is at [[https://github.com/analogdevicesinc/iio-oscilloscope|github]]. You can ask questions about it on the [[ez>community/linux-device-drivers|EngineerZone]].
 +
 +
 +==== Internals ====
 +
 +If you want to make your own plugin, please refer to the [[./iio_scope/internals|Internals]] page.
 +
 +===== More information =====
 +
 +  * [[resources/fpga/xilinx/fmc/ad-fmcomms1-ebz|AD-FMCOMMS1-EBZ Reference Design]]
 +  * [[resources/tools-software/linux-drivers/platforms/zynq|Linux with HDMI video output on the ZED and ZC702 boards]]
 +
 +{{page>resources/tools-software/linux-drivers/need_help#need help&noheader&firstseconly&noeditbtn}}
resources/tools-software/linux-software/iio_oscilloscope.txt · Last modified: 18 Oct 2023 12:01 by Cristina Suteu