Forums

do loop execution corruption

Started by drea...@aptx.com December 11, 2007
Hi, I'm writing assembly code for the DSP56371 but find that execution of my do loops loop counts are intermittently corrupted. I'm running the do loop code in the background, have several isr s running in the foreground and my stack has been extended into RAM. I've debug code to break when the loop count is out of range and when that happens, I see that the
it has assumed a value equal to or at least close to the magnitude of the loop address value. I've been through all the loop restrictions and DSP56371 errata sheet several times now and believe I've removed all violations but still my execution sticks in different hardware loops. Has anyone seen a similar problem before? How did you sort it out?
Hi,
I've written several assembly codes for this processor and I've never had that problem.
I wouldn't put the blame on the processor.
Advice: comment all the routines and then uncomment every routine one by one. May be you're overwriting some register.
Why do you send us a little code with the problem?

Regards,
Pablo
Hi, I'm writing assembly code for the DSP56371 but find that execution of my do loops loop counts are intermittently corrupted. I'm running the do loop code in the background, have several isr s running in the foreground and my stack has been extended into RAM. I've debug code to break when the loop count is out of range and when that happens, I see that the
>it has assumed a value equal to or at least close to the magnitude of the loop address value. I've been through all the loop restrictions and DSP56371 errata sheet several times now and believe I've removed all violations but still my execution sticks in different hardware loops. Has anyone seen a similar problem before? How did you sort it out?
Hi there,

Did you ever solve this problem?

BR,
Egholm

>> Hi, I'm writing assembly code for the DSP56371 but find that
>> execution of my do loops loop counts are intermittently
>> corrupted. I'm running the do loop code in the background, have
>> several isr s running in the foreground and my stack has been
>> extended into RAM. I've debug code to break when the loop count
>> is out of range and when that happens, I see that the >it has
>> assumed a value equal to or at least close to the magnitude of
>> the loop address value. I've been through all the loop
>> restrictions and DSP56371 errata sheet several times now and
>> believe I've removed all violations but still my execution sticks
>> in different hardware loops. Has anyone seen a similar problem
>> before? How did you sort it out?

> I've written several assembly codes for this processor and I've
> never had that problem. I wouldn't put the blame on the
> processor. Advice: comment all the routines and then uncomment
> every routine one by one. May be you're overwriting some
> register. Why do you send us a little code with the problem?
> Regards,
> Pablo

I suggest you to disable all the interrupts just before you start execution of your do loop
and enable interrupts after completion of the loop. This way you can make it very sure that,
is it the other ISRs causing the problem or your loop code has an issue.

It would be good, if you can share your source code with us. Probabily, we can go through
your code and then we can tell you what might be wrong.

Regards,
Sankar
On Fri, 19 Sep 2008 d...@egmail.dk wrote :
>Hi there,
>
>Did you ever solve this problem?
>
>BR,
> Egholm
>
> >> Hi, I'm writing assembly code for the DSP56371 but find that
> >> execution of my do loops loop counts are intermittently
> >> corrupted. I'm running the do loop code in the background, have
> >> several isr s running in the foreground and my stack has been
> >> extended into RAM. I've debug code to break when the loop count
> >> is out of range and when that happens, I see that the >it has
> >> assumed a value equal to or at least close to the magnitude of
> >> the loop address value. I've been through all the loop
> >> restrictions and DSP56371 errata sheet several times now and
> >> believe I've removed all violations but still my execution sticks
> >> in different hardware loops. Has anyone seen a similar problem
> >> before? How did you sort it out?
>
> > I've written several assembly codes for this processor and I've
> > never had that problem. I wouldn't put the blame on the
> > processor. Advice: comment all the routines and then uncomment
> > every routine one by one. May be you're overwriting some
> > register. Why do you send us a little code with the problem?
> > Regards,
> > Pablo
Hi Sankar,

On Fri, Sep 19, 2008 at 6:17 PM, sankar murmu
wrote:
> I suggest you to disable all the interrupts just before you start
> execution of your do loop and enable interrupts after completion
> of the loop. This way you can make it very sure that, is it the
> other ISRs causing the problem or your loop code has an issue.

Well, it wasn't exactly my problem in the first place - the problem
description just matched mine quite well. :-)
But after reading the arratas of the 56371 - more specifically the
ED33 regarding HW loops - I've done somewhat what you suggested -
"wrapped" my HW-loops in a "disabled"-block.
One problem, however, is that the C-compiler generates HW loops
although requested not to (known bug) - so I need inspecting the .lst
files manually to find the places to do so.

So, now I just have to sit back and wait to see if the stability has
improved...
Meanwhile I'll try to create a small example to recreate the problem
to verify this was actually the problem in the first place!

Thanks,
Egholm
> On Fri, 19 Sep 2008 d...@egmail.dk wrote :
>
>>Hi there,
>>
>>Did you ever solve this problem?
>>
>>BR,
>> Egholm
>>
>> >> Hi, I'm writing assembly code for the DSP56371 but find that
>> >> execution of my do loops loop counts are intermittently
>> >> corrupted. I'm running the do loop code in the background, have
>> >> several isr s running in the foreground and my stack has been
>> >> extended into RAM. I've debug code to break when the loop count
>> >> is out of range and when that happens, I see that the >it has
>> >> assumed a value equal to or at least close to the magnitude of
>> >> the loop address value. I've been through all the loop
>> >> restrictions and DSP56371 errata sheet several times now and
>> >> believe I've removed all violations but still my execution
sticks
>> >> in different hardware loops. Has anyone seen a similar problem
>> >> before? How did you sort it out?
>>
>> > I've written several assembly codes for this processor and I've
>> > never had that problem. I wouldn't put the blame on the
>> > processor. Advice: comment all the routines and then uncomment
>> > every routine one by one. May be you're overwriting some
>> > register. Why do you send us a little code with the problem?
>> > Regards,
>> > Pablo