The project is located under
no-OS/projects/adrv9009 and has the following layout, with source code under the
src subdirectory and reference profiles obtained with TES software under
$ tree no-OS/projects/adrv9009 ├── Makefile ├── profiles │ ├── tx_bw100_ir122p88_rx_bw100_or122p88_orx_bw100_or122p88_dc122p88 │ │ ├── talise_config_ad9528.h │ │ ├── talise_config.c │ │ └── talise_config.h │ ├── tx_bw200_ir245p76_rx_bw200_or245p76_orx_bw200_or245p76_dc245p76 │ │ ├── talise_config_ad9528.h │ │ ├── talise_config.c │ │ └── talise_config.h │ └── tx_bw400_ir491p52_rx_bw200_or245p76_orx_bw400_or491p52_dc245p76 │ ├── talise_config_ad9528.h │ ├── talise_config.c │ └── talise_config.h ├── src │ ├── app │ │ ├── app_clocking.c │ │ ├── app_clocking.h │ │ ├── app_config.h │ │ ├── app_jesd.c │ │ ├── app_jesd.h │ │ ├── app_talise.c │ │ ├── app_talise.h │ │ ├── app_transceiver.c │ │ ├── app_transceiver.h │ │ └── headless.c │ ├── devices │ │ └── adi_hal │ │ ├── adi_hal.h │ │ ├── common.h │ │ ├── LICENSE.txt │ │ ├── no_os_hal.c │ │ └── parameters.h │ └── README └── src.mk
The ADRV9009 driver may be found under
no-OS/drivers/rf-transceiver/talise/api and the firmware files under
You may use the TES software to generate profiles and corresponding Stream Binary by graphically selecting
Tools → Create Script → Init .c Files. This will generate a directory containing the following files:
├── headless.c ├── headless.h ├── talise_config_ad9528.h ├── talise_config.c ├── talise_config.h └── TaliseStream.bin
Using the new profile can be achieved by creating a new directory under
no-OS/adrv9009/profiles directory and copying the 3
talise_config* files to it and selecting it in the build system.
Let's say our profile directory is called
new_profile, we may select it for build by making sure the
PROFILE make variable in
src.mk file points to it:
PROFILE = new_profile
After obtaining a
TaliseStream.bin file from the TES GUI, this can be converted to a header file via this Linux command.
$ xxd -i TaliseStream.bin > talise_stream_binary.h
Should you want to use this generated file, replace
no-OS/drivers/rf-transceiver/talise/firmware/talise_stream_binary.h with it.
Clone NO-OS with the
git clone --recursive https://github.com/analogdevicesinc/no-OS
If however you've already cloned NO-OS without the
--recursive flag, you may initialize all the submodules in an existing NO-OS clone with:
git submodule update --recursive
Prior to building a no-OS project, it is required to set up some environment variables so that the build process may find the necessary tools (compiler, linker, SDK etc.).
Use the following commands to prepare your environment for building no-OS projects:
Go in the project directory that should be built.
The build process creates a build directory in the project folder:
build ├── app ├── bsp ├── obj ├── release.elf └── tmp
.hex file has been generated, make sure the board is powered on, JTAG cable connected and use the following commands to upload the program to the board or debug.
Uploading the binary to target is generically achieved with:
$ make run
However, debugging interface might be different across platforms and the specifics are documented below.
The project builds by default for ADRV9009-W/PCBZ with whatever carrier is specified in the hardware files (.hdf or .sopcinfo/.sof).
We strongly recommend you use the command line build instructions above but if you would like to perform a manual and graphical project configuration, you may follow the following legacy build guides for Intel platforms or Xilinx platforms.
DAC_DMA_EXAMPLE is a standard example, provided in all no-OS projects, that sends a sinewave on Tx channels using DMA from a lookup table. If you physically loopback a Tx channel to an Rx channel via an electrical wire, you may run the DAC_DMA_EXAMPLE and read the received data at a predefined DDR memory address. You may retrieve the data on the computer for processing/plotting either graphically by using the memory viewer of the SDK or via command line using tickle scripts.
To build the DAC_DMA_EXAMPLE demo, edit the Makefile and add -DDAC_DMA_EXAMPLE to CFLAGS and rebuild. Alternatively, you may simply add a #define DAC_DMA_EXAMPLE in-code and rebuild.
TINYIIOD demo is a standard example, provided in all no-OS projects, that proposes a TINYIIOD server on the board so that the user may connect to it via an IIO client. Using iio-oscilloscope, the user can configure the DAC and view the ADC data plotted graphically.
To build the TINYIIOD demo, add the following flag when invoking make which will build the tinyiiod server and the IIO section of the driver.
When running the TINYIIOD demo, you should first connect to the board via UART to see the runtime output messages. The UART settings for this are:
Baud Rate: 115200bps Data: 8 bit Parity: None Stop bits: 1 bit Flow Control: none
However, connecting an IIO client to the board is also performed via UART. After the chip initialization is done, the TINYIIOD server is executed and it awaits for a client connection on UART with the following settings:
Baud Rate: 921600bps Data: 8 bit Parity: None Stop bits: 1 bit Flow Control: none
Consequently, you first need to connect a UART terminal to your serial port using 115200 baud rate, wait for the driver to initialize correctly, disconnect the serial terminal, and reconnect with 921600 baud rate from an IIO client application (such as iio-oscilloscope) using serial backend.