We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi: I've a system with 8751 with the boot and a flash with appliction program, i need to change the application program but by parts, i know that i can use wildcards to locate every .obj in a fixed position in flash memory, but the problem is how can i jump from one function to another, i mean , if i change the length of some functions in one module, their locations will change in spite of the starting location of the module, so if i try to jump to this function from another module it will fail. How can i locate functions dinamically, if its possible? thanks in advance. Antonio.
I assume that you have provided room for the expansion of the modules that you modify. The method will be that to start every flash page with an address table so that e.g. a routine in page 0 could call "the function pointed to at 800A". With this system, you just link the whole thing once and can then replace separate flash pages. Remember to leave a few expansion slots at the end of the pointer table. Since Keil like to put variables from multiple modules in a different sequence if the direction of the wind changes (I have no other explanation) make sure that ALL global variables are in ONE module. Also, NEVER delete a variable unless you replace all flash pages. Have fun, Erik
See App Note 129, Function Pointers in C51, and knowledge base article http://www.keil.com/support/docs/210.htm for the limitations/restrictions of using function pointers in C51
I have it yet, but i don't understant it very well, i understand the main idea but i don't know exactly how to use it, there is some example code to compile and test it?