WinARM
Version 20060117
WinARM is collection of tools to develop applications for ARM-controllers in C and C++ on MS-Windows platforms ("hosts").
Installation
Unpack the archive to C:\ (i.e. C:\WinARM\bin should exist) and extend the system search-path (%PATH%) by
C:\WinARM\bin;C:\WinARM\utils\bin; Other locations/drives have not been tested but should work too.
Components
- GNU-C/C++-Compiler (cross compiler/linker/assembler arm-elf-*) Version 4.0.2 incl. stdlib3. Compiled from the FSF-Sources
The configuration supports ARM-Mode, Thumb-Mode and Mixed(ARM/Thumb)-Mode, little/big-endian and floating point-emulation
- GNU-Binutils Version Version 2.16 (CVS snapshot 13.1.2006) FSF-Sources
- newlib Version 1.14.0 (build for reentrant syscalls)
- newlib-lpc Rel.5 (reentrant syscalls for newlib and Philips LPCs)
- GNU-Utils do support the compiler/linker (make, sh etc. all Win32-native)
- ARM header-files (register-defintions) from gnuarm.org
- Example applications with full source-code, makefiles, linker-scripts and startup-code for Philips LPC2000 and Atmel AT91SAM7 ARM7TDMI controllers.
More Examples on my ARM-Projects pages.
- Programmers Notepad Editor Version 2.0.6.1
- The lpc21isp in-system-programming-software for
Philips LPC2xxx and the Analog Devices ADUC 70xx family by Martin Maurer. Included Versions: 1.31 and 1.33 (BETA!)
- Bray Terminal
- Insight-GDB 6.4.50 - Win32-Native (devkitpro.org)
- GDB (command-line without Insight) Version 6.3.50 from Codesourcery
- Setup-Exe of Macraigor's OCDRemote (Wigger-gdb interface)
Hints
- Programmers Notepad can be used as Editor. Some items in the tools-menue have been added for WinARM. First steps: start Programmer-Notepad (pn/pn.exe) and load a
project file from the examples. Select Tools/make all.
- The makefiles supplied with the examles can be used as templates for own projects.
- Some documentation is included - see the doc/ subdirectory
- For JTAG-debugging e.g. with a "Wiggler": install ocdremote(hwsupport) from subdirectory utils/macraigor. Start ocdremote and start insight (utils/insight/).
The supplied version of Insight-gdb is rather old but the only one I've found that works without cygwin-DLLs. More information on the FreeRTOS and Macraigor Web-Pages.
- The Bray-Terminal (utils/bin/terminal.exe) can be used for I/O via RS232.
- The programming-software lpc21isp only supports Philips LPC2xxx and and Analog Devices ADUC70xx controllers which can programmed via
a serial connection ("RS232"). If you have other ARM controllers you may have to use extra hardware like ULINK (Keil) or J-LINK (Segger).
- To use functions from stdio (printf et al) in own projects interface-functions for the newlib have to be provided (System Calls/"syscalls",
see chapter 11 in doc/libc.pdf). For LPC2000 you can link with the newlib-lpc (libnewlib-lpc.a, see exampls lpc2129_newlib_cpp and lpc2106_newlib-lpc3_test2).
The examples lpc2129_adc_stdio and at91sam7s64_Hello show how to implement the system calls without an additional library (syscalls.c).
Remarks
- Man and info-pages are included just because they have been created during the build-processes.
WinARM does not include any software to read these files. See the directory /doc for some documentation
in pdf and html-format.
- Check out Dev-C++ which offers much more freatures than Programmers Notepad and can be configured to
work with WinARM.
- The makefile in the at91sam7_Hello-Example is the one I use as template for own projects.
- If WinAVR is installed on your system there is not need to add the WinARM/utils/-directory to the path. WinAVR provides the needed tools
in it's WinAVR/utils/bin/-directory.
TODO
Please send bug-reports and feedback.
Martin Thomas (eversmith@heizung-thomas.de)
Changelog
Version 20060116 -> Version 20060117
- fixed missing files and wrong subtree for insight-gdb.
I have made a mistake while collection all files
together to the 20060116-release. If you don't want
to download the complete WinARM-package again just get the
insight-gdb from www.devkitpro.org. Inishgt-gdb in
WinARM is just a copy of the devkitpro-release where
the debugger binarys for psp and mingw have been removed to
decrease the size of the WinARM archive.
Version 8/2005 -> Version 20060116
- bintuils 2.15 -> 2.16CVS 13.1.2006
- arm-elf-gcc 4.0.1 -> 4.0.2
- removed mulitlib-option fno-leading-underscore/fleading-underscore
- newlib 1.13.0 -> 1.14.0
- lpc21isp 1.28 -> 1.31 ("release")
- lpc21isp 2.01 -> 1.33 ("beta") seems the numbering scheme has changed
- newlib-lpc Rel.4 -> Rel.5
- Programmers Notepad 2.0.5.x -> 2.0.6.1
- Insight-gdb 5.1 -> 6.4.50
- Macraigor hwsupport 2.13 -> 2.15
- FreeRTOS 3.2.0 -> 3.2.4 in the example-directory
- sync of examples with those from the web-page (new examples for LPC2138 and AT91SAM7S64)
- It seems that int isatty(int) is no longer provided by the environment, see the
example lpc2106_hello_rs232_newlib and the various syscalls.c for a workaround if
the error message "unknown reference to isatty" appears during the link-process.
(Reason might be the additional configure-option --disable-newlib-supplied-syscalls for
newlib which had to be added since the build of newlib 1.14.0 failed when the "supplied"
syscalls were not disabled.)
- It seems that the linker does not provide a correct "." if the section before
is empty and the current section is aligned in the section "header". I'm not
sure why - maybe a new feature or a bug in the binutils. In the "blinkswitch"
examples for LPC2106 und LPC2129 I've somehow fixed this and verified the correct
result by the values given in the map-file.
In the linker-script for ROM
.stack ALIGN(256) :
{
...
has been replaced with:
.stack :
{
. = ALIGN(256);
Version 5/2005 -> Version 8/2005
- arm-elf-gcc Version 4.0.1 (was 4.0.0)
- lpc21isp 1.28 and 2.01 (latest "official" and beta versions at release date)
- lpc21isp now in /WinARM/bin (was /WinARM/utils/bin) so the WinARM/utils/bin is not needed
in the path if MinGW/minSYS, Cygwin or WinAVR is installed.
- make.exe now 3.78.1 again
- sh.exe now the old zsh again
- added Codesourcery's gdb 6.3.50 (for tests with DEV-C++ as "IDE")
- latest versions of the Macraigor-Utils
- sync of examples with those from the web-page (some new LPC2129 and a AT91SAM7S64 example)
- FreeRTOS 3.2.0 in the example-directory
(latest = by the time of writing this = 19. Aug. 2005)