Forums

adsp 218x problem with hardware overlays

Started by Bernhard Kowol July 9, 2004
hi folks

for our current project we have an Analog 2187N running in full memory mode.
we must use DM overlays 0, 4 and 5 and also PM overlays 0, 4 and 5.

The program is a C/assembler mix developped with VisualDSP 3.5.

Switching the DM overlays works, also does the PM overlay switch, but only
when using the simulator.
When we use the emulator (218x EZICE) the programs stops at the first
instruction of a newly switched PM overlay 4 or 5.
The same behaviour occurs when running the board without ICE

e.g. running the following in non overlay area with pmovlay set to 0

call do_someroutine;        // currently in non overlay area
.......
do_someroutine:        // still in non overlay area
    pmovlay = 4;        // switch to overlay 4
    jump someroutine;        // lies in overlay 4

.... and in overlay 4

someroutine:
    << stops here >>


If I just enter  the number 4  in the pmovlay register directly in the IDE,
I can see the code switch in PM address 0x2000 and above only during the
simulator session, in an emulator session there are only zeroes.

Any idea for this different behaviour?

thanks in advance
Bernhard


problem solved!
if you write software for a 2187 processor, use a 2187 and not a 2185
instead!!!! SHIT HAPPENS!

thanks to everyone who spent a minute of thinking on my posting

Bernhard Kowol <einerdinger@web.de> schrieb in im Newsbeitrag:
2l8aqvFa1tvkU1@uni-berlin.de...
> hi folks > > for our current project we have an Analog 2187N running in full memory
mode.
> we must use DM overlays 0, 4 and 5 and also PM overlays 0, 4 and 5. > > The program is a C/assembler mix developped with VisualDSP 3.5. > > Switching the DM overlays works, also does the PM overlay switch, but only > when using the simulator. > When we use the emulator (218x EZICE) the programs stops at the first > instruction of a newly switched PM overlay 4 or 5. > The same behaviour occurs when running the board without ICE > > e.g. running the following in non overlay area with pmovlay set to 0 > > call do_someroutine; // currently in non overlay area > ....... > do_someroutine: // still in non overlay area > pmovlay = 4; // switch to overlay 4 > jump someroutine; // lies in overlay 4 > > .... and in overlay 4 > > someroutine: > << stops here >> > > > If I just enter the number 4 in the pmovlay register directly in the
IDE,
> I can see the code switch in PM address 0x2000 and above only during the > simulator session, in an emulator session there are only zeroes. > > Any idea for this different behaviour? > > thanks in advance > Bernhard > >