'PIC ICD. Beware aliased memory'
|James Paul wrote:
> What Mike says makes sense, but I cannot argue one way or the other
> because I haven't tried it. I've only used the F877 to emulate
> other processors. I try to get the memory placement as close as
> possible to the chip I'm trying to emulate. And when I do emulate
> a lower processor, I limit my memory usage to the amount on the
> processor I'm emulating. This only makes sense and is basically
> what I stated in my original post. And that is to use only the
> peripheral modules that the processor you are trying to emulate on
> the 877. And this includes memory. I thought that went without
> saying. I guess not. So if you are emulating a lower part that
Except that you forgot that the 16C87x parts alias the top part of
memory into the lower page (F0-FF,170-17F,1F0-1FF =>70-7F) while the
16Cxx parts do not.
If your 16Cxx code uses F0-FF, you're in for a nasty surprise
when you try to emulate it on 16C87x parts.
If you take advantage of this aliasing (great way to save bank switching
in ISRs) , then your code breaks when finally written to the 'lower'
> has, say, 1K of memory, then on the 877, don't use more than 1K of
> Granted, my method does not give a 100% emulation of the other parts,
> but it is close enough that I can usually develop my code and get it
> to work in the target processor with very little further debugging.
Yes, as long as you remember the aliasing. You can't use that top 16
bytes of RAM for anything if you want transparent cross device
Robert Rolf wrote:
> Except that you forgot that the 16C87x parts alias the top part of
> memory into the lower page (F0-FF,170-17F,1F0-1FF =>70-7F) while the
> 16Cxx parts do not.
16F877/6/2/1/0 do 16F874/3 do not.
More... (looser matching)
- Last day of these posts
- In 2000
, 2001 only
- New search...