EmbDev.net

Forum: ARM programming with GCC/GNU tools Compiling for the uClinux?


von Stanislav M. (numo)


Rate this post
useful
not useful
Hi, I'd like to use the WinARM tools to compile for uClinux ARM targets.
The problem is that the uClinux uses own executable format (they call it
Binary Flat) and one needs to convert the ELF produced by GNU tools to
this format.

In the Linux environment this is done by a tool called elf2flt, that
hooks itself into the GNU linker (using -Wl,-elf2flt to call itself
during the link stage). The elf2flt consist of a linker script and a
heavy shell-skript to mangle linker arguments, it moves the original
linker to another name and calls it as necessary.

I know too little about the process how these linker scripts and similar
stuff work, in fact I am glad that I was able to get it work under
Linux. Is it possible (and a good idea) to adapt the WinARM tools so
that they can produce the BFLT format? Or does anyone know of other
Windows-hosted environment that can produce it?

RTFM is gladly accepted if you point me to the correct M ;)

von Stanislav M. (numo)


Rate this post
useful
not useful
Stanislav Meduna wrote:

> I know too little about the process how these linker scripts and similar
> stuff work, in fact I am glad that I was able to get it work under
> Linux. Is it possible (and a good idea) to adapt the WinARM tools so
> that they can produce the BFLT format? Or does anyone know of other
> Windows-hosted environment that can produce it?

Well, now I have 'dismantled' the things so that I only need working
ext2flt executable. However, for this I need libiberty and libbfd
(libraries and corresponding .h-files) that are consistent with both the
target and the binutils used to build the cross-compiler.

Libiberty library is included in WinARM, but libbfd is not - where can I
find them and/or the environment used for compiling the WinARM suite?

Thanks

von Spencer O. (ntfreak)


Rate this post
useful
not useful
To be honest you need a uclibc based toolchain, winarm uses newlib.

I have done it under cygwin but it is a pain, if you use linux as your
host then prebuilt toolchains can be used from www.uclinux.org

Have a look here for a few ideas:
http://www.st.com/stonline/products/literature/an/11190.pdf
http://www.stmcu.com/mdtfiles/1109337716.zip

you will probably also have to build elf2flt, genromfs and jffs2.

Cheers
Spen

von Martin T. (mthomas) (Moderator)


Rate this post
useful
not useful
I also don't think the tools included in the WinARM collection will be
of much help to create binaries for uclinux. I created the WinARM
collection to support "bare metal" development. The core of WinARM are
the binutils, gcc and newlib for the arm-elf target. So far I do not
know enough about uclinux to provide the needed additional tools as part
of a WinARM package.

I have not used it myself but IRC codesourcy provides a precompiled
arm-uclinx cross-toolchain for MS-Windows Hosts (don't remember which
libc they use but it should be mentioned on their pages).

Since Spencer mentioned that building the cross-toolchain under cygwin
is difficult. There is also the option to create the cross-toolchain on
in a virtual machine running Linux or with colinux running "in" MS
Windows. Maybe you can even re-use the cross-toolchain you have already
created for Linux in these envirionments.

Martin Thomas

BTW: So far I have just tested the procompiled kernel/fs from the st.com
site for their STR710-eval-board (the links Spencer mentioned). But it's
on my list to play around with the STmicro-board and a board with an AD
Blackfin to learn more about uclinux. There are currently just too many
other things to do. So please send what you find out esp. information
about cross-toolchains (building them or ready/made) which can be hosted
on MS-Windows without emulation-layers or virtual machines.

von Spencer O. (ntfreak)


Rate this post
useful
not useful
Just realised that codesoucery now do a prebuilt native win32
uclinux/uclibc based toolchain -
http://www.codesourcery.com/gnu_toolchains/arm for details.

Building your own is possible however.
You will also need a lot of flash and ram on your board, uclibc expects
to run in ram, after being uncompressed from flash.

A slightly more lightweight solution is ecos
(http://ecos.sourceware.org), winarm could be used for this - it is
based on newlib. And can run in flash memory.

If anyone needs details on the extra uclinux tools then let me know, i
can send source that has been tweaked and will build under cygwin.

Cheers
Spen

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.