Help on ADSP-21489 firmware update via RS-232


We are looking for some assistance with adding the ability to update our

ADSP-21489 firmware via RS-232. The fundamentals of what we want to do is

discussed in Application Note EE-345, and we have played around with this a

little bit, but never got it to work completely. We can continue to puzzle

through this ourselves, but we'd rather find a consultant who can help add

this ability into our existing software and we'll be happy to pay someone to

help in this regard.

If you have experience in this area and have some extra time on your hands,

and want to earn some extra money in your pocket, please contact me.

(Ideally the forum has some private messaging system, otherwise you could

leave an email address. Let me know your thoughts...)

Thank you,


  • Hi Marc,

    We simply implemented this logic:

    1. Enter update mode

    The host sends #u* to the DSP. The host waits for confirm string #u0*. The DSP enters update mode, ignoring other commands unrelated to the process.

    2. Erase flash command

    The host sends @E* to the DSP. The DSP erases the first a few sectors (for code). Data sectors are not affected. After finished, the DSP returns @u0* if succeed, @u1* if some error occurs, #u2* if operation timeout (10s). So the host can be able to proceed.

    3. Send data

    The host sends the data line by line from the hex ldr file in the following format:

    @:[hex line]*

    the DSP proceed the addressing and check sum of the line and if correct, write the data into the addresses. It returns @u0* for succeed, @u1* for fail. The host can re-send the failed line again.

    this will be sent line by line until the EOF of the file. And then the DSP exits the update mode.

    The user can update again without power cycling, in case he sends a wrong file.

    4. Time out

    If the DSP did not receive any command or data for longer than a certain time (10s), it will send an warning #u2* and exit the update mode. The host could show error messages and the user can try again.

    The best method is loading the whole ldr into memory, check the integrity and then flash it. Or write a loader. Our method is just a simple lazy one for emergency field debugging..

    Hope this helps.


  • 0
    •  Analog Employees 
    on Oct 4, 2013 11:46 AM over 7 years ago

    Hi Marc,

    Regarding “The fundamentals of what we want to do is discussed in Application Note EE-345, and we have played around with this a little bit, but never got it to work completely.”

    >> Could you please explain what kind of issue are you facing in using the example codes provided along with Application Note EE-345 for ADSP-21489 processor?

    Kindly provide more information regarding this so that we can assist you better with the issue.



  • Hi Harshit,

    Actually, we are trying to do this firmware upgrade through UART for serial Flash on the ADSP-21489.

    We have made a custom board with the ADSP-21489 and the code is loaded on the Flash M25P16. We have loaded it through the Flash programming to on VisualDSP++.

    Now, the goal is to upgrade this flash memory through UART, because there will be a software which communicates with the board and allows to update the firmware if available.

    The Application Note EE-345 provides example for ADSP-21469. I saw all the threads concerning migration  to ADSP-21489 but I didn't get a clear example or explanation.

    I don't know what to modify to get it work on ADSP-21489. This thread provides an example ( but for Parallel upgrade.

    This application note has been released on October 2009. Is there any update of this application note that could provide an example for ADSP-21489?

    I would really appreciate your help on this,

    Best regards,

  • 0
    •  Analog Employees 
    on Oct 28, 2013 3:52 PM over 7 years ago

    Hi Marc,

    Sorry for the delay in response.

    In order to port the code written for ADSP-21469 processor present in the Application Note, you may have to make the following changes for it to work for ADSP-21489 processor:

    1. Make sure that you generate a LDF file corresponding to ADSP-21489 processor.
    2. Change your project option to ADSP-21489 processor.
    3. You may have to change the PLL initialization code for ADSP-21489 processor.
    4. Also replace the DDR2 initialization code for ADSP-21469 processor with SDRAM initialization code for ADSP-21489 processor.

    The initialization code for ADSP-21489 processor can be taken from any of the example codes present in the directory below:

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

    When you try to make all the above changes and build the code, then please let me know what error messages do you encounter, so that we can look into it and assist you to resolve it.

    You would  also like to go through following forum threads:


    Please let me know in case of any further queries.



  • I ported the "SSL with GUI" project from EE-345 to work with the ADSP-21489, and tested it on a 21489 EZ-KIT Lite with the Power On Self Test example. Marc has also tested it successfully on his target, and looks to be working correctly.

    I also hit the same issue as this customer using the GUI on Windows 7 x64, so copied MisterDSPs code from this thread and adapted it to work with a Binary LDR file (see MisterDSPs original post for code to work with ASCII ldr files). As with MisterDSPs post this uses the GPL rs232 library available from here.

    Attached are two projects - the 21489 second stage loader for VisualDSP++, and the uart Upload project which was build with Eclipse CDT.