Modifying the Makefile

Hi all,          I wanted to modify makefile so that I have the freertos.out file along with the freertos.bin

Modifying the Makefile

Some guidelines on how to obtain the freertos.out file would be really helpful. I need the .out file for debugging purposes for AT91SAM7256 processor. Currently I am using eclipse. Thanks in advance, Monish

Modifying the Makefile

You need to use the objcopy command that comes with GCC. Take a look at the binutils manual which you will find somewhere on the gnu.org site. Or simply type "arm-none-eabi-objcopy /?"   or "arm-elf-gcc /?" depending on the version of gcc being used.

Modifying the Makefile

Thanks Edwards. I referred the binutils manual in GNU.org but I am still skeptical of the usage considering that I am not an expert. So here is the Makefile. CC=arm-elf-gcc OBJCOPY=arm-elf-objcopy ARCH=arm-elf-ar CRT0=boot.s DEBUG=-g OPTIM=-O0 LDSCRIPT=atmel-rom.ld # # CFLAGS common to both the THUMB and ARM mode builds # CFLAGS=   -I.    -I./drivers    -I./tasks    -I./armlib    -I./armlib/arch/at91    -I./fatfs    -I../Common/include    -I../../Source/include    -I../../Source/portable/GCC/ARM7_AT91SAM7S    -Wall    -D SAM7_GCC    -D THUMB_INTERWORK   -mthumb-interwork   -mcpu=arm7tdmi    -T$(LDSCRIPT)   $(DEBUG)    $(OPTIM)   -fomit-frame-pointer   #-Wextra    #-Wstrict-prototypes    #-Wmissing-prototypes    #-Wmissing-declarations    #-Wno-strict-aliasing      #-I./wifi    #-I./wifi/wlan    #-I./wifi/tcpuip    #-I./wifi/tcpuip/dhcp    #-I./wifi/tcpuip/resolv    #-I./wifi/wlan    #-I./wifi/wlan/WhizFi  THUMB_FLAGS=-mthumb LINKER_FLAGS=-Xlinker -ofreertos.elf -Xlinker -M -Xlinker -Map=freertos.map # # Source files that can be built to THUMB mode. # FREERTOS_THUMB_SRC=   ../../Source/tasks.c   ../../Source/queue.c   ../../Source/list.c   ../../Source/portable/GCC/ARM7_AT91SAM7S/port.c DEMO_APP_THMUB_SRC=   ../../Source/portable/MemMang/heap_2.c   main.c   drivers/ad8400.c    drivers/ads8341e.c    drivers/wave.c    drivers/common.c    drivers/sd-mmc.c    drivers/spigate.c    tasks/airTasks.c    tasks/recordTasks.c   armlib/rprintf.c    armlib/arch/at91/processor.c    armlib/arch/at91/uart.c    fatfs/ff.c    fatfs/diskio.c   #drivers/spi.c    #armlib/arch/at91/spi.c    #wifi/common.c    #wifi/debug.c    #wifi/flash_opp.c    #wifi/wln_config.c    #wifi/tcpuip/nic.c    #wifi/tcpuip/tcp_config.c    #wifi/tcpuip/uip_arp.c    #wifi/tcpuip/uip_split.c    #wifi/tcpuip/uip.c   #wifi/wlan/WhizFi/wlan # # Source files that must be built to ARM mode. # Generally, ISRs and the like -MikeG ARM_SRC=    tasks/pioIsr.c    ../../Source/portable/GCC/ARM7_AT91SAM7S/portISR.c    Cstartup_SAM7.c # # Define all object files. # ARM_OBJ = $(ARM_SRC:.c=.o) FREERTOS_THUMB_OBJ = $(FREERTOS_THUMB_SRC:.c=.o) DEMO_APP_THMUB_OBJ = $(DEMO_APP_THMUB_SRC:.c=.o) all: freertos.bin freertos.hex freertos.bin : freertos.elf     $(OBJCOPY) freertos.elf -O binary freertos.bin freertos.hex : freertos.elf     $(OBJCOPY) freertos.elf -O ihex freertos.hex freertos.elf : $(ARM_OBJ) $(DEMO_APP_THMUB_OBJ) $(FREERTOS_THUMB_OBJ) $(CRT0) Makefile FreeRTOSConfig.h     $(CC) $(CFLAGS) $(ARM_OBJ) $(DEMO_APP_THMUB_OBJ) $(LWIP_THUMB_OBJ) $(FREERTOS_THUMB_OBJ) -nostartfiles $(CRT0) $(LINKER_FLAGS) $(DEMO_APP_THMUB_OBJ)  : %.o : %.c $(LDSCRIPT) Makefile FreeRTOSConfig.h     $(CC) -c $(THUMB_FLAGS) $(CFLAGS) $< -o $@ $(FREERTOS_THUMB_OBJ)  : %.o : %.c $(LDSCRIPT) Makefile FreeRTOSConfig.h     $(CC) -c $(THUMB_FLAGS) $(CFLAGS) $< -o $@ $(ARM_OBJ) : %.o : %.c $(LDSCRIPT) Makefile FreeRTOSConfig.h     $(CC) -c $(CFLAGS) $< -o $@ #clean : #    touch Makefile # make target called by Eclipse (Project -> Clean …) clean:     -rm $(ARM_OBJ) $(FREERTOS_THUMB_OBJ) $(DEMO_APP_THMUB_OBJ) freertos.elf freertos.bin freertos.map freertos.hex         # ********************************************************************************************** #                            FLASH PROGRAMMING                                         # # Alternate make target for flash programming only # # You must create a special Eclipse make target (program) to run this part of the makefile # (Project -> Create Make Target…  then set the Target Name and Make Target to "program") # # OpenOCD is run in "batch" mode with a special configuration file and a script file containing # the flash commands. When flash programming completes, OpenOCD terminates. # # Note that the script file of flash commands (script.ocd) is part of the project # # Programmers: Martin Thomas, Joseph M Dupre, James P Lynch # Modifies:    Gabriele Brosulo, 22/08/2007 # ********************************************************************************************** # specify output filename here (must be *.bin file) TARGET = freertos.bin # specify the directory where openocd executable and configuration files reside OPENOCD_DIR = ‘/usr/local/OpenOCD/src/’ # specify OpenOCD executable (pp is for the wiggler, ftd2xx is for the USB debuggers) OPENOCD = $(OPENOCD_DIR)openocd # specify OpenOCD configuration file (pick the one for your device) OPENOCD_CFG = OpenOCD/at91sam7s256-wiggler-flash-program.cfg # program the AT91SAM7S256 internal flash memory program: $(TARGET)     @echo "Flash Programming with OpenOCD…"            # display a message on the console     sudo $(OPENOCD) -f $(OPENOCD_CFG)                    # program the onchip FLASH here     @echo "Flash Programming Finished."                    # display a message on the console So is -freertos.out : freertos.out -$(OBJCOPY) freertos.elf -O srec freertos.out The right way to get a .out file in our Makefile? Thanks, Monish