This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AGSI DLL and banking

Hi,

I've been following the example in App Note 154 to develop a simulator DLL.
The result works fine with "simple and small" (un-banked) target firmware (uP is SDA5550).
The problem is, when I have to use code banking in the target firmware, I cannot get my AGSI DLL to work with banking. Keil debugger always show "Access Violation" on the first jumping (LJMP) to other bank during initialization (even before going to main() ).

I checked the SFR PC always be in "C:xxxx", it never change to "B0:xxxx" or "B1:xxxx" as it should be.
However, the banked firmware works fine on a real system (with real uP onboard) without AGSI DLL.

Is there any extra banking stuff I need to handle in my AGSI DLL during initialization? Please advice. Thanks!

Parents
  • Currently I'm using a Timer:

    static void OpecodeStart(void)
    {
        ......
        Agsi.SetTimer(OpecodeTimer, 1);
    }
    bool TSDATool::AddWatch(void)
    {
        ......
        OpecodeTimer = Agsi.CreateTimer(OpecodeStart);
        ......
    }
    
    In the OpecodeStart, you can do anything, like reading code or data, changing SFR, changing PC etc..
    But it is slow. :-( Now I'm asking Keil to provide a new interface so that I can intercept any opecode by myself without using a timer. You may push them also. :-)

Reply
  • Currently I'm using a Timer:

    static void OpecodeStart(void)
    {
        ......
        Agsi.SetTimer(OpecodeTimer, 1);
    }
    bool TSDATool::AddWatch(void)
    {
        ......
        OpecodeTimer = Agsi.CreateTimer(OpecodeStart);
        ......
    }
    
    In the OpecodeStart, you can do anything, like reading code or data, changing SFR, changing PC etc..
    But it is slow. :-( Now I'm asking Keil to provide a new interface so that I can intercept any opecode by myself without using a timer. You may push them also. :-)

Children