Hi,
the raw binary doesn't contain address info and fills up gaps between memory spaces by 0x00. If you are using non-continuous memory - unused space is filled up and the binary size may be pretty huge.
If you check the .text and .data section - in the binary will be written only data with this sections. Better idea is use s-record which has address info instead of raw binary.