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

Flash Updating

I have an application split into two parts, the first part being the base application that resides in the lower 32K of flash, and an optional portion residing in the upper 32K. The optional part is to be updatable periodically, adding new features, etc via the ISP capability (I've already been able to do this). The base code makes just one call to the optional code to access the options, the optional code uses many api routines stored in the base code (it's a graphical keypad).

I've read through all of the discussion topics and app notes and still have a few questions:

1) What is the advantage of using a pointer jump table over hard coding the segment addresses for the called routines in the linker?

2) Still a bit confused on why reentrant functions were used in the examples in the app notes.

3) Any suggestions on how to partition the two portions of code to avoid the common pitfalls?

Thanks in advance,
Mike

  • "1) What is the advantage of using a pointer jump table over hard coding the segment addresses for the called routines in the linker?"

    This allow you to change the routines which WILL relocate them while maintaining access from below.

    Erik

  • I think it is to support more versatile application, such as PSD alike.
    Nothing special

    SUNCNS


  • > 1) What is the advantage of using a pointer jump table over hard coding the segment addresses for the called routines in the linker?

    I think of it like an interrupt vector table. It you change your code and the ISR starts at a different address you still vector the same location but you jump to a new location. Same with a pointer jump table. If your optional application code changes, you don't have to change your main application to use the new addresses.

    >3) Any suggestions on how to partition the two portions of code to avoid the common pitfalls?

    I had some problems that were solved by turning off all optimization. See the following tread. http://www.keil.com/forum/docs/thread1273.asp

    -Walt