From: Jon H. <jha...@re...> - 2006-09-30 17:39:05
|
Hello all SDCC users & developers, being that the 8051 is in your area of expertise, I wanted to ask your thoughts on the following issue I have been having.... I have poured through the message boards to no avail. My question is very unique. I built a boot loader using SDCC 2.4.0 for the Nordic nRF24E1. I did this to eliminate the 4K memory barrier, which allows me to swap firmware loads in/out of memory on the fly. Part of my boot loader updates the interrupt vector table for the firmware load of interest. It seemed despite SDCC 2.4.0 claim that it automatically adjusted the table based on the ISR requirements it seemed to always adjust to a full size interrupt 0-5 (0x0003->0x002B) table no matter what, with a total length of 41 bytes. This was advantageous to me, since all the firmware loads I would swap in and out of RAM would always have the same length interrupt vector table and layout irregardless to my ISR usage for that particular firmware load. My boot loader vector table update process could could work reliably with consistent table lengths. Now, since I upgraded to 2.6.0, SDCC does automatically adjust the ISR table length based on ISR usage for each firmware load, which are not consistent from firmware load to firmware load because of different ISR usage, and my boot loader is not happy with this. Do you know of a way with SDCC 2.6.0 to make it behave as 2.4.0 as far as the interrupt vector table is concerned, but yet still use SDCC 2.6.0 for its other improvements and bug fixes? Thanks in advance for your help on this. Excellent job on SDCC, it is a remarkable compiler! Thanks. Jon Hallsten |