• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Embedded Software » StarterWare » StarterWare forum » Debug both ARM and DSP together
Share
StarterWare
  • Forum
Options
  • Subscribe via RSS

Forums

Debug both ARM and DSP together

This question is answered
Duy-Ky Nguyen88210
Posted by Duy-Ky Nguyen88210
on Mar 02 2012 11:45 AM
Expert1350 points

Hello,

I'm able to use bootloader to run both ARM and DSP binary in stand-alone mode in a very simple way where uartEcho for ARM and LED blinking for DSP

I'm able to use bootloader to run ONLY my "production" binary in ARM (about 32 KB)

However, once I combine ARM "production" with DSP blinking LED, the bootloader runs ONLY DSP with LED blinking and stops ARM where there's no greeting message on serial console from ARM

My questions are

1) Is there any rule required in running both ARM and DSP ?

2) How to debug both ARM and DSP to see where it hangs ?

Thanks,

~Duy-Ky

Report Abuse
  • Reply
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
All Replies
  • Duy-Ky Nguyen88210
    Posted by Duy-Ky Nguyen88210
    on Mar 02 2012 13:12 PM
    Expert1350 points

    Is there anything to do with memory usage.

    My ARM link script is

    //-stack  0x8000                             /* SOFTWARE STACK SIZE           */
    -stack  0xF000                             /* SOFTWARE STACK SIZE           */
    -heap   0x2000                             /* HEAP AREA SIZE                */
    -e Entry

    /* SPECIFY THE SYSTEM MEMORY MAP */

    MEMORY
    {
    //        DDR_MEM        : org = 0xC1080000   len = 0x02F7FFFF     /* RAM 0xC1080000 ~ C3FFFFFF : C4000000*/
            DDR_MEM        : org = 0xC0000000   len = 0x04000000     /* RAM 0xC1080000 ~ C3FFFFFF : C4000000*/
    }

    /* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */

    SECTIONS
    {
        .init      : {
                     system_config.lib<init.obj> (.text)
                   } load > 0xC2000000

        .text    : load > DDR_MEM              /* CODE                              */
        .data    : load    > DDR_MEM
        .bss     : load > DDR_MEM              /* GLOBAL & STATIC VARS              */
                        RUN_START(bss_start),
                        RUN_END(bss_end)
        .const   : load > DDR_MEM              /* SOFTWARE SYSTEM STACK             */
        .cinit   : load > DDR_MEM              /* SOFTWARE SYSTEM STACK             */
    //    .stack   : load > 0xC3FF7FFC           /* SOFTWARE SYSTEM STACK  C4000000 - 8004           */
        .stack   : load > 0xC3FF0FFC           /* SOFTWARE SYSTEM STACK   C4000000 - F000          */

    }

    while my DSP one is

    -stack 0x1000
    -heap 0x1000

    // ============================================================================
    //                         Specify the System Memory Map
    // ============================================================================
    MEMORY
    {
        L1P:    o = 0x11E00000        l = 0x00008000
        L1D:    o = 0x11F00000        l = 0x00008000
        L2:     o = 0x11800000        l = 0x00040000
        DDR2:   o = 0xC0000000        l = 0x08000000
    }

    // ============================================================================
    //                 Specify the Sections Allocation into Memory
    // ============================================================================
    SECTIONS
    {
        .cinit        >        DDR2               // Initialization Tables
        .pinit        >        DDR2               // Constructor Tables
        .init_array   >        DDR2               //
        .binit        >        DDR2               // Boot Tables
        .const        >        DDR2               // Constant Data
        .switch       >        DDR2               // Jump Tables
        .text         >        DDR2               // Executable Code
        .text:_c_int00: align=1024 > DDR2         // Entrypoint
        
        GROUP (NEARDP_DATA)                       // group near data
        {
           .neardata
           .rodata
           .bss                                   // note: removed fill = 0
        }             >        DDR2
        .far: fill = 0x0, load > DDR2             // Far Global & Static Variables
        .fardata      >        DDR2               // Far RW Data
        .stack        >        DDR2               // Software System Stack
        .sysmem       >        DDR2               // Dynamic Memory Allocation Area
        
        .cio          >        DDR2               // C I/O Buffer
        .vecs         >        DDR2               // Interrupt Vectors
    }

    Thanks,

    ~Duy-Ky

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Joe Coombs
    Posted by Joe Coombs
    on Mar 21 2012 16:25 PM
    Verified Answer
    Verified by Duy-Ky Nguyen88210
    Expert8845 points

    Duy-Ky,

    It looks like your ARM and DSP applications are built to use the same region in shared memory (i.e. 0xC0000000), so that is probably why the system doesn't work correctly.  I recommend moving either the ARM or the DSP later in DDR memory to prevent a collision.  You should check your .map files to be sure that the ARM and DSP applications don't overlap.

    Hope this helps.

     


    Please click the  Verify Answer  button on this post if it answers your question.

     

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Al B
    Posted by Al B
    on Mar 23 2012 13:49 PM
    Prodigy615 points

    We suggest the consultant to go through the live or online training details below to get more comfortable with the ARM + DSP Environment:

    -          Live Training: http://focus.ti.com/docs/training/catalog/events/event.jhtml?sku=4DW102644

    -          Online Training: http://processors.wiki.ti.com/index.php/OMAP%E2%84%A2/DaVinci%E2%84%A2_System_Integration_using_Linux_Workshop

     -          http://processors.wiki.ti.com/index.php/Example_application_using_DSP_Link_on_OMAPL1x

     

    Also,

    From the threads shared it seems like you are using Starterware on the ARM side and BIOS on the DSP side (they have SATA RTFS queries etc).  If you don’t plan to use DSPLINK and Linux etc, the other option to look at would be StarterWare also includes three example applications for the IPCLite module.  (IPCLite would be used for communication between the ARM and DSP after boot.)

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
TI E2E™ Community
  • Support Forums
  • Blogs
  • Videos
  • Groups
  • Site Support & Feedback
  • Settings
TI E2E™ Community Groups
  • TI University Program
  • Make the Switch
  • Microcontroller Projects
  • Motor Drive & Control
Other Communities
  • Deyisupport
  • Designsomething.org
  • beagleboard.org
  • TI on Element 14
  • TI on TechXchangeSM
Other Technical & Support Resources
  • WEBENCH® Design Center
  • Product Information Centers
  • Technical Documents
  • TI Design Network
  • TI Technical Articles
  • TI Training

All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
embedded processors, along with software, tools and the industry’s largest sales/support staff.

© Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy Policy | Terms of Use