Skip to content Skip to navigation

Connexions

You are here: Home » Content » Debugging and Troubleshooting in Code Composer

Navigation

Lenses

What is a lens?

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

This content is ...

Affiliated with (What does "Affiliated with" mean?)

This content is either by members of the organizations listed or about topics related to the organizations listed. Click each link to see a list of all content affiliated with the organization.

Also in these lenses

  • Lens for Engineering

    This module is included inLens: Lens for Engineering
    By: Sidney Burrus

    Click the "Lens for Engineering" link to see all content selected in this lens.

Recently Viewed

This feature requires Javascript to be enabled.

Tags

(What is a tag?)

These tags come from the endorsement, affiliation, and other lenses that include this content.
 

Debugging and Troubleshooting in Code Composer

Module by: Douglas L. Jones, Swaroop Appadwedula, Matthew Berry, Mark Haun, Dima Moussa, Daniel Sachs. E-mail the authors

Summary: This module explains debugging and troubleshooting strategies for Code Composer Studio.

Introduction

Code Composer provides a rich debugging environment that allows you to step through your code, set breakpoints, and examine registers as your code executes. This document provides a brief introduction to some of these debugging features.

Debugging Code

Controlling program flow

Breakpoints are points in the code where execution is stopped and control of the DSP is returned to the debugger, allowing you to view the contents of registers and memory. Breakpoints can be activated or deactivated by double-clicking on any line of code in the disassembly window.1

You may also want to step through your program code, executing one line at a time, to follow branches and watch memory change with the results of calculations. This can be done by choosing the "Step Into" or "Step Over" menu options from the "Debug" pull-down menu. (Unlike "Step Over," "Step Into" traces subroutine calls caused by "call" opcodes.)

Like most DSPs, the DSP we are using is a pipelined processor, which means that instructions execute in several stages over several clock cycles. Unfortunately, our debugger does not "flush" the pipeline of all current instructions when it halts your program; i.e., the DSP does not execute all remaining stages of instructions. As a consequence, when a program halts, the register values shown in the register and memory windows may not actually the last values written. Often, the values shown correspond to values written several cycles before the current instruction. If it is necessary to know the exact contents of the registers at any particular point in the program flow, simply insert three or more nop (no operation) instructions into your program after the instruction in question. Then, to debug, execute the instruction in question and the nop instructions that follow; this will flush the pipeline.

You can choose the "Run Free" option from the "Debug" pull-down menu to allow the your code to run freely, ignoring any breakpoints. The code will continue running until explicitly halted with the "Halt" command.

Note that stopping and restarting execution sometimes confuses the A/D and D/A converters on the six-channel surround-sound board. If this happens, the output will generally go to zero or become completely unrelated to the input signal. This can be fixed by simply resetting the DSP and starting your code from the beginning.

The bar on the left-hand side of the Code Composer Studio window contains shortcuts for many of the commands in the Debug menu.

Practice:

Practice setting breakpoints in your program code and single-stepping by setting a breakpoint after the WAITDATA call and tracing through the program flow for several iterations of the FIR filter code. What code does the WAITDATA call correspond to in the disassembly window?

Troubleshooting

The DSP boards can behave unexpectedly. If there is no output, try the following (from less to more drastic):

  • Use the Debug menu to halt and reset the DSP, verify that the PMST is set to 0xFFE0, reload the code, reset the DSP, and restart the code.
  • Press the "Reset" button on the DSP evaluation board, then use the Code Composer Studio menus to halt, reset the DSP, verify the PMST, reload, reset the DSP again, and restart your code.
  • Close Code Composer Studio, then power-cycle the DSP by unplugging power to the DSP board, waiting five seconds, and plugging it back in. Then restart Code Composer Studio. You will need to reset the PMST to 0xFFE0, then reload, reset the DSP, and execute your code.
If code does not load correctly, close Code Composer Studio and power-cycle the DSP.

If problems persist after power-cycling the DSP, ensure that the DSP board is functioning properly by executing previously verified code. Do not forget to set the PMST and to reset the DSP from the Code Composer Studio menu.

If you try all of these steps and still see problems, ask a teaching assistant for help.

Footnotes

  1. They can also be set by pressing F9 on a line in the source-file window. However, verify that the breakpoint appears at the corresponding location in the disassembly window if you do this; there have been problems with breakpoints being set inaccurately by this method in the past.

Content actions

Download module as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks