Post Go back to editing

JTAG for ADSP-21488

Hello, i want to start to use DSP in my projects, because simple ARM Cortex M4 with FPU is just to weak for me
so i buyed ADSP-21488 DSP.
My first job would be connect it to ADC and DAC via parallel port, and so simple DFT stuff with it. I need 2*16b bus and two flags one as input and one as output (rest is done on cyclone 3 FPGA)
Problem is i don't have any JTAG and i don't have parallel port on my notebook. what is the cheapest way to download and debug program ?
(maybe it is possible to use Altera Blaster or something like that ? or i just download hex data to STM32F4 and program DSP by using gpio of that processor)
Thanks for advice

  • Hi,

         Please let me know on whether you have an EZ-KIT or you plan to design a custom board. In case of the EZ-KIT you can use the debug agent to download the program. For the custom design board you need to have the HP_USB ICE emulator from ADI.

    Best Regards,

    Jeyanthi

  • i guess what i am going to do is just make breakout board for flags and parallel ports, use simple CMOS 25MHz oscillator, and SPI flash which i will program by STM32F4 or similar processor and some dip switch for right config of clk, and boot mode.
    I just going to boot from SPI, and compile code for booting from external flash. That is what i figure from reading data-sheet ,

    i don't know will it work, and how much effort will be needed to blink single led (Tough start to work with ADSP).
    I don't have any other kit's or any knowledge about it.

    HPUSB ICE is a bit too expensive for student.

  • Hi,

          If you have an microcontroller with the SPI interface already, you can use the SPI slave boot mode option of the processor also to boot the processor from a host device. The host can control the DSP using SPI interface. We will be able to assist you in programming the processor.

    Please see below for some useful links for the documentation on ADSP-21488:

    http://www.analog.com/en/processors-dsp/sharc/products/manuals/resources/index.html

    http://www.analog.com/en/processors-dsp/sharc/products/application-notes/resources/index.html

    Code examples in VDSP++:

    C:\Program Files (x86)\Analog Devices\VisualDSP 5.0\214xx\Examples\ADSP-21489 EZ-Board

    Best Regards,

    Jeyanthi

  • I finally get some free time, so i am going to continue this project.

    I get 90 days trial for VisualDSP.

    Now question what kind of options i should choose to get hex file for SPI flash ?

    What else should be done to make it work ? (since i can't find any hex file)

  • Hi Kilohercas,

    VisualDSP++ creates a boot loadable program file (loader for short) and a corresponding *.LDR file is generated. Refer to the VisualDSP++ Loader and Utilities Manual for details. This manual is available from VisualDSP++ HELP, which you can access from within VisualDSP++ by selecting "Contents" from the Help menu. Once HELP is open navigate to the following location:

         'Contents' -> 'Manuals' -> 'Software Tool Manuals' -> 'Loader and Utilities Manual'

    Regards,

    Colin.

  • Hi Kilohercas,

    I can answer your tools-related question, pertaining to the Intel Hex format Loader file. This is organised into records that not only contain the boot stream, but also contain data about how the boot stream data needs to be processed. However you are programming your LDR file to the SPI flash, the LDR file needs to be parsed to extract the boot stream data from the Intel Hex LDR file. For example, our Flash Programmer Utility in VisualDSP++ and the Command Line Device Programmer in CrossCore Embedded Studio understand the Intel Hex format and will handle this parsing when presented with such a file.

    By contrast, a Binary format Loader File does not contain this same 'record' structure. It simply contains the Boot Stream, and can be programmed byte-for-byte to the Flash part, and can then be directly booted.

    If you are handling the programming of the Intel Hex Loader file to SPI flash by yourself (for example, perhaps you intend on receiving this file via UART or something similar), you would need to understand the Intel Hex format to be able to parse, and program, the LDR file.

    Detailed information on the different types of records are available in Appendix A of the Loader and Utilities manual. Basically, though, based on the example above, here's a colour-coded explanation:

    :020000040000FA

    This is an Extended Linear Address record, as indicated by the Record Type (0x04). It contains a Byte Count of 0x02, has an Adress of 0x0000, and an Offset Address of 0x0000. The checksum for this record is 0xFA

    :2000000000000000000000000000000000000000000000000000000000000000000091C08F

    This is a Data Record, as indicated by the Record Type of 0x00. It contains a Byte Count of 0x20, to be written to the target SPI Flash at Address 0x0000 (plus the offset address from the preceding Extended Linear Address Record, which was 0x0000). It's Checksum is 0x8F and it's payload is indicated in this color.

    :200020000804BE06000000007B0F000000007A0F00100000021400000000300F0000000078

    This is a Data Record, as indicated by the Record Type of 0x00. It contains a Byte Count of 0x20, to be written to the target SPI Flash at Address 0x0020 (plus the offset address from the preceding Extended Linear Address Record, which was 0x0000). It's Checksum is 0x78 and it's payload is indicated in this color.

    After processing these first three records, the content of your Flash, starting at address 0x00000000, should be:

    00000000000000000000000000000000000000000000000000000000000091C00804BE06000000007B0F000000007A0F00100000021400000000300F00000000

    Again, for more information take a look at the Loader and Utilities Manual. If you have your own code parsing the LDR file, you need to extract the Header (first 32-bits), Data (variable length) and Checksum (last 8 bits). Check the checksum is correct, then write the Data to the appropriate address based on the 'Address' field of the header, plus the 'Offset' of the last Extended Linear Address record.

    Someone from the Applications group should be able to answer your other questions.

    Regards,

    Craig.

    1. it looks like i can't find few things:
      1) in ADSP-21488 where boot SPI flash should connect ?
      by searching in schematics and datasheet i was able to find that for 176 LQFP package (not LQFP100), but will it work with my dsp ?
      DPI-P01 - MOSI
      DPI-P02 - MISO
      DPI-P03 - CLK
      DPI-P05 - CS
    2. How to format data to spi flash itself ?
      in. ldr file i get data like this:

      :020000040000FA
      :2000000000000000000000000000000000000000000000000000000000000000000091C08F
      :200020000804BE06000000007B0F000000007A0F00100000021400000000300F0000000078
      .....................................................................................................................................
      :200CF4000010089E0209089E8300089E0401101700000000089E810E071600000400BE0B05
      :080D14003E061200174C00001E
      ......................................................................................................................................
      :0C131C00000000000000000000000000C5
      :00000001FF
      So how to format it to SPI Flash ? M25P16 is 2M*8b, so i just write data from flash start, and that is it?

    3. PLL CLK divider: since i will use 25MHz, and i need 400MHz i just have to use 10b CLK setting (1:32) , but should i use lower, or any will work just fine ? Since i have PLL config in my main program, it will override jumper settings if i remember right ?
    4. TDI TDO TMS EMU can be left floating, just RESET should be pulled high ( with 100n capacitor to ground) and TRST and TCK pulled low for normal operation ?

    (Sorry for so many questions, it is hard so begin working with processors like that, and since i am making myself double side pcb for this processor and USB flash programmer with some help from STM32F103 i really don't want to have any problems in pcb design, since it lot of work to manufacture, and re-soldering processor with ground pad could kill it, and it's not that cheap)

    2

  • ok, i cross checked with ASCII format, and it looks like it is raw data, so i don't have to do any fancy programming in windows for txt file decode.

    Second problem:
    My first job will be to connect LCD to ADSP to make some benchmarks, and just learn to program it.
    LCD has 16b Intel I80 bus,
    For control signal  i am going to use flags, but again, can't find any data how to use Digital Applications Interface for 16b data bus.

    Can any one show example how to set 16b data to DAI ?
    So far i made labview exe program for sending data to STM32F103 to program flash, now only pcb is left

    .

  • Hi,

    Yes, the ASCII format has the same content as the Binary format, except that it's represented in ASCII rather than pure binary. It shouldn't need any extra processing.

    For your additional questions, as this thread is marked 'Answered' and the title of the thread doesn't match your latest questions, I would recommend starting a new thread for better visibility. Ideally, it's typically best to stick to a single topic per thread.

    Regards,

    Craig.

  • I will mark this thread as answered when i get my led blink program running from spi flash by using one of the flags

    ( and yes, i will start new thread)
    So far made designed pcb, write programs in C for flash programing via STM32F103 from USB, and made Labview program to send data from ldr file to my board, and by the end of this week i should get them running