elf2hex requires begin and end addresses of memory device. Let's say You've added 32bit wide on-chip memory, which begins at 0x01000000 and ends at 0x01001000 (SOPC/QSYS shows those addresses), so You generate a hex file like this:
elf2hex --input=project.elf --output=project.hex --no-zero-fill --base=0x01000000 --end=0x01001000
I usually use much higher end address size, since --no-zero-fill removes all unnecessary zeroes from the file.
For example for hex file for SDRAM, I use this script:
elf2hex --input=project.elf --width=8 --no-zero-fill --output=project.hex --base=0x00800000 --end=0x008EFFFF
Width of 8bits is required because of SPI bootloader binary transfers. I copy the binary data from flash to SDRAM using my own bootloader. The end address is made as high, as possible, since I don't care what binary size it will be.