www.mikrocontroller.net

Mikrocontroller.net Forum WinARM / Yagarto / ARM-GCC > WinARM support for STM32

Posted by Varuzhan Danielyan (vdaniel)
on 27.12.2007 08:26
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
Posted by Martin Thomas (mthomas)
on 29.12.2007 13:05
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
Posted by Varuzhan Danielyan (vdaniel)
on 07.01.2008 11:54
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
Posted by Martin Thomas (mthomas)
on 08.01.2008 14:10
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)
Posted by Garry Anderson (garry_at_argus)
on 12.03.2008 21:21
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.
Posted by Martin Thomas (mthomas)
on 13.03.2008 13:41
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.
Posted by Garry Anderson (garry_at_argus)
on 13.03.2008 20:35
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.
Posted by Martin Thomas (mthomas)
on 13.03.2008 23:18
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)
Posted by Nicolas tulasne (nico026)
on 28.05.2008 15:30
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?
Posted by Martin Thomas (mthomas)
on 28.05.2008 18:29
> 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).


Posted by Garry Anderson (garry_at_argus)
on 26.06.2008 19:20
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.
Posted by Clifford Slocombe (clifford)
on 26.06.2008 22:33
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
Posted by Bogdan Marinescu (bogdanm)
on 05.07.2008 14:48
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