Hi all, The Overlay mechanism implemented by Keil is ingenious. Moreover if we want add some functionnality in Eeprom without change ROM code is to my mind impossible because DATA GROUP area will be modified with new local variables used in our new functions in Eeprom. What do you think about this? Thanks a lot, Daniel
There are a lot of people already doing this kind of stuff. To do this, you must be very careful and thoughtfully design your interfaces (ROM-EEPROM). I've come up with the following list of tips and suggestions. Note that I would create 2 separate programs: one for the ROM portion and one for the EEPROM portion. Here are my assumptions: 1. ROM goes from 0x0000-0x7FFF. 2. EEPROM goes from 0x8000-0xFFFF. 3. A call-table will be generated in the EEPROM to provide addresses for functions in EEPROM called from ROM. 4. ROM functions can call EEPROM functions but not vice-versa. The ROM Program... 1. The ROM program will be fixed. It will not change and so the EEPROM must work around it. 2. Note the last used DATA address for the ROM area. 3. Locate the stack pointer at 0x80. The space between the last data address (noted in step 2) and 0x7F may be used by the EEPROM program. 4. Do not include the EEPROM code in the ROM project. Instead, create a call table (that will be located in the EEPROM) using the function names (for the functions in EEPROM). For example:
cseg at 0x8000 func_1_redirect: ljmp func_1 func_2_redirect: ljmp func_2 . . .