My target system is an embedded 80186. I found that using:
gcc -c test.c
objcopy --change-address 0xE0000 -O ihex test.o test.hex
does the trick and puts the data at 0xE0000 where I want it.
Ingo Krabbe wrote:
Am Donnerstag, 29. Dezember 2005 21:45 schrieb Anders Norman:
Hi,
I need to create an Intel HEX file containing raw data for an embedded
solution. Source file would look something like this:
const unsigned char myData[] =
{
0x00, 0x00, 0x00, 0x00 ........
};
I also need to locate the data at a specific location in memory.
Can GCC handle this?
What tools do I need in addition? objdump?
regards,
Anders
What you want is a program that writes your binary data into a specific memory
location. In the general case the memory adresses a program sees are
completly virtual, which is usefull cause all symbols and data will be
relocatable when gcc generates an object file.
The exact location of the data sections not under control of gcc but of the
linker ld, which comes with the binutils package (if you don't have a system
specific linker for your embedded system). With objdump (from binutils) you
can control the relocation and symbol tables of an executable, a shared
library or what ever you produce.
This greatly depends on the type of data you produce finally. Is it an ELF
executable or just an object file or a shared object library, a static libary
archive or even a DLL. See your ld documentation.
I have:
ld: supported targets: elf32-i386 a.out-i386-linux efi-app-ia32 elf64-x86-64
elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary
ihex trad-core
What you mean is possibly named as ihex target ?!
As I say: See your ld documentation.