Hi All,
I was going through the article by Miro Samek, "Building Bare-Metal ARM
Systems with GNU" at www.embedded.com. The link to the article is below
http://www.embedded.com/design/opensource/200000632?_requestid=34242
I had downloaded his example c_blinky.zip and wanted to try compiling it
after setting up GNU ARM toolchain on windows PC.
The link to the example is
ftp://ftp.embedded.com/pub/2007/06Samek/c_blinky.zip
These are the steps I had followed
1. Download and install YAGARTO tool chain to D:\yagarto
2. Update the windows path with D:\yagarto\bin
3. Uncompress the example c_blinky.zip
4. Modify the Makefile provided with the example c_blinky to select
YAGARTO tool chain compiler, assembler and enabled verbose option. Below
is the modified makefile
=====================================================
########################################################################
######
# Product: BLINKY/C example application
# Date of the Last Update: Jun 14, 2007
#
# Q u a n t u m L e a P s
# ---------------------------
# innovating embedded systems
#
# Copyright (C) 2002-2007 Quantum Leaps, LLC. All rights reserved.
#
# Contact information:
# Quantum Leaps Web site: http://www.quantum-leaps.com
# e-mail: info@quantum-leaps.com
########################################################################
######
# general utilities
RM = rm -f
# GNU-ARM tools directory
GNU_ARM = D:/yagarto
# The gcc compiler and linker
CC = $(GNU_ARM)/bin/arm-elf-gcc
ASM = $(GNU_ARM)/bin/arm-elf-as
LINK = $(GNU_ARM)/bin/arm-elf-gcc
OBJCOPY = $(GNU_ARM)/bin/arm-elf-objcopy
BLDDIR = .
CCINC = -I$(BLDDIR)
APP_DEP = $(BLDDIR)/bsp.h \
$(BLDDIR)/arm_exc.h \
$(BLDDIR)/isr.h
APP_NAME = blinky
ARM_CPU = arm7tdmi
# dbg (default target)
.......................................................
BINDIR = dbg
# gcc options for ARM and THUMB
# -c : compile only
# -g : source level debugging
CCFLAGS = -gdwarf-2 -c -mcpu=$(ARM_CPU) -mthumb-interwork -O \
-mlong-calls -ffunction-sections -Wall -o$@ -v
ASMFLAGS = -gdwarf2 -mcpu=$(ARM_CPU) -mthumb-interwork -o$@ -v
LINKFLAGS = -T ./$(APP_NAME).ld -o $(BINDIR)/$(APP_NAME).elf \
-Wl,-Map,$(BINDIR)/$(APP_NAME).map,--cref -lm
# release
....................................................................
ifeq ($(MAKECMDGOALS), rel)
BINDIR = rel
# gcc options for ARM and THUMB
# -c : compile only
# -g : source level debugging
CCFLAGS = -c -mcpu=$(ARM_CPU) -mthumb-interwork -O2 \
-mlong-calls -ffunction-sections -Wall -DNDBEBUG -o$@
ASMFLAGS = -gdwarf2 -mcpu=$(ARM_CPU) -mthumb-interwork -o$@
LINKFLAGS = -T ./$(APP_NAME).ld -o $(BINDIR)/$(APP_NAME).elf \
-Wl,-Map,$(BINDIR)/$(APP_NAME).map,--cref -lm
endif
ifeq ($(MAKECMDGOALS), rel_clean)
BINDIR = rel
endif
#.......................................................................
......
all: $(BINDIR)/$(APP_NAME).bin
$(BINDIR)/$(APP_NAME).bin : $(BINDIR)/$(APP_NAME).elf
$(OBJCOPY) -O binary $(BINDIR)/$(APP_NAME).elf
$(BINDIR)/$(APP_NAME).bin
$(BINDIR)/$(APP_NAME).elf : \
./$(APP_NAME).ld \
$(BINDIR)/startup.o \
$(BINDIR)/arm_exc.o \
$(BINDIR)/low_level_init.o \
$(BINDIR)/bsp.o \
$(BINDIR)/isr.o \
$(BINDIR)/blinky.o
$(LINK) \
$(BINDIR)/startup.o \
$(BINDIR)/arm_exc.o \
$(BINDIR)/low_level_init.o \
$(BINDIR)/bsp.o \
$(BINDIR)/isr.o \
$(BINDIR)/blinky.o \
$(LINKFLAGS)
$(BINDIR)/startup.o: $(BLDDIR)/startup.s
$(ASM) $(ASMFLAGS) $<
$(BINDIR)/arm_exc.o: $(BLDDIR)/arm_exc.s
$(ASM) $(ASMFLAGS) $<
$(BINDIR)/low_level_init.o: $(BLDDIR)/low_level_init.c $(APP_DEP)
$(CC) -marm $(CCFLAGS) $(CCINC) $<
$(BINDIR)/bsp.o: $(BLDDIR)/bsp.c $(APP_DEP)
$(CC) -mthumb $(CCFLAGS) $(CCINC) $<
$(BINDIR)/isr.o: $(BLDDIR)/isr.c $(APP_DEP)
$(CC) -marm $(CCFLAGS) $(CCINC) $<
$(BINDIR)/blinky.o: $(BLDDIR)/blinky.c $(APP_DEP)
$(CC) -mthumb $(CCFLAGS) $(CCINC) $<
dbg: all
rel: all
# clean targets...
.PHONY: clean rel_clean
rel_clean: clean
dbg_clean: clean
clean:
-$(RM) $(BINDIR)/*.o
-$(RM) $(BINDIR)/*.elf
-$(RM) $(BINDIR)/*.map
==================================================
5. I used cygwin installed Make version 3.8.1 to run the makefile
The following are the errors I got
********************************************************************
D:/yagarto/bin/arm-elf-as -gdwarf2 -mcpu=arm7tdmi -mthumb-interwork
-odbg/startup.o -v startup.s
GNU assembler version 2.18 (arm-elf) using BFD version (GNU Binutils)
2.18
D:/yagarto/bin/arm-elf-as -gdwarf2 -mcpu=arm7tdmi -mthumb-interwork
-odbg/arm_exc.o -v arm_exc.s
GNU assembler version 2.18 (arm-elf) using BFD version (GNU Binutils)
2.18
D:/yagarto/bin/arm-elf-gcc -marm -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/low
_level_init.o -v -I. low_level_init.c
Using built-in specs.
Target: arm-elf
Configured with: ../gcc-4.2.2/configure --target=arm-elf
--prefix=/home/yagarto/install --disable-nls --disable-shared
--disable-t
hreads --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2
--enable-languages=c,c++ --enable-interwork --enable-multilib --with-n
ewlib --with-headers=../newlib-1.16.0/newlib/libc/include
--disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-
libgomp -v
Thread model: single
gcc version 4.2.2
d:/yagarto/bin/../libexec/gcc/arm-elf/4.2.2/cc1.exe -quiet -v -I.
-imultilib interwork -iprefix d:\yagarto\bin\../lib/gcc/arm-elf
/4.2.2/ -D__USES_INITFINI__ low_level_init.c -quiet -dumpbase
low_level_init.c -marm -mcpu=arm7tdmi -mthumb-interwork -mlong-calls
-auxbase-strip dbg/low_level_init.o -gdwarf-2 -O -Wall -version
-ffunction-sections -o C:\DOCUME~1\SAMAVA~1\LOCALS~1\Temp/ccrrtja
F.s
#include "..." search starts here:
#include <...> search starts here:
.
d:\yagarto\bin\../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../arm-elf/sys-include
d:/yagarto/bin/../arm-elf/include
End of search list.
GNU C version 4.2.2 (arm-elf)
compiled by GNU C version 3.4.5 (mingw special).
GGC heuristics: --param ggc-min-expand=100 --param
ggc-min-heapsize=131072
Compiler executable checksum: 17d82494ce6037e4c50af8ea602988cc
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/as.exe
-mcpu=arm7tdmi -mthumb-interwork -odbg/low_level_init.o C:
\DOCUME~1\SAMAVA~1\LOCALS~1\Temp/ccrrtjaF.s
D:/yagarto/bin/arm-elf-gcc -mthumb -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/b
sp.o -v -I. bsp.c
Using built-in specs.
Target: arm-elf
Configured with: ../gcc-4.2.2/configure --target=arm-elf
--prefix=/home/yagarto/install --disable-nls --disable-shared
--disable-t
hreads --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2
--enable-languages=c,c++ --enable-interwork --enable-multilib --with-n
ewlib --with-headers=../newlib-1.16.0/newlib/libc/include
--disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-
libgomp -v
Thread model: single
gcc version 4.2.2
d:/yagarto/bin/../libexec/gcc/arm-elf/4.2.2/cc1.exe -quiet -v -I.
-imultilib thumb/interwork -iprefix d:\yagarto\bin\../lib/gcc/a
rm-elf/4.2.2/ -D__USES_INITFINI__ bsp.c -quiet -dumpbase bsp.c -mthumb
-mcpu=arm7tdmi -mthumb-interwork -mlong-calls -auxbase-stri
p dbg/bsp.o -gdwarf-2 -O -Wall -version -ffunction-sections -o
C:\DOCUME~1\SAMAVA~1\LOCALS~1\Temp/ccHzN4ER.s
#include "..." search starts here:
#include <...> search starts here:
.
d:\yagarto\bin\../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../arm-elf/sys-include
d:/yagarto/bin/../arm-elf/include
End of search list.
GNU C version 4.2.2 (arm-elf)
compiled by GNU C version 3.4.5 (mingw special).
GGC heuristics: --param ggc-min-expand=100 --param
ggc-min-heapsize=131072
Compiler executable checksum: 17d82494ce6037e4c50af8ea602988cc
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/as.exe
-mcpu=arm7tdmi -mthumb-interwork -odbg/bsp.o C:\DOCUME~1\S
AMAVA~1\LOCALS~1\Temp/ccHzN4ER.s
D:/yagarto/bin/arm-elf-gcc -marm -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/isr
.o -v -I. isr.c
Using built-in specs.
Target: arm-elf
Configured with: ../gcc-4.2.2/configure --target=arm-elf
--prefix=/home/yagarto/install --disable-nls --disable-shared
--disable-t
hreads --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2
--enable-languages=c,c++ --enable-interwork --enable-multilib --with-n
ewlib --with-headers=../newlib-1.16.0/newlib/libc/include
--disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-
libgomp -v
Thread model: single
gcc version 4.2.2
d:/yagarto/bin/../libexec/gcc/arm-elf/4.2.2/cc1.exe -quiet -v -I.
-imultilib interwork -iprefix d:\yagarto\bin\../lib/gcc/arm-elf
/4.2.2/ -D__USES_INITFINI__ isr.c -quiet -dumpbase isr.c -marm
-mcpu=arm7tdmi -mthumb-interwork -mlong-calls -auxbase-strip dbg/is
r.o -gdwarf-2 -O -Wall -version -ffunction-sections -o
C:\DOCUME~1\SAMAVA~1\LOCALS~1\Temp/ccznrYw1.s
#include "..." search starts here:
#include <...> search starts here:
.
d:\yagarto\bin\../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../arm-elf/sys-include
d:/yagarto/bin/../arm-elf/include
End of search list.
GNU C version 4.2.2 (arm-elf)
compiled by GNU C version 3.4.5 (mingw special).
GGC heuristics: --param ggc-min-expand=100 --param
ggc-min-heapsize=131072
Compiler executable checksum: 17d82494ce6037e4c50af8ea602988cc
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/as.exe
-mcpu=arm7tdmi -mthumb-interwork -odbg/isr.o C:\DOCUME~1\S
AMAVA~1\LOCALS~1\Temp/ccznrYw1.s
D:/yagarto/bin/arm-elf-gcc -mthumb -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/b
linky.o -v -I. blinky.c
Using built-in specs.
Target: arm-elf
Configured with: ../gcc-4.2.2/configure --target=arm-elf
--prefix=/home/yagarto/install --disable-nls --disable-shared
--disable-t
hreads --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2
--enable-languages=c,c++ --enable-interwork --enable-multilib --with-n
ewlib --with-headers=../newlib-1.16.0/newlib/libc/include
--disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-
libgomp -v
Thread model: single
gcc version 4.2.2
d:/yagarto/bin/../libexec/gcc/arm-elf/4.2.2/cc1.exe -quiet -v -I.
-imultilib thumb/interwork -iprefix d:\yagarto\bin\../lib/gcc/a
rm-elf/4.2.2/ -D__USES_INITFINI__ blinky.c -quiet -dumpbase blinky.c
-mthumb -mcpu=arm7tdmi -mthumb-interwork -mlong-calls -auxbas
e-strip dbg/blinky.o -gdwarf-2 -O -Wall -version -ffunction-sections -o
C:\DOCUME~1\SAMAVA~1\LOCALS~1\Temp/ccv1Cul9.s
#include "..." search starts here:
#include <...> search starts here:
.
d:\yagarto\bin\../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/include
d:/yagarto/bin/../arm-elf/sys-include
d:/yagarto/bin/../arm-elf/include
End of search list.
GNU C version 4.2.2 (arm-elf)
compiled by GNU C version 3.4.5 (mingw special).
GGC heuristics: --param ggc-min-expand=100 --param
ggc-min-heapsize=131072
Compiler executable checksum: 17d82494ce6037e4c50af8ea602988cc
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/as.exe
-mcpu=arm7tdmi -mthumb-interwork -odbg/blinky.o C:\DOCUME~
1\SAMAVA~1\LOCALS~1\Temp/ccv1Cul9.s
D:/yagarto/bin/arm-elf-gcc \
dbg/startup.o \
dbg/arm_exc.o \
dbg/low_level_init.o \
dbg/bsp.o \
dbg/isr.o \
dbg/blinky.o \
-T ./blinky.ld -o dbg/blinky.elf -Wl,-Map,dbg/blinky.map,--cref
-lm
dbg/startup.o: In function `_start':
C:\Downloads\c_blinky\c_blinky/startup.s:47: multiple definition of
`_start'
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib/crt0.o:(
.text+0x0):
first defined here
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-atexit.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-exit.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-impure.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-init.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-memset.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-syscalls.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-__atexit.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-__call_atexit.o) does not support
interworking, whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-errno.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-findfp.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-fwalk.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-malloc.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-mallocr.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-mlock.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-sbrkr.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-stdio.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-strlen.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-writer.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-closer.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-fclose.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-fflush.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-freer.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-lseekr.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-readr.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../
../arm-elf/lib\libc.a(lib_a-reent.o) does not support interworking,
whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/crtend.o
does not support interworking, whereas dbg/blinky.elf does
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe:
Warning: d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/crtn.o do
es not support interworking, whereas dbg/blinky.elf does
collect2: ld returned 1 exit status
make: *** [dbg/blinky.elf] Error 1
********************************************************************
I am not able to understand how to solve these errors and warnings.
Please kindly help in solving the compilation problem.
Thanks,
Dan
Try to add -mthumb-interwork to the linker-options. For the _start
problem I'd have to look into the code. Did you search all files for
"_start", where can you find it?
Martin Thomas wrote:
> Try to add -mthumb-interwork to the linker-options. For the _start> problem I'd have to look into the code. Did you search all files for> "_start", where can you find it?
Hi Martin,
Thanks for the sugesstion, will try it out and let you know the result.
The _start is in startup.s.
Thanks,
Dan
Dan Clo wrote:
> Martin Thomas wrote:>> Try to add -mthumb-interwork to the linker-options. For the _start>> problem I'd have to look into the code. Did you search all files for>> "_start", where can you find it?>> Hi Martin,>> Thanks for the sugesstion, will try it out and let you know the result.> The _start is in startup.s.>> Thanks,> Dan
Hi Martin,
Thanks alot. Adding -mthumb-interwork to the linker-options did work.
But I am still trying to figure out how to solve the _start problem.
This is the output
======================================================================
D:/yagarto/bin/arm-elf-as -gdwarf2 -mcpu=arm7tdmi -mthumb-interwork
-odbg/startup.o startup.s
D:/yagarto/bin/arm-elf-as -gdwarf2 -mcpu=arm7tdmi -mthumb-interwork
-odbg/arm_exc.o arm_exc.s
D:/yagarto/bin/arm-elf-gcc -marm -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/low
_level_init.o -I. low_level_init.c
D:/yagarto/bin/arm-elf-gcc -mthumb -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/b
sp.o -I. bsp.c
D:/yagarto/bin/arm-elf-gcc -marm -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/isr
.o -I. isr.c
D:/yagarto/bin/arm-elf-gcc -mthumb -gdwarf-2 -c -mcpu=arm7tdmi
-mthumb-interwork -O -mlong-calls -ffunction-sections -Wall -odbg/b
linky.o -I. blinky.c
D:/yagarto/bin/arm-elf-gcc \
dbg/startup.o \
dbg/arm_exc.o \
dbg/low_level_init.o \
dbg/bsp.o \
dbg/isr.o \
dbg/blinky.o \
-T ./blinky.ld -o dbg/blinky.elf -Wl,-Map,dbg/blinky.map,--cref
-lm -mthumb-interwork
dbg/startup.o: In function `_start':
C:\Downloads\c_blinky\c_blinky/startup.s:47: multiple definition of
`_start'
d:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib/interwor
k/crt0.o:(.text+0x0):
first defined here
collect2: ld returned 1 exit status
make: *** [dbg/blinky.elf] Error 1
=======================================================================
Thanks,
Dan
Please read the embedded.com article series about "bare-metal" esp. the
linker-script explanations.
If you expect help from me: please try to use one of my makefiles form
one of the newer examples on my web-pages. Even if they look a little
complicated at first but I have tested them and the options to the tools
should work.
Martin Thomas wrote:
> Please read the embedded.com article series about "bare-metal" esp. the> linker-script explanations.>> If you expect help from me: please try to use one of my makefiles form> one of the newer examples on my web-pages. Even if they look a little> complicated at first but I have tested them and the options to the tools> should work.
Hi Martin,
Thanks for your help. Will try out with your makefiles.
Regards,
Dan