This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RTOS/AWR1642: How to load DSS_app

Part Number: AWR1642

Tool/software: TI-RTOS

There are two project called DSS_PBL and DSS_app  , code of DSS_app is the same as the test of mailbox ( test_mss_dss_msg_exchange)  , code of DSS_PBL  is as follows

the function of DSS_PBL is jumping to 0x007E1000 , code of DSS_PBL is stored in 0x007E0000 - 0x007E1000  , code of DSS_app is stored in 0x007E1000- 0x007E1000 + 0x3f000 , like follows

and I save it by save memory when Debug , before run the DSS_PBL , I use load memory to store the DSS_app code in 0x007E1000- 0x007E1000 + 0x3f000 , then the DSS_PBL  jump to 0x007E1000 to run DSS_app .

Is there any problem to load DSS_app in this way , because I found the DSS_app run error . when the the MSS is running and DSS_PBL load the DSS_APP to run   ,  the console show "DSS : Error . Internal stats failed" in this position

  • It is difficult to say what is happening, or if the function is being properly executed.  Why do you not link them together and let the linker resolve the addresses?

    Perhaps a more proper way to do something like this is to create a separate code section in your linker .cmd file that is the same as .text:

    PROG_RAM (RX) : origin=0x00000100 length=0x0001FF00

    .text    : {}  >   PROG_RAM ALIGN(16)

    myCodeSec:    >   PROG_RAM ALIGN(16)

    Then in your code use a pragma to specify that a function goes in this section:

    #pragma CODE_SECTION(my_funct, "myCodeSec")

    void my_funct(void)

    {

    }

    You could also create a separate MEMORY region for your new code section so it will be at a specific address.

      -dave

  • This is an experiment to verify that DSS program  is possible to upgrade , because AWR1642 has bootloader in ROM , if I want update the DSS program via CAN , I can only make another DSS_PBL to load DSS_app  base on the bootloader in ROM. But now , I can not load the DSS program in this way , or could you tell me another way to load DSS program when the bootloader in ROM can't be deleted .

  • I think you may need a simpler example.  The mailbox test may be failing because all the required drivers have not been initialized as they are when the test runs normally.  The first step is to verify that the code at 0x007E1000 is called correctly (i.e. is the stack pointer still valid?) and that you can execute the code correctly.  Next, you can try a simpler example like blinking the user LED (DS3).

    But you are correct, the bootloader expects to load code from QSPI flash and jump to it once it completes initialization.

  • I've tried simple example from the beginning , and the code at 0x007E1000 was called correctly , I think some problem happened in the synchronization of DSS and BSS .
  • Are you also running the MSS application?  It must be running for successful communication.  If so, you may try performing all mmWave driver/control initialization in the code that is called (the code at 0x007e1000).