Hello,
I have been trying to debug a dsplink application using Code Composer Studio. I have implemented the DSPLINK IPC minimal control scenario with just the PROC and NOTIFY modules linked in. My default DSP boot mode allows the ARM to start execution on DSP with a call to PROC_start. In order to connect to Code Composer Studio, I follow the steps outlined in: http://processors.wiki.ti.com/index.php/Debugging_the_DSP_side_of_a_DSPLink_application_on_OMAP_using_CCS
When I execute the application, the application hangs after PROC_start. I see that PROC_load succeeded, but PROC_start never returns. So, on the ARM side, I never get to the point where I see the message :
"Hit Enter to continue...\n"
This problem goes away if I take out the infinite loop on the dsp side. But, then when I connect to dsp core from Code Composer Studio some
initialization has already taken place on the dsp side and I don't get the initial state of the dsp. I know that a possible solution is to change
the boot mode of the dsp. The challenges of that option are:
->For production, we have to go with the default boot mode so that ARM can control the dsplink. Even though I would use the same versions
of BIOS, XDCtools and compiler, and the same memory map and bios configuration for development for both boot modes, we do not wish to develop in the
external/JTAG control/boot mode. The prototype boards we use do not have switches to change boot mode so we would change the dsplink shared memory configuration file
to change the DSP boot mode. It would be helpful to know what TI has to say about developing in the two different boot modes. I know the effect on the PROC API
(from dsplink documentation.) I am interested in knowing about some problems I might encounter if I use external boot mode for earlier stages
of development and changing to the default boot mode in a later stage.
More importantly, if using the default boot mode, how can I debug a dsplink application correctly using CCS? Clearly the hint on the wiki page is not working for us.
I was thinking of a generic sleep function to waste time in dsp main before I connect to dsp through CCS and start the initialization. I know there is TSK_sleep
but it leads to an MMU fault as soon as I connect to dsp through CCS. I am still not sure about the connection between the two. If I use a loop that performs and
multiplication for a long time, I face the same situation as with the infinite loop from the wiki page. Application hangs after PROC_start.
I hope someone can shed light on why PROC_start fails if there is an infinite loop / any loop in dsp main.c (at the location mentioned in
the wiki page above). I will start exploring proc.c to see if I can find a clue. Thank you in advance for your time.
Regards
RH