My binary code file produced by Keil's ELF tool has about 320 bytes more than the 'same' JTAG upload code file. It looks like the last 320 bytes are the same as the previous 320 in the binary file. i.e. From 0 to 0x34DCB, both JTAG uploaded file (CPU Flash) and the binary file are the same. From 0x34DCC-to 0x34F2B (end of code) is 0xFF in the code memory. But, in the binary file, it looks the same as 0x34C9C-0x34DCB (the prior bytes). I would think the binary file and the uploaded JTAG file should match exactly for the purpose of using IAP off an SD card.
Sutton