With a support entitlement you can also get direct access to our team of highly-qualified Arm experts 24-hours a day
Open a support case
We generally get executable and linkable file(ELF) to program Microcontrollers. I wanted to generate MAP file using this elf file to observe various sections of memory. How is it possible using toolchain arm-none-eabi toolchain?
So far I have done something like:
arm-none-eabi-gcc.exe -Xlinker -Map=out.map program.elf
to get some linker script and memory map
but it is not an exact map file
Hi Fahad,Can you be more specific about what is inexact in that map file?Best regards.
I needed the memory regions occupied by my code. I got it by giving -map=out.map to the compiler in my make file
Can you help me to make a map file in makefile?
I've got some error as the below,
arm-none-eabi-gcc -g -O3 -mthumb -mcpu=cortex-m3 ../../../../software/cmsis/Device/ARM/CMSDK_CM3/Source/GCC/startup_CMSDK_CM3.s \
-I ../../../../software/cmsis/Device/ARM/CMSDK_CM3/Include -I ../../../../software/cmsis/CMSIS/Include \
-I ../../../../software/common/retarget \
-L ../../../../software/common/scripts \
-DCORTEX_M3 -T ../../../../software/common/scripts/cmsdk_cm3.ld -o hello.o
# Generate disassembly code
arm-none-eabi-objdump -S hello.o > hello.lst
# Generate binary file
arm-none-eabi-objcopy -S hello.o -O binary hello.bin
# Generate hex file
arm-none-eabi-objcopy -S hello.o -O verilog hello.hex
# Generate map file
#arm-none-eabi-gcc -Xlinker -Map=out.map program.elf
arm-none-eabi-gcc -Xlinker -Map=out.map
/opt/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x2c): undefined reference to `_exit'
/opt/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/crt0.o: In function `_start':
(.text+0xec): undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [all_gcc] Error 1
Could you help me and let me know what am I supposed to do to resolve this problem?
Why are you giving hello.o after -o? The compiler flag -o should be followed by output executable name. Just remove .o and it should work. You can try giving hello instead. Hope it resolves your problem
I hope you have already figured out your problem, but still try to give -Map=out.map to the arm-none-eabi-gcc as an argument.