cs2094-Programmer Software Development Tools for ARM Microcontrollers

December, 2009 Edition Copyright Arnold Kochman. Other copyrights also apply, including but not limited to the GNU General Public License.  

This CD contains a variety of development software that you can run on your PC. Programs are suitable for Windows/DOS and/or Linux/UNIX, and in a few cases other host systems. Included are a number of very useful compilers and IDE's, debuggers, simulators, loaders, executive codes and other potentially useful software.

Most packages are distributed in the form of compressed archives, for example .zip files for Windows packages and .tgz for Linux. The buyer is expected to be prepared to expand these files with a program such as PKUNZIP or WinZip for Windows, or tar, gzip, etc for Linux, etc.


ARM PROGRAMMING TOOLS ... December, 2009


COMPILERS/CROSSCOMPILERS

YAGARTO - A cross development environment for the ARM architecture, running on a Windows Or an Intel-based Macintosh host. It includes the GNU C/C++ toolchain and the Eclipse IDE. It is written in C and is released under a public license.
PocketGCC - A port of the well-known GNU C/C++ compiler (version 3.2) and Binutils (version 2.13) for ARM-WinCE-PE platform. Both crosscompiler and native builds are provided, allowing to develop applications for WindowsCE devices with ARM-compatible processor on the go without desktop. The crosscompiler is offered with a view to use on Windows platforms as well as Linux/UNIX platforms. The package is in C and C++ and is released persuant to the GNU General Public License.


EMULATORS/DEBUGGERS

SkyEye - A Simulator for ARM microprocessors and others. Users can run Operating Systems such as Linux, uCLinux, RTEMS etc and can analyze or debug in source level with gdb. The software runs on all Linux/UNIX type systems. It also runs on all 32-bit Windows systems, but requires the X Window System. The package is written in Assembly and C and is released under the terms of the GNU General Public License and the Open Software License 3.0.

ARM Processors supported by SkyEye
Processor name Core Architecture Status Running OS
S3C4510 ARM7TDMI ARM stable uClinux
S3C44B0 ARM7TDMI ARM stable uClinux
AT91 ARM7TDMI ARM stable uClinux
S3C3410 ARM7TDMI ARM stable uClinux
LPC2210 ARM7TDMI ARM -- uClinux
EP7312 ATM720T ARM stable linux
EP9312 ARM9 ARM stable linux
AT91RM9200 ARM9 ARM stable linux
S3C2410 ARM9 ARM stable linux
CS89712 ARM9 ARM stable linux
SA1100 StrongArm ARM stable linux
PXA25x XSCALE ARM stable linux
PXA27x XSCALE ARM stable linux
Softgun - An ARM (and other CPU) emulator. It is Intended to help developers of embedded systems without real Hardware. It is written in C for Linux/UNIX type systems and is distributed persuant to the GNU General Public License.

Softgun Components:
ARM926ejs CPU core ARM Memory Management Unit
HP Deskjet 460 Printer LCD Display
NS9750 AHB to PCI bridge NS9750 Serial Interface emulation
NS9750 Vectored Interrupt Controller NS9750 OHC USB module
NS9750 Watchdog and Timers NS9750 Ethernet
NS9750 I2C AMD NOR Flash
Freescale i.MX21 UART i.MX1/i.MX21 AITC
i.MX1/i.MX21 General Purpose Timers i.MX21 GPIO module
i.MX21 DMA controller i.MX21 SD-Card controller
i.MX21 CSPI controller i.MX21 LCD controller
SD-Card I2C emulation using GPIO ports
STE10/100 DM9000
CS8900 M93C46 Mircowire EEPROMs
SJA-1000 PCF8563 I2C realtime clock
DS1337 I2C realtime clock DS1305/DS3234 SPI realtime clocks
PCF8574/8575 I2C IO-Expanders MAX6651 I2C Fan Controller
PCA9544 4 Channel I2C Multiplexer PCF8591 A/D-Converter
LM75 Atmel AVR 8-Bit CPU core
Many ATMega 644 peripherals
SimIt-ARM 3.0 - An instruction-set simulator that runs both system-level and user-level ARM programs. It supports both interpretation and dynamic-compiled simulation. It is developed for the IA32 Linux platform but may work for other platforms as well. SimIt-ARM supports the ARM v5 architecture, including the memory management unit and some fundamental I/O devices. SimIt-ARM is fast; on a Pentium D 2.8GHz desktop, the interpreter runs at above 30MIPS. The dynamic-compiled simulator runs even faster, especially for long simulation tasks or when a multi-core workstation is used. The package is developed in C++ and all simulation states are packaged in C++ classes. Therefore it is easy to create multiple simulator objects for modeling multiprocessor targets. It is also easy to extend the simulator by deriving new classes. SimIt-ARM is for Linux and is offered under the GNU General Public License.
GXemul - A full-system computer emulator, emulating ARM processors, among others along with related peripherals. In some cases the emulation is sufficiently faithful to run unmodified guest operating systems run as if they were running on real hardware. The package is written in C and purports to be portable. However, inasmuch as it uses the X Window System it favors Linux/UNIX type systems. GXemul is distributed under the BSD License.
ARM9Core - An emulator for the ARM9 microprocessors, based upon a very accessible C++ library. It runs on an x86 Win32 platform. The library emulates the basic core while allowing you are free to implement the subsystem specifics of the machine whose behaviour you are wish to emulate. ARM9Core is distributed under the GNU Library or Lesser General Public License.


OPERATING SYSTEMS/ENVIRONMENTS

FreeRTOS Real Time Kernel - FreeRTOS - Mini RTOS kernel for small embedded systems. Preconfigured example programs are included for a variety of microcontroller architectures including ARM7, ARM CORTEX M3. FreeRTOS can operate in fully pre-emptive, co-operative, or hybrid configurations. It supports tasks, queues, binary semaphores, counting semaphores, recursive semaphores and mutexes. It is also available for other architecutes. FreeRTOS is distributed under the terms of the GNU General Public License. Compatible commercial versions OpenRTOSTM and SafeRTOSTM are available to support additional development requirements and commercial support is available.
ARMboot - A firmware suite for ARM based platforms. ARMboot is heavily based on the sister-project PPCboot, which provides similar functionality on PowerPC based systems. The package is written in C and assembly language for Linux/UNIX systems but purports to be portable. It is released under the terms of the GNU General Public License.

Supported Hardware
Board Configuration Notes
LART lart_config "Linux ARM Radio Terminal"
SSV DNP1110 dnp1110_config SSV DilNET PC (with flash support)
Shannon shannon_config Tuxscreen w/IrDA keyboard, LCD screen
implementa impA7 impa7_config EP7211 based
CLEP7312 ep7312_config Cirrus Logic EP7312 Dev. Board
S3C2400X samsung_config Samsung S3C2400X
SDMK2410X sdmk2410_config Samsung SMDK2410X Eval Board
EPXA1DB epxa1db_config Altera EPXA1 Development Board
Cradle cradle_config HHP PXA250 Infrared to Ethernet router
Lubbock lubbock_config Intel PXA250 Development Platform
QP State Machine Frameworks - QP - An event-driven framework for embedded systems with functionality that resembles that of a RTOS in some ways. It enables the programmer to conveniently create concurrent UML state machines from C or C++ codes. The package includes development kits for ARM 7, ARM 9 and ARM Cortex-M3, among other microcontrollers. The package is written in C and C++ and is distributed under the GNU General Public License and other public licenses.


UTILITIES/PROGRAMMING AIDS

Binary vIEW - bview - A portable, advanced file viewer with built-in editor for binary, hexadecimal and disassembler modes. It contains a highlight ARM disassembler and will also disassemble code of many other microprocessors. It is written in C and on all 32-bit Windows and all Linux/UNIX type systems including Mac OS X and QNX, and OS/2. It is made available under the GNU General Public License.
Universal firmware loader - WinLoader - A utility to load firmware into different devices using various interfaces with extensible programmer driver support. It is derived from the WinAvrLoader software package. It is written in C++ for 32-bit Windows systems and is released under the GNU General Public License.


The software, in most cases, requires a Windows, DOS, or Linux/UNIX host system. The user will need to have appropriate archive utility programs in order to access some of the files. This should not be any problem for the files that are relevant to your host system.

Please understand that I cannot give assurances about the suitability of any package for a particular purpose.