Upload exe file to arm-a9 vs to linux kernel


I am getting a bit confused reading Doc file - 

1. what is the difference between  - writing my own program for the arm a9 (on the PLUTO SDR), and writing a program for the linux in it?

2. what is an image file??? Looking around the internet i can't find a straight answer.... Is it just another name for an executable file?

3. once i create the image - how do i bring the linux kernel to use it?


Side Note

It feels like in order to get into PLUTO-SDR and using iio-lib, i already have to know all about PLUTO-SDR and iio-lib. it is really frustrating... i gave up on using python for my program and headed just to work with C and cmaker, I hope it will be easier.

Do you know any easy way of getting into it(efficiently use PLUTO hardware via lib-iio)?

  • +1
    •  Analog Employees 
    on Jul 17, 2020 4:21 PM 6 months ago

    1. Compiled binaries are architecture-dependent, so you cannot run an ARM-based binary on a x86 based system and vice versa. The binaries themselves have architecture-specific instructions. If you have ever used a Raspberry PI you will find that you cannot run the same binaries on the PI and a standard Desktop Linux box.

    2. Image file can mean several things depending on the context, but based on your 3rd question I assume you are referring to a compiled binary from C source or another language. Image file is a generic term for just an arrangement of bits which executables essentially are.

    3. Once you create an application that is compiled you run it like any other Linux application from the terminal: `./<executable file>`

    If you are not familiar with programming you will have a difficult time using PlutoSDR or likely any SDR in C. For those starting out it is not recommend to use the C API directly since its meant for flexibility, extensibility, and portability but not necessarily ease of use for a particular device. I would recommend starting with pyadi-iio (not the libiio bindings directly): https://wiki.analog.com/resources/tools-software/linux-software/pyadi-iio if you want to program PlutoSDR or use GNU Radio if you are more interested in a graphical interface.

    I would also not recommend building applications to run directly on PlutoSDR itself without getting them to work locally on your machine. libiio was written to take advantage of what we call backends that allow you to remotely access hardware with minimal changes to code when you create contexts. This concept is explained here: https://wiki.analog.com/resources/tools-software/linux-software/libiio