* Andrey Demenev <and...@infoathand.com> [10-06-27 00:04]: > I have atmega64 with SD card connected. The card is used for storing > WAV files, logs, etc. I want to add a bootloader that would upgrade > the main program if certain file is present on the card. Using > separate copies of filesystem library in main program and bootloader > is too expensive in terms of flash space. I am thinking about this > solution: link the bootloader with filesystem libraries, and in main > program have a set of pointers to filesystem library functions in > .noinit section. When bootloader is started , it upgrades main program > if necessary, and then initializes the prointers with correct > addresses and jumps to address zero, starting the main program. Since > variables are in .noinit, main program would not initialize them, > preserving the addresses. Obviously, main program also needs to know > addresses of all global variables used by filesystem lib. The problem > is : how do I make both program use same addresses for certain > variables?
An alternative to placing the function addresses in a structure would be to place a jump table with the entry points at a well-known position in the flash. Then you can use the --defsym option to the linker to tell the main program where to find those entry points. _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list