On 2013-02-18, Christopher Biessener<christopherpb@voomtech.com> wrote:
Hi all,
I am new to embedded systems and got handed the task of migrating our
build environment from win2k to win7.
In win2k they are using Cygwin 1.3 / eCos 1.3.1 / gcc 2.95 toolchain.
This setup compiles and links and our hardware runs beautifully. We
can't keep limping along on win2k, however.
My advice would be to do your development on Linux. Even if you have
to run Linu in a VM under Win7, that's probably going to be easier in
the end than trying to use eCos that old building Cygwin. My
experience mixing and matching arbitrary versions of Windows, Cygwin,
toolchains and eCos have always been poor. Replacing Windows and
Cygwin with Linux always made things a lot simpler.
The arm-elf 2.95 toolchain will not install in win7, so I began
upgrading stuff.
So far I have the newest Cygwin 1.7 - which uses gcc 4.5.3. I
downloaded the arm-elf toolchain via MacCraigor Systems website which
is gcc 4.6.0.
Is that a toolchain intended for use with eCos? Why not use the ARM
toolchain offered for download by eCosCentric?
I cannot find the arm-elf toolchain in any other rev-level.
Apparently eCos 1.3.1 is still viable and it did install on win7, so
that is what I used. I am afraid of upgrading to eCos 3.0 because I
have no idea what configuration options were used. There is no
documentation the original developers left - and yes, they are long
gone.
At first gcc couldn't find libgcc, so I added
-L/usr/lib/gcc/i686-pc-cygwin/4.5.3 to the link flags.
That's almost certainly incorrect. You can't use a libgcc for i686 if
you're compiling for an ARM target.Without further changing our makefiles everything compiled, but it
will not link. The following is part of the output of make:
----------------------
arm-elf-gcc -mcpu=arm7tdmi -u cyg_user_start
-Wl,'-Map=HC3-P_Hw_Cf_P1.map' -nostartfiles -Wl,--gc-sections
-L./romram_install/lib -L/usr/lib/gcc/i686-pc-cygwin/4.5.3 -o
HC3-P_Hw_Cf_P1.elf libHC3-P_Hw_Cf_P1.a libromHC3-P_Hw_Cf_P1.a
-TtargetHC3-P_Hw_Cf_P1.ld -nostdlib
libromHC3-P_Hw_Cf_P1.a(HardCopy.o): In function
`__static_initialization_and_destruction_0(int, int)':
HardCopy.cpp:(.text._Z41__static_initialization_and_destruction_0ii+0x48):
undefined reference to `__cxa_atexit'
HardCopy.cpp:(.text._Z41__static_initialization_and_destruction_0ii+0x60):
undefined reference to `__dso_handle'
libromHC3-P_Hw_Cf_P1.a(fat32.o): In function
`CFAT32::InitBootSector(FAT32_BOOT_SECTOR*, FAT32_FSINFO_SECTOR*)':
fat32.cpp:(.text._ZN6CFAT3214InitBootSectorEP17FAT32_BOOT_SECTORP19FAT32_FSINFO_SECTOR+0x118):
undefined reference to `__umodsi3'
fat32.cpp:(.text._ZN6CFAT3214InitBootSectorEP17FAT32_BOOT_SECTORP19FAT32_FSINFO_SECTOR+0x150):
undefined reference to `__udivsi3'
----------------------
Any suggestions would be greatly appreciated. I did begin by searching
the list archive. There were no solutions to be found.
Thanks,
Christopher Biessener
Voom Technologies, Inc.