EmbDev.net

Forum: ARM programming with GCC/GNU tools WinARM support for STM32


von Varuzhan D. (vdaniel)


Rate this post
useful
not useful
I want to ask, if somebody use WinARM for the STM32 Cortex-M3?
And I want to ask Martin Thomas about his plans about including
working examples or, at least, examples of Makefile and *.ld files
for the STM32 series microcontrollers in WinARM.
I tried different free tools before, and decided, that WinARM is
most easy-to-use, universal and convenient tool.  I have done
several projects for LPC2138, LPC2378 and ADuC7020.  Now I
am going to use STM32.  And I do not want to learn a new tool
for it.

Thanks in advance,
Varuzhan

von Martin T. (mthomas) (Moderator)


Rate this post
useful
not useful
Varuzhan Danielyan wrote:
> I want to ask, if somebody use WinARM for the STM32 Cortex-M3?
> And I want to ask Martin Thomas about his plans about including
> working examples or, at least, examples of Makefile and *.ld files
> for the STM32 series microcontrollers in WinARM.

The tools collected in WinARM do not yet support Cortex M3 since it's
not supported in the current (4.2.2, Dec./2007) release of the GNU
compiler collection. Cortex-M3 should be available with gcc 4.3.0.

But you can get GNU-tools with Cortex-M3 support from Codesourcery and
Anglia. IRC the packages from Anglia also include examples for STM32
with gcc, see http://www.st-angliamicro.com/software.asp

So far I have only used Luminary Stellaris M3 and the Codesourcery
package. I do not have a STM32-board here for tests. So currently no
examples from my side for these targets, sorry.

Martin Thomas

von Varuzhan D. (vdaniel)


Rate this post
useful
not useful
Hi Martin,

Isn't it possible to use Codecourcery with WinARM for STM32 and
older (already supported by WinARM) microcontrollers and how, if
possible?
What is the difference between gcc and Codesourcery?

Thank you very much,
Varuzhan

Martin Thomas wrote:
> Varuzhan Danielyan wrote:
>> I want to ask, if somebody use WinARM for the STM32 Cortex-M3?
>> And I want to ask Martin Thomas about his plans about including
>> working examples or, at least, examples of Makefile and *.ld files
>> for the STM32 series microcontrollers in WinARM.
>
> The tools collected in WinARM do not yet support Cortex M3 since it's
> not supported in the current (4.2.2, Dec./2007) release of the GNU
> compiler collection. Cortex-M3 should be available with gcc 4.3.0.
>
> But you can get GNU-tools with Cortex-M3 support from Codesourcery and
> Anglia. IRC the packages from Anglia also include examples for STM32
> with gcc, see http://www.st-angliamicro.com/software.asp
>
> So far I have only used Luminary Stellaris M3 and the Codesourcery
> package. I do not have a STM32-board here for tests. So currently no
> examples from my side for these targets, sorry.
>
> Martin Thomas

von Martin T. (mthomas) (Moderator)


Rate this post
useful
not useful
Varuzhan Danielyan wrote:

> Isn't it possible to use Codecourcery with WinARM for STM32 and
> older (already supported by WinARM) microcontrollers and how, if
> possible?

You can use the tools included in Codesourcery's arm-package instead of
the tools from WinARM. The GNU ARM package from Codesourcery should
support all targets supported by WinARM and also Cortex-M3.
Codesourcery's ARM package and WinARM can be installed on the same
machine without problems since the binary-prefixes are different (WinARM
arm-elf, Codesourcery arm-none-eabi).

> What is the difference between gcc and Codesourcery?

No major difference. Codesourcery uses the GNU compiler collection too.
But they have extended it, for example they added Cortex-M3 support. The
extensions are not yet available in the "official" release-sources from
gnu.org. The main differences between the tools in WinARM and
Codesourcery ARM-package:

- WinARM (all but the latest test-release): target arm-elf, current
Codesourcery: target: arm-eabi

- WinARM: based on sources from gnu.org, Codesourcery: sources from
gnu.org with own extensions/modifications.

- WinARM: newlib built for reentrant-syscalls with no "default" syscalls
Codesourcery: not relay sure but AFAIK default build for "non-reentrant"
syscalls

- WinARM: just a "binary build" from someone (me) who does not know much
about the used sources (WinARM has been "born" when most/all available
other precompiled cross-toolchains depended on cygwin). Codesourcery:
they know much about the core projects (gcc, binutils, newlib) and do
extensions/bug-fixes (AFAIK they get paid by ARM to improve the GNU
tools)

von Garry A. (garry_at_argus)


Rate this post
useful
not useful
Martin Thomas wrote:
>
> The tools collected in WinARM do not yet support Cortex M3 since it's
> not supported in the current (4.2.2, Dec./2007) release of the GNU
> compiler collection. Cortex-M3 should be available with gcc 4.3.0.
>

Hi Martin:  Thank you for your dedication and contributions to this
site.  We really appreciate your efforts.

Do you have any idea when GCC 4.3.0 may be released with STM32 support?

Thanks,
Garry.

von Martin T. (mthomas) (Moderator)


Rate this post
useful
not useful
Garry Anderson wrote:
> Do you have any idea when GCC 4.3.0 may be released with STM32 support?

The gcc 4.3.0 has been released on Mar. 5 2008, see gcc.gnu.org. From
the changelog: "Compiler and Library support for Thumb-2 and the ARMv7
architecture has been added." So STM32 are supported.

von Garry A. (garry_at_argus)


Rate this post
useful
not useful
Martin Thomas wrote:
> The gcc 4.3.0 has been released on Mar. 5 2008, see gcc.gnu.org. From
> the changelog: "Compiler and Library support for Thumb-2 and the ARMv7
> architecture has been added." So STM32 are supported.

Hi Martin:  Thank you very much for the update.  I see that you were
instrumental in putting the WinARM package together.  Where can I find
the latest WinARM package with the GNU 4.3.0 compiler included?

Thanks again for your help and support.
Garry.

von Martin T. (mthomas) (Moderator)


Rate this post
useful
not useful
Garry Anderson wrote:
> Martin Thomas wrote:
>> The gcc 4.3.0 has been released on Mar. 5 2008, see gcc.gnu.org. From
>> the changelog: "Compiler and Library support for Thumb-2 and the ARMv7
>> architecture has been added." So STM32 are supported.
>
> Hi Martin:  Thank you very much for the update.  I see that you were
> instrumental in putting the WinARM package together.  Where can I find
> the latest WinARM package with the GNU 4.3.0 compiler included?

I have just created one but it's new, build with some "hacking"
and not tested at all. If you are interested to test it please contact
me by e-mail (mthomas(at)rhrk(dot)uni-kl(dot)de)

von Nicolas T. (nico026)


Rate this post
useful
not useful
Martin Thomas wrote:
> Garry Anderson wrote:
>> Martin Thomas wrote:
>>> The gcc 4.3.0 has been released on Mar. 5 2008, see gcc.gnu.org. From
>>> the changelog: "Compiler and Library support for Thumb-2 and the ARMv7
>>> architecture has been added." So STM32 are supported.
>>
>> Hi Martin:  Thank you very much for the update.  I see that you were
>> instrumental in putting the WinARM package together.  Where can I find
>> the latest WinARM package with the GNU 4.3.0 compiler included?
>
> I have just created one but it's new, build with some "hacking"
> and not tested at all. If you are interested to test it please contact
> me by e-mail (mthomas(at)rhrk(dot)uni-kl(dot)de)

Hi to all!!!!

I'm trying to integrate WinARM toolchain in Eclipse IDE in order to
program a Cortex M3. I'm using the latest WinARM package with the GNU
4.3.0.
When I compile my project, I obtain several errors (near 75 errors) like
these:

c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/makebuf.c
undefined reference to `_fstat_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/makebuf.c
undefined reference to `_isatty_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/stdio.c
undefined reference to `_close_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/stdio.c
undefined reference to `_lseek_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/stdio.c
undefined reference to `_lseek_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/stdio.c
undefined reference to `_read_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/stdio.c
undefined reference to `_write_r'
c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/vfprintf.c
undefined reference to `__aeabi_dcmpeq'

What is the problem? Is it linked to a librarie?

von Martin T. (mthomas) (Moderator)


Rate this post
useful
not useful
> I'm trying to integrate WinARM toolchain in Eclipse IDE[...]
This is not an IDE/Eclipse-issue. I have successfully tested build and
debug with Eclipse using the GNU toolchain from WinARM 3/08 and
DevKitARM r23b , OpenOCD and Luminary LM3S811.

> When I compile my project, I obtain several errors (near 75 errors) like
> these:
>
> c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/makebuf.c
> undefined reference to `_fstat_r'
> [..]

(FAQ)

See the newlib manual. The newlib-syscalls are missing. The newlib for
WinARM 3/2008 is configured for reentrant-syscalls (like in DevKitARM).
Syscalls are needed esp. as hardware-interface of the stdio-functions. I
expect you are using functions like (s)printf in your code. The concept
is similar to the "retargeting" in example-code for Realview.

> c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/vfprintf.c
> undefined reference to `__aeabi_dcmpeq'

Uff, don't know what this is.

Please create a minimal example with all neded files to reproduce the
issue with a simple "make all" (no Eclipse Workspace needed).

von Garry A. (garry_at_argus)


Rate this post
useful
not useful
Hi Martin:

This is Garry again. I have been busy with other projects, but now I
have to get back to trying to use the WinARM package with the STM32.
Would you be kind enough to provide me with a link from which I may
download the latest WinARM package which you have put together for the
STM32 micro.  I am thinking I will use the WinAVR package as a base, in
order to get the Makefile Generator, then I plan to  hand-modify the
generated makefile as necessary to launch GCC for the STM32.  Generally
I use CodeWright for my IDE and, from a custom tool button, launch an
appropriate BAT file to spawn the makefile from the CodeWright IDE, then
capture the GCC results in a DOS window of the IDE.  It works well for
command-line compilers.

However, I was hoping you had a pre-compiled package for the STM32
because I am unfamiliar with compiling the GCC files to build the
package I would like.

Any assistance you can provide would be most appreciated.

Thank you for being there for all of us in the "sea of software".

Garry.

von Clifford S. (clifford)


Rate this post
useful
not useful
Martin Thomas wrote:
>> c:\winarms\build\gcc-build\arm-eabi\newlib\libc\stdio/../../../../../gcc 
-4.3.0/newlib/libc/stdio/vfprintf.c
>> undefined reference to `__aeabi_dcmpeq'
>
> Uff, don't know what this is.
>
> Please create a minimal example with all neded files to reproduce the
> issue with a simple "make all" (no Eclipse Workspace needed).

It looks like the software implementation of the == operator for double
precision floating point (at a guess). Looks like he's missing a default
library from the link perhaps. Maybe he explicitly inhibited default
libraries, and then omitted to link libgcc.a, or maybe there is a
problem with the new package. We'd need to see the linker invocation
from the build log to get an idea.


Clifford

von Bogdan M. (bogdanm)


Rate this post
useful
not useful
Garry Anderson wrote:
> Any assistance you can provide would be most appreciated.
>
> Thank you for being there for all of us in the "sea of software".
>
> Garry.

Hi,

I just posted a tutorial for building a GCC/newlib toolchain for
Cortex-M3 CPUs here:

http://elua.luaforge.net/tut_gcc_cortex.html

I hope this helps.

Bogdan

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.