DSPRelated.com
Forums

CodeWarrior 5.1 Issues

Started by Litinas, Terry August 27, 2003
Hi All,

I have recently upgraded from CodeWarrior 5.0.5 to 5.1.1 and SDK 2.5 to 3.0
and wanted to share some of my experience as well as ask a question of you
all.

First, I did not create new project files and drag my source files into them
because there are close to twenty sub project files in this project. When
each was opened in CodeWarrior 5.1.1, I was given the option of converting
them for the new version which I did. In order to compile error free I had
to go to
Edit--->Target Settings--->Language Settings--->C/C++ Language and uncheck
"Enable bool support" and "Enable wchar_c Support". In using the debugger I have found a few strange things.

Data--->View Memory from the menu did not display a memory window. I tried
many times. When I tried the short cut keys (Alt+Shift+M) a memory window
was displayed although I could not get the menu to work. After displaying
the memory window once with Alt+Shift+M, the menu also works every time.
Don't know why, but it works.

I know this has been discussed already but I have to comment on the "Swap
Endian" feature. First, I don't understand what big or little endian has to
do with the way a 16 bit word is handled by a 16 bit processor like those in
the 56F80x family. Any time memory is displayed I would expect to see bit 15
as the msb and bit 0 as the lsb just as the dsp does. I tried to enable the
"Swap Endian" feature on a couple memory windows yesterday and found it to
have no effect - the displayed window did not change. Today it seems to swap
bits 15-8 with bits 7-0 in each 16 bit word. I'm not sure what I did to make
it work. I do find however that enabling the feature puts the display in
sync with what is really in memory or peripheral registers. Again, I'm not
sure why this is an option.

Now...On to my question:
I am having trouble with the Stack Window in the debugger. I have found it
not to display the correct labels to track the path to the current Program
Counter address. When I set the display window to "View Mixed" to see the
actual jsr instructions I see the current PC put on the stack followed by
the Status Register and the PC jumps to the jsr address. At this point the
label in the stack window which should be the stacked PC address is instead
the stacked SR value used as an address. In other words it looks like the
debugger is one word off when it pulls the return address off the stack for
display. Has anyone experienced this problem? I can't imagine what I could
have done to cause this.
Any advice would be greatly appreciated. Thanks,

Terry Litinas
Project Engineer
ITW Balance Engineering
1731 Thorncroft
Troy, Mi. 48084

Ph: (248)643-2876
Fx: (248)643-2888



I can only comment on the two issues below.

Older projects apparently have those options checked but since there was no
actual
functionality behind the offending check boxes, it did not matter. I imagine
that in
the upgrade these were not turned off automatically when a project is upgraded
because it either was overlooked or was too much extra work. I'd prefer the
lack of
checking rather than having to update the checkboxes ever time a project is
upgraded.

As far as the endian swap business, the IDE code base is shared amongst all the
different platforms CodeWarrior supports. Since the desktop versions make up
the
bulk of the users/sales/demand, the default endian mode is wrong for the
DSP56800s. (Yet another manifestation of Wintel marketshare...) Pretty
annoying, but
once you know it, you automatically do the swap when you open a new memory
window.

I've never seen any of the non-working menu issues you've seen.

--david

--- In , "Litinas, Terry" <tlitinas@i...> wrote:
> First, I did not create new project files and drag my source files into them
> because there are close to twenty sub project files in this project. When
> each was opened in CodeWarrior 5.1.1, I was given the option of converting
> them for the new version which I did. In order to compile error free I had
> to go to
> Edit--->Target Settings--->Language Settings--->C/C++ Language and uncheck
> "Enable bool support" and "Enable wchar_c Support". > In using the debugger I have found a few strange things.
>
> Data--->View Memory from the menu did not display a memory window. I tried
> many times. When I tried the short cut keys (Alt+Shift+M) a memory window
> was displayed although I could not get the menu to work. After displaying
> the memory window once with Alt+Shift+M, the menu also works every time.
> Don't know why, but it works.
>
> I know this has been discussed already but I have to comment on the "Swap
> Endian" feature. First, I don't understand what big or little endian has to
> do with the way a 16 bit word is handled by a 16 bit processor like those in
> the 56F80x family. Any time memory is displayed I would expect to see bit 15
> as the msb and bit 0 as the lsb just as the dsp does. I tried to enable the
> "Swap Endian" feature on a couple memory windows yesterday and found it to
> have no effect - the displayed window did not change. Today it seems to swap
> bits 15-8 with bits 7-0 in each 16 bit word. I'm not sure what I did to make
> it work. I do find however that enabling the feature puts the display in
> sync with what is really in memory or peripheral registers. Again, I'm not
> sure why this is an option.




David/Terry,
According to Targeting_DSP56800 Manual it states:
The following options are not applicable to the DSP56800 compiler.
Disable the options at all times:
Force C++ compilation
ISO C++ Template Parser
Enable C99 Extensions
Enable Objective C
Legacy for-scoping
Enable C++ Exceptions
Enable RTTI
Enable bool Support
Enable wchar_t Support
Multi-Byte Aware
EC++ Compatibility Mode
Pool Strings
The stationary on CodeWarrior for DSPv5.0 had this enabled and when
you convert it to CodeWarrior for DSPv5.1 it is still enabled but
now it gives you a warning that it unsupported which is correct.

There are several ways to view memory in the debugger window. In
the source window you do a right-click and select 'View Memory'.
You can also select the option 'View Memory As' when you right-click
on the source window. You can also go to Data --> View Memory. You
can also select Alt+Shift+M. All these options work. I have not
seen what you are describing but each one of the options that I
described above works. - Irene

--- In , "David" <beanfranks@y...> wrote:
> I can only comment on the two issues below.
>
> Older projects apparently have those options checked but since
there was no actual
> functionality behind the offending check boxes, it did not
matter. I imagine that in
> the upgrade these were not turned off automatically when a project
is upgraded
> because it either was overlooked or was too much extra work. I'd
prefer the lack of
> checking rather than having to update the checkboxes ever time a
project is
> upgraded.
>
> As far as the endian swap business, the IDE code base is shared
amongst all the
> different platforms CodeWarrior supports. Since the desktop
versions make up the
> bulk of the users/sales/demand, the default endian mode is wrong
for the
> DSP56800s. (Yet another manifestation of Wintel marketshare...)
Pretty annoying, but
> once you know it, you automatically do the swap when you open a
new memory
> window.
>
> I've never seen any of the non-working menu issues you've seen.
>
> --david
>
> --- In , "Litinas, Terry"
<tlitinas@i...> wrote:
> > First, I did not create new project files and drag my source
files into them
> > because there are close to twenty sub project files in this
project. When
> > each was opened in CodeWarrior 5.1.1, I was given the option of
converting
> > them for the new version which I did. In order to compile error
free I had
> > to go to
> > Edit--->Target Settings--->Language Settings--->C/C++ Language
and uncheck
> > "Enable bool support" and "Enable wchar_c Support".
> >
> >
> > In using the debugger I have found a few strange things.
> >
> > Data--->View Memory from the menu did not display a memory
window. I tried
> > many times. When I tried the short cut keys (Alt+Shift+M) a
memory window
> > was displayed although I could not get the menu to work. After
displaying
> > the memory window once with Alt+Shift+M, the menu also works
every time.
> > Don't know why, but it works.
> >
> > I know this has been discussed already but I have to comment on
the "Swap
> > Endian" feature. First, I don't understand what big or little
endian has to
> > do with the way a 16 bit word is handled by a 16 bit processor
like those in
> > the 56F80x family. Any time memory is displayed I would expect
to see bit 15
> > as the msb and bit 0 as the lsb just as the dsp does. I tried to
enable the
> > "Swap Endian" feature on a couple memory windows yesterday and
found it to
> > have no effect - the displayed window did not change. Today it
seems to swap
> > bits 15-8 with bits 7-0 in each 16 bit word. I'm not sure what I
did to make
> > it work. I do find however that enabling the feature puts the
display in
> > sync with what is really in memory or peripheral registers.
Again, I'm not
> > sure why this is an option.




David/Terry,
According to Targeting_DSP56800 Manual it states:
The following options are not applicable to the DSP56800 compiler.
Disable the options at all times:
Force C++ compilation
ISO C++ Template Parser
Enable C99 Extensions
Enable Objective C
Legacy for-scoping
Enable C++ Exceptions
Enable RTTI
Enable bool Support
Enable wchar_t Support
Multi-Byte Aware
EC++ Compatibility Mode
Pool Strings
The stationary on CodeWarrior for DSPv5.0 had this enabled and when
you convert it to CodeWarrior for DSPv5.1 it is still enabled but
now it gives you a warning that it unsupported which is correct.

There are several ways to view memory in the debugger window. In
the source window you do a right-click and select 'View Memory'.
You can also select the option 'View Memory As' when you right-click
on the source window. You can also go to Data --> View Memory. You
can also select Alt+Shift+M. All these options work. I have not
seen what you are describing but each one of the options that I
described above works. - Irene

--- In , "David" <beanfranks@y...> wrote:
> I can only comment on the two issues below.
>
> Older projects apparently have those options checked but since
there was no actual
> functionality behind the offending check boxes, it did not
matter. I imagine that in
> the upgrade these were not turned off automatically when a project
is upgraded
> because it either was overlooked or was too much extra work. I'd
prefer the lack of
> checking rather than having to update the checkboxes ever time a
project is
> upgraded.
>
> As far as the endian swap business, the IDE code base is shared
amongst all the
> different platforms CodeWarrior supports. Since the desktop
versions make up the
> bulk of the users/sales/demand, the default endian mode is wrong
for the
> DSP56800s. (Yet another manifestation of Wintel marketshare...)
Pretty annoying, but
> once you know it, you automatically do the swap when you open a
new memory
> window.
>
> I've never seen any of the non-working menu issues you've seen.
>
> --david
>
> --- In , "Litinas, Terry"
<tlitinas@i...> wrote:
> > First, I did not create new project files and drag my source
files into them
> > because there are close to twenty sub project files in this
project. When
> > each was opened in CodeWarrior 5.1.1, I was given the option of
converting
> > them for the new version which I did. In order to compile error
free I had
> > to go to
> > Edit--->Target Settings--->Language Settings--->C/C++ Language
and uncheck
> > "Enable bool support" and "Enable wchar_c Support".
> >
> >
> > In using the debugger I have found a few strange things.
> >
> > Data--->View Memory from the menu did not display a memory
window. I tried
> > many times. When I tried the short cut keys (Alt+Shift+M) a
memory window
> > was displayed although I could not get the menu to work. After
displaying
> > the memory window once with Alt+Shift+M, the menu also works
every time.
> > Don't know why, but it works.
> >
> > I know this has been discussed already but I have to comment on
the "Swap
> > Endian" feature. First, I don't understand what big or little
endian has to
> > do with the way a 16 bit word is handled by a 16 bit processor
like those in
> > the 56F80x family. Any time memory is displayed I would expect
to see bit 15
> > as the msb and bit 0 as the lsb just as the dsp does. I tried to
enable the
> > "Swap Endian" feature on a couple memory windows yesterday and
found it to
> > have no effect - the displayed window did not change. Today it
seems to swap
> > bits 15-8 with bits 7-0 in each 16 bit word. I'm not sure what I
did to make
> > it work. I do find however that enabling the feature puts the
display in
> > sync with what is really in memory or peripheral registers.
Again, I'm not
> > sure why this is an option.