We are moving from a parallel flash which is mapped to the address space of the processor to a serial flash, which requires the code to be copied from sflash to internal RAM before the loader jumps to its entry point. The ROM loader is very simple: it merely copies the bytes to a location which is defined in a header at offset zero of the serial flash. I created a linker directives file to locate .text, .rodata, .data, .bss to internal RAM and created a custom literals section for the flash header.
I was able to create the ELF file without problems and converted to intel hex format using ghexfile (green hills). The next step was to feed the hex file to a utility which calculates the checksum, but this stage failed because it complained the data sections were bound to an address which was greater than the size of the flash.
I am trying to understand the parameters of the the ghexfile utility, because I suspect the error was made at the hex file creation. There are two parameters -start and -romaddr whose description seem to be very confusing to me.
Any help understanding the elf to hex conversion and the meaning of the above parameters is much appreciated.