How to boot and load ADRV9361 from power up?

We have an ADRV9361 and an ADRV1CRR FMC carrier card.  We have a number of demos running including the FM receiver and the walkie talkie transmitter.   We also have the AD IIO scope control and can run Simulink and Matlab demos.

We would like to boot and load the ADRV9361 from power up with NO ethernet and NO JTAG connections and need some DETAILED guidance.  Questions: 

  • Can you give us a simple example design that will send out a SINE wave to TX1 on the ADRV9361 at board powerup (with NO ethernet and NO JTAG connections)?
  • What is read from the SD card to load the parts at powerup?  ARM code?  FPGA code?  Boot.bin?
  • Do we need to use Vivado to write the flash parts on the ADRV1CRR  or ADRV9361 to get it to boot? 
  • What is the exact power-up sequence of a "run from boot" scenario?  e.g. this is a guess:
  1. ARM wakes and waits for fpga to program from flash. 
  2. ARM Boots from SD card.  
  3. ARM Writes AD9361 part with initialization.  
  4. Clock from AD9361 starts and drives Zync FPGA fabric.
  5. FPGA fabric starts up.

Please give us detail.  Thank you.

  • When you say No Ethernet and such, you meant -- Linux or  hardware?

    You can't use the default image (just ignore these)?

    In general, the idea is that in the SD card you create a BOOT.BIN - that has the FSBL (to setup things), the FPGA bit file and finally your application.

    If no-OS, the third one is just that.

    If Linux, the third one is u-boot (as the second stage) + image.

    Search for how to generate the boot.bin - its very easy to follow.

    In the application, you can leave the DDS (or DMA) to send the tone as it boots.

    You can program the flashes just as a write (Linux is better, but no-OS will also be fine).

    In no-OS, try the peripheral tests (IIRC) - it will give you a general idea.

  • Can you be more specific please?

    Is this right?

    The SD card will contain:

    • BOOT.BIN (contains the First Stage Boot Loader FSBL)
    • FPGA_bit_fie.bit
    • application.???  suffix? elf???

    Regarding the "application" it's not important to us whether we are running Linux or not, we just want to get this demo running quickly so we can understand how to run this board without Simulink, Matlab or IIOscope.  NO OS seemed like the faster approach.

    "Search for how to generate the boot.bin"  

    I see a number of different types of links when I search this.

    Can you send a link that is directly applicable to making a boot.bin for the ADRV9361 and ADRV1CRR FMC carrier card?

    "In the application, you can leave the DDS (or DMA) to send the tone as it boots."

    Again, we want to send out a SINE wave to TX1 on the ADRV9361 at board power up. 

    Can you explain what you mean here in detail?  How will this generate a tone?  Where is there a code example of this?

  • Yes, you are correct.

    The application is the elf that you generated in the no-os folder.

     unfortunately we don't have any links, but it is a good idea, we will probably add a how-to on that.

    Just follow the Xilinx instructions you will be fine.

    The default no-OS does send a tone using DDS.

    https://github.com/analogdevicesinc/no-OS/blob/dev/ad9361/sw/main.c#L463

    https://github.com/analogdevicesinc/no-OS/blob/dev/ad9361/sw/platform_xilinx/dac_core.c#L226

    Those long numbers on the DDS case are the frequencies in Hz.

  • I see that in your no-OS links, there are commands within that C code to configure the ADVR9361 to output a tone.

    What is the flow to create the no-OS project so I can generate an FPGA.bit file and an application.elf file? 

    I am guessing that I need the No-OS files.  I downloaded a zip file of the no-OS files from the wiki.  The readme there points to this page which has some type of instruction for working with the AD-FMCOMMS2-EBZ

    AD9361 No-OS Software [Analog Devices Wiki] 

    I need the ADRV9361 and ADRV1CRR FMC carrier card.  I dont see those as a choice in this menu for "Hardware Platform".  

  • Hi,

    ADRV9361 can't be connected to ADRV1CRR because the carrier has only an LPC (Low Pin Count) FMC port, while the card requires an HPC (High Pin Count) one (FPGA Mezzanine Card - Wikipedia).

    Thanks,

    Dragos