Post Go back to editing

9002 No-OS: Switching sample-rates / profiles and minimizing binary files to store

Category: Software
Product Number: ADRV9002

Hello,

I am trying to find an easy/approachable way of altering sample-rates at run-time for the 9002 without requiring re-compilation or storing large binary files. From what I can tell:

  • In the non-TES Linux IIO workflow, switching sample-rates was a matter of generating a stream.bin and profile.json file which were several 30-40 kilobyte files each and loading them in sequentially. 
  • In the No-OS workflow, I believe the current procedure is to use the TES ADRV9002 software to generate sample-code for a given profile (ie: sample rate / filter) settings and then use the No-OS code here: https://github.com/analogdevicesinc/no-OS/tree/master/drivers/rf-transceiver/navassa

            The No-OS code is then modified to point to the variables that are part of the generated TES software instead of using the JSON/Bin files that were specified above.

The source files containing the binaries that TES generates are rather large. In the Argo Navis version (0.21.0) I see a Stream Image (151 KB), an Arm Image (1.19 MB) and a Arm Profile (44 KB) which is much larger in terms of file-size compared to the non-TES Linux IIO workflow.

Questions:

1) If we are designing something that is required to operate at different sample rates for different scenarios, do we need to create profiles for each mode? Or is there an easier approach of creating a single profile that can switch to different rates? 

2) Do we need to create a different ARM image (1.19MB) for each sample rate we need to support OR can it be re-used for different rates? 

3) If all we're doing is changing sample rate and RF BW with no custom FIR filter, is there a simpler approach we can take without needing to generate several profile binary files for each rate?

We would like to seek ways to reduce binary-file size footprint as much as we can for the various rates we need to support as we are targeting a small-form factor design. We are not working with LTE rates - i know that dynamic switching profile seems to be supported here so long as the rates are of multiples of 2 but that will not apply for our use-case.

Thanks

Parents Reply Children
  • There is one NO-OS related question that was implied but not asked directly. So i'll ask a 4th question: Why does the Linux-IIO workflow only require two binaries which are several kilobytes but the NO-OS workflow requires three larger binary files? (one which is over a megabyte?)? Seems like there's a huge difference in file size.

  • The size of the binary on no-OS and linux is identical.

    To be able to use linux/firmware/Navassa_Stream.bin in no-OS, we simply convert it like this:

    xxd -i linux/firmware/Navassa_Stream.bin > Navassa_Stream.h 

    which creates a header file that contains every byte of the binary stored in an array.

    The length of this array seems to be 32KBytes.

    The file size of the header file is ~200KBytes because of the extra ASCII characters.

    This is probably where the confusion comes from.