Arm7

26
ARM-Projects by Martin THOMAS Please: Before asking any questions by e-mail or in the forum make sure that you are using the latest version of the examples and/or tools. Some problems have already been fixed. Available Projects and Information (Content) You may like to visit my AVR-Projects page too. WinARM . The gnu-toolchain and several tools and samples for ARM controller/processors for MS-Windows- Platforms. (last Update of the package 28. Mar 2008 (Testing), last Update of additional information/add- ons/bug-fixes 6. Feb. 2008) WinXSCALE precompiled GNU-Toolchain for xscale-elf targets (last Update 22. Sept. 2006) OpenOCD as flash-programming Software for AT91SAM7, LPC2000 and STR7 (last Update 31. Aug. 2008) Using OpenOCD with ARMv7 / Cortex-M3 / LMI Stellaris and ST STM32 (last update 30. Apr. 2009) A short introduction into ARM-JTAG debugging using Wiggler(-clones) and the gnu-Debuggers (last Update 4. June 2005) A small demo for the LPC2106 and LPC2129 (ARM7TDMI) controllers - LED and button interfaceing ( GPIO ) (last Update 19. March 2007) A small demo for the LPC2106 and LPC2129 (ARM7TDMI) controllers - LED and button interfaceing (GPIO) and Timer-Interrupt (via VIC) (last Update 19. March 2007)

Transcript of Arm7

Page 1: Arm7

ARM-Projectsby Martin THOMAS

Please: Before asking any questions by e-mail or in the forum make sure that you are using the latest version of the examples and/or tools. Some problems have already been fixed.

Available Projects and Information (Content)

You may like to visit my AVR-Projects page too.

WinARM . The gnu-toolchain and several tools and samples for ARM controller/processors for MS-Windows-Platforms. (last Update of the package 28. Mar 2008 (Testing), last Update of additional information/add-ons/bug-fixes 6. Feb. 2008)

WinXSCALE  precompiled GNU-Toolchain for xscale-elf targets (last Update 22. Sept. 2006)

OpenOCD as flash-programming Software for AT91SAM7, LPC2000 and STR7 (last Update 31. Aug. 2008)

Using OpenOCD with ARMv7 / Cortex-M3 / LMI Stellaris and ST STM32 (last update 30. Apr. 2009)

A short introduction into ARM-JTAG debugging using Wiggler(-clones) and the gnu-Debuggers (last Update 4. June 2005)

A small demo for the LPC2106 and LPC2129 (ARM7TDMI) controllers - LED and button interfaceing ( GPIO )  (last Update 19. March 2007)

A small demo for the LPC2106 and LPC2129 (ARM7TDMI) controllers - LED and button interfaceing (GPIO) and   Timer-Interrupt (via VIC)  (last Update 19. March 2007)

A small demo for the LPC2106 (ARM7TDMI) controller -   UART - Programming (last Update 26. Oct 2004)

A small demo for the LPC2106, LPC2129, LPC2138, LPC2368 and LPC2378 (ARM7TDMI) controllers -   interrupt-driven UART  (last Update 2. May 2007)

Controller Area Network   (CAN) with Philips LPC2129  (last Update 17. May 2005)

arm-elf-gcc and newlib   stdio /"printf"-Interface and LPC2129 ADC example (last Update 13. March 2007)

Page 2: Arm7

arm-elf-gcc Example Application with some   Functions in RAM   ("fastrun"/"ramfunc")  (last Update 17. May 2005)

C++   with LPC ARM7TDMI/newlib/newlib-lpc (inheritance, polymorphism) (last Update 11. July 2006)

Port of the   Philips LPC213x/214x example-colletion for the gnu- toolchain (last update 5. Dec. 2006)

GPIO, UART and interrupt example for the   NXP LPC2378 / NXP LPC2368 (last update 29. June 2007)

Interfacing NXP(ex.Philips) LPC2000, LPC1700, Atmel AT91SAM and STMicroelectronics STM32 with   memory-cards   (SD/MMC)  (last Update 11. July 2010)

FreeRTOS example with LPC2138  (last Update 19. May 2006)

AT91SAM7S GPIO   Example   (last Update 22. July 2006)

AT91SAM7S Timer interrupt   Example  (last Update 22. July 2006)

AT91SAM7S UART   Example  (last Update 21. Sept. 2007)

AT91SAM7S GPIO/interrupt/UART   Example with a lot of "gcc specials" (last Update 3. Dec. 2005)

AT91SAM7S USB   Examples  (last Update 10. Mar. 2007)

Interfacing ATMEL AT91SAM7S ARM7TDMI with   memory- cards   (SD/MMC)  (last Update 15. Sept. 2009)

GNU-Port of the Atmel "MIPS" example with "gcc/as specials"  (last Update 15. July 2006)

AT91SAM7 SWI, Remap, GPIO, PIT and stdio Example ("gamma")  (last Update 30. Aug 2007)

C++ with the GNU-Toolchain on an AT91SAM7  (last Update 14. Sept. 2006)

Analog Devices ADµC7000 ARM7TDMI controller Examples  (last Update 5. Dec. 2007)

STR71x GPIO, Interrupt, Timer   Example   (last Update 25. Apr. 2007)

STMicroelectronics ARM7 Controller Examples  (last Update 22. Sept. 2006)

GNU port of the STR7 UART-Bootloader  (last Update 24. Sept. 2007)

ARMv7 Cortex M3   examples  for LMI/TI LM3S, ST-Mircoelectronics STM32 and NXP LPC17xx (last update 11. July 2010)

Simple   STM32 Digital Picture Frame  with an STM32 conntected to a 2.8" Color-LCD-Module (last update 29. Nov. 2009)

Using   C++   with the GNU arm-crosstoolchain  and Cortex-M3 controllers (last update 23. Dec. 2009)

Interfacing Maxim/Dallas   DS18x20 Temperature Sensors   with an LPC2106 (ARM7TDMI) (last Update 26. Nov 2004)

Page 3: Arm7

Interfacing   Graphics-LCDs   with the ARM controllers (KS0108, SED1520) (last Update 17. Oct 2007)

"T"-Clock : DCF77 radio-clock-receiver with Graphics-LCD display for LPC2106 (ARM7TDMI) (last Update 23. Dec 2005)

Machine-to-Machine (M2M) communication  A data-logger with GPRS-connection (last update 1. Mar. 2006)

A patched version of the ULINK Windows-driver  (last Update 7. Sept. 2005)

"Last updated" may be just additional information not always a new version of a software-package. All presented LPC2106, LPC2129 and LPC2138 projects should work with minimal modifications in the linker-scripts and source-code on all Philips LPC2xxx controllers. Most of the code should also work on other ARM7TDMI controllers after small modifications.

If you think that I could help you with your projects: just send an e-mail. I'm looking for "freelance"-jobs.

You may also find useful code and information on my Atmel AVR-Projects page

If you send me an e-mail: Please use your full name (your _real_ full name). And it's always nice to get some kind of feedback if an answer to a question did help or did not help. I often spend a lot of time answering e-mails and would at least like to know if my suggestions did or did not help solving a problem.

Questions or suggestions? Please use the support-forum for WinARM/arm-elf-gcc and the example-projects.

WinARM

WinARM is a collection of GNU and other tools to develop software for the ARM-family of controllers/processors on MS-Windows-hosts. Unlike other collections WinARM does not depend on a cygwin or mingw-environment. All needed tools are in the distribution-package. WinARM has been tested with Philips LPC2106, Philips LPC2129, Philips LPC2138, Philips LPC2148 and Atmel AT91SAM7S64, AT91SAM7S256, AT91RM9200 ARM7TDMI(-S) controllers (the list is based on own tests and user feedback). The gnu-toolchain and the supplied tools should work with all microcontrollers based on ARM(-TDMI/Thumb etc.) architecture. WinARM has been made in the spirit of WinAVR which is a collection for Atmel AVR 8bit-Controllers.

WinARM includes in Version 20060606:

Page 4: Arm7

GNU-C/C++-Compiler (cross compiler/linker/assembler arm-elf-*) Version 4.1.1 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 CVS 20060606 FSF-Sources

newlib  Version 1.14.0 (build for reentrant syscalls)

newlib-lpc  Rel.5a (reentrant syscalls for newlib and Philips LPCs)

GNU-Utils to support the compiler/linker (make, sh etc. from the mingw-project)

ARM header-files (register-defintions) from gnuarm.org and others

Example applications with full source-code, makefiles, linker-scripts and startup-code for Philips LPC2000, ADuC7k 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.37(BETA)

Bray Terminal  by Vlado Brajer

Insight-GDB 6.5.50-20060517 - Win32-Native from devkitpro.org

gdb (command-line without Insight) GNU gdb 6.4.50.20060226-cvs from Codesourcery

Setup-Exe of Macraigor's OCDRemote (Wigger-gdb interface, Ver. 2.16)

Open On-Chip debugger (OpenOCD, SVN Version 65) made by Dominic Rath, update available further down.

H-JTAG (Ver. 0.2.1 beta 20060402) made by "twentyone"

J-Link gdb-Server V1.0 from the gnuarm yahoo-group

Planned extensions:

Installer

User-Forum: A support-forum for WinARM/arm-elf-gcc and the example-projects. You are invited to visit this forum and ask questions or help others.

Download by right-click->save as, please download only one of the archives either the zip or the self-extracting-archive. The contents is the same. Please respect all licenses of the included components. WinARM itself has no additional license.

Download the WinARM 20060606   zip -Archive here  (ca. 95 Megabytes, "Readme.htm" of this version).

Page 5: Arm7

or

Download the same version but packed with a different packer (7zip) and available as self-extracting-archive here (just ca. 44 Megabytes).

Please do not use download-managers with more than 5 parallel connections! (There are people who use >30 parallel connections.) Download only one of the archives (zip orthe self-extracting archive). Both archives have the same content, which has just been packed with a different method. I will be forced to throttle the server and use traffic-shaping if this habbits do not stop.

Mirror sites:

Alex Gibson kindly provides a mirror-site   (winarm.alexthegeek.com)

Oleg Seiljus from xVerve provides a WinARM-package with an installer and additional drivers for the Signalyzer tool (in the Support/Download-section of the xVerve Web-site).

While the WinARM package might still be useful because of the included examples and tools the GNU tools (Compiler, binutils etc) in the WinARM package are rather outdated. Packages with more recent versions of the GNU ARM-cross-toolchain for MS Windows hosts:

Codesourcery's Sourcery G++ Lite Edition for ARM

Dave Murphy's devkitARM - part of devkitPro

Michael Fischer's Yagarto

Updates and Add-Ons:

Gérald/dupon jean has sent a ARM makefile-generator similar to Jörg Wunsch's mfile (for AVR). It can be downloaded here.

Michael Fischer  modified gdb to improve compatibilty with Eclipse. His gdb-Version is available here.

OpenOCD (MS-Windows "native build") including an installer is available from Michael Fischer's Yagarto pages.

lpc2129_adc_stdio example -update

Updated AT91SAM7s-examples

MS Windows-binary of lpc21isb V1.43 (beta).

Test-release WinARM 20070505: release-notes, Download (self-extracting archive created with 7-zip, 118MB(!)), Download (zip-Archive, 180MB(!))

Another test-release: WinARM 20080331. Based on GNU Binutils 2.18.5, GNU gcc 4.3.0 (C/C++), newlib 1.16, GNU gdb 6.8 (with XML and TUI

Page 6: Arm7

support), OpenOCD SVN527. The precompiled toolchain offers thumb2 support (i.e. for Cortex-M3 like LuminaryMicro LM3S and STMicro STM32.) Again: just a test-release, preliminary tests with examples for LM3S811 and STM32F103 worked as expected. Download the 20080331 test-release [here] (ca. 37MB, no examples included)

WinARM and Keil/ARM uVision

Jaroslav Ban from the Technical University Kosice kindly contributed some files which help to integrate the GNU-Tools from WinARM (arm-elf-gcc/arm-elf-as) into the Keil/ARM uVision IDE. There is a readme-file in the archive with installation- and usage-instructions. (Update mthomas 20070913: objcopy-"glue" for "create hex-file"). [Download] (glue-package version 20070913).

WinARM and Microsoft Vista

Adriaan Beluga has sent the following e-mail: Thanks for your suggestions. With them I managed to get everything to work again under Vista ! ;-) In the end I only needed to modify the path in my batch file which starts "pn.exe". Here is what it looks like now:

@echo off

set ARM=c:\WinARM

set PATH=%ARM%\libexec\gcc\arm-elf\4.1.1;%ARM%\bin;%ARM%\arm-elf\bin;%ARM%\

utils\bin;

start /b pn

Thanks to Adriaan for testing WinARM with Vista (I currently do not have access to a PC running Vista). Users who do not use a batch-file to start Programmers-Notepad or another editor may add the entries to the system search-path from the Workplace properties. So where Windows NT/2K/XP users just added C:\WinARM\bin;C:\WinARM\utils\bin Vista users add C:\WinARM\libexec\gcc\arm-elf\4.1.1;C:\WinARM\bin;C:\WinARM\arm-elf\bin;C:\WinARM\utils\bin .

Information from Michael Langfort: I’m using the 20060606 version of WinARM on Vista Home Premium. When I tried to build a WinARM-based project (that builds fine on WinXp), I got an error:

1>arm-elf-objdump -h -S -C app.elf > app.lss

1>/usr/bin/sh: /c/winarm/bin/arm-elf-objdump: Invalid argument

This is related to the invalid parameter being passed to a windows api. Aaron Giles page talks about this in relation to MinGW. I went ahead and did his fix, and downloaded MinGW 5.1.3. I deleted the WinARM make and replaced it with the MinGW 5.1.3 make (Its called MinGW-make) and added all the paths spoken about on his page, and now WinARM works. Please think about changing the WinARM Make to

Page 7: Arm7

match that version. --Michael (mthomas: I will include the mentioned version in to the next WinARM-relase.)

The old WinARM Version 20060331 with gcc 4.1.0 is still available. [Download] (zip, ca. 90 Megabytes, "Readme.htm" of this version).

The old WinARM Version 20060117 with gcc 4.0.2 is still available. [Download] (zip, ca. 80 Megabytes, "Readme.htm" of this version). In case

you have problems with make ("e=2", "file not found") with the old Version 20060117 please replace the

complete WinARM/utils/bin directory with the one from the alternate-utilites for version 20060117. Take care:

the make version 3.80 included in the archive is case sensitive even on MS-Windows systems, so filenames in

the makefile have to be given in correct upper- and lowercase.

The old WinARM Version 20050209-2 with gcc 3.4.3, binutils 2.15.94, newlib 1.13 is still available. Download the old WinARM 20050202 zip-Archive here (zip, ca. 49 Megabytes) or here (tar.bz2, ca. 41 Megabytes).

LPC2106 and LPC2129 ARM7 GPIO example

This is a simple example to let a LED blink and test button-input (GPIO) on a Philips LPC2106 (ARM7TDMI-S-architecture). The demo-board LPC-P2106 from Olimex has been used. The project-setup is adapted for the arm-elf GNU-toolchain on MS-Windows "hosts" but since the GNU-tools are used, the changes needed to build the project on Unix/Linux are minimal. Please read the readme.txt and comments in the source-code and the makefile for further information. Download the complete archive here (timestamp 20060629, updated Makefile, tested with WinARM 6/2006)

A blink-switch-example for the Philips LPC2129. Code prepared for a Olimex LPC-P2129 demo-board(*1) but can be adapted to other hardware easily. Tested with WinARM 4/05.[Download] (Timestamp 20070319, fixed stack-align in linker-scripts)

Another blink-switch-example with a little C++ support (just one class). The example has been made to verify the function of makefile, linker-scripts and startup-code. Code prepared for a LPC2106, tested with WinARM 2/05 and 4/05. [Download] (Timestamp 20050429)

Page 8: Arm7

LPC2106 and LPC2129 ARM7 GPIO and timer interrupt example

This is a simple example to let a LED blink and test switch-input on a Philips LPC2106 (ARM7TDMI-architecture). The delay for the blink-routines is timed by a system-timerwhich updates a "timebase" in an interrupt service routine (very much like the Blinky_IRQ sample from Keil GmbH). The demo-board LPC-P2106 from Olimex has been used. Please read the readme.txt and the comments in the source-code and the makefile for further information. The code and makefile are prepared to be built with WinARM but should be rather portable among other gcc-based toolsets. Download the complete archive here (timestamp 20050514, makefile (with thumb-interwork-options), headers, linker-scripts and startup-code included). Make sure to use a new version of arm-elf-gcc (>=3.3.1?) since the interrupt-code did not compile correctly in old gcc-versions. Code has been tested with gcc V4.0.0 (WinARM 4/05).

A similar example for the Philips LPC2129. Demonstrates timer-irq, VIC, thumb-interwork, linker-scripts, startup-code etc. Code prepared for the Olimex LPC-P2129 Rev A demo-board(*1) but can be adapted to other hardware easily. Tested with WinARM 4/05. [Download] (Timestamp 20070319, fixed stack-align in linker-scritps)

Another Blinky-Example for the Philips LPC2129. This one is for the Keil MCB2100 evaluation board. Beside of the adaption for the Keil board this example includes an updated makefile and updated linker-scripts. The source-code has been extended and comments have been added. Tested with WinARM 1/06. [Download] (Timestamp 20060223)

LPC2106 ARM7 UART example

This sample-application demonstrates interfacing the ARM7-UART(0) in polled ("simple" non-interrupt) mode with a LPC2106 ARM7TDMI. Derived from open-source/free code by R O Software. The demo-board LPC-P2106 has been used. Please read the readme.txt and the comments in the source-code and the makefile for further information. The code and makefile are prepared to be built with WinARM but should be rather portable among other gcc-based toolsets. Download the complete archive here (timestamp 20041214, makefile, headers, linker-scripts and startup-code included). Code has been tested with arm-elf-gcc V3.4.2. Thanks to Murray Horn for reporting a bug in the PLL-Setup. Fix applied in 20041214.

Page 9: Arm7

LPC2106, LPC2129, LPC2138 and LPC2378 ARM7 interrupt-driven UART

This sample-application demonstrates interfacing the ARM7-UART(0) in "interrupt-mode" with a LPC2106 ARM7TDMI-S. Adaption and slightly modified and extended version from open-source/free code by R O Software for the demo-board LPC-P2106. Please read the readme.txt and the comments in the source-code and the makefile for further information. The code and makefile are prepared to be built with WinARM but should be rather portable among other gcc-based toolsets. Download the complete archive here(timestamp 20041028, makefile, headers, linker-scripts and startup-code included). Code has been tested with arm-elf-gcc V3.4.2.

A similar example for the Philips LPC2129 ARM7TDMI-S, tested with WinARM 4/05 (gcc 4.0.0). Download the complete source-archive here (timestamp 20050514).

A similar example for the Philips LPC2138. Demonstrates interfacing both UARTs, timer-irq, VIC, thumb-interwork, linker-scripts, startup-code etc. Code prepared for the Keil MCB2130 demo-board but can be adapted to other hardware easily. Tested with WinARM 8/05. [Download] (Timestamp 20051008)

An improved version of the example for the NXP LPC23xx and LPC24xx family. Beside the demonstration for interrupt-driven UART control which is still based on the R O software-code. This example also demonstrates how to configure the clock-system in the LPC23xx/24xx controllers. The clock-system is a little different from the "older" devices. The code also demonstrates how to use the "new" vectored interrupt controller. The VIC in the LPC23xx/LPC24xx family is based on another ARM primecell than the VIC in the LPC21xx/22xx so this had to be taken into account. Additionaly the code has some functions to connect "call-backs" to a timer-IRQ (not LPC specific). The code has been tested with an LPC2378 on an Olimex LPC-2378-EK using the GNU-toolchain as in my WinARM collection 6/06. [Download] (Timestamp 20070502)

LPC2129 CAN Example

This is just a port of the example "CANall V1.10" from Embedded Systems Academy to WinARM and the Olimex LPC-P2129 board(*1) (Philips LPC2129 ARM7TDMI-S). Some minor cleanup has been done in the CAN-code to avoid compiler warnings. Just connect CANL/CANH of both CAN channels and the on-board LEDs will blink.

Page 10: Arm7

Tested with WinARM 4/05 (gcc 4.0.0). Download the complete source-archive here (timestamp 20050514).

Newlib/StdIO-Interface and LPC ADC example

This example-application demonstrates interfacing C-standard I/O ("printf") with the ARM7-UART(0). A minimal set of reentrant support functions for newlib's stdio and malloc is included. This code does not need newlib-lpc itself (some code of newlib-lpc has been copied into the source). It may be easier to port this code to other ARM-based controllers. Additionaly the demo-application includes a small example which shows how to interface the build-in analog-digital converter (ADC) of a LPC2129 (AIN0).

Download the complete archive [here] (timestamp 20070313, makefile, headers, linker-scripts and startup-code included, includes fixes from Alexey Shusharin - Thanks). Code has been tested with arm-elf-gcc V4.0.0 and a Philips LPC2129 ARM7TDMI-S on a LPC-P2129-board.

old version 20060710 still available here

C++ with LPC ARM7TDMI/newlib/newlib-lpc

This example-application demonstrates C++ on ARM-controllers with the gnu/gcc-toolchain. The gnu libstdc++ is in use. The newlib and newlib-lpc provide the needed "low level" functions. C++ inheritance and polymorphism are implemented in this example. Target is a Philips LPC2129 ARM7TDMI-S but the code should be rather portable as long as a gnu/gcc-toolchain is used and libstdc++ is supported for the target. Code, linker-scripts and makefile have been tested with WinARM. Download the complete source-archive here(timestamp 20060711, makefile, headers, linker-scripts and startup-code included). The newlib and newlib-lpc (syscalls for Philips LPC2000) must be provided by the build-environment as done by WinARM. (updates: added extern "C", added demo for classes from different object-files).

Page 11: Arm7

C++ with Cortex-M3, the GNU ARM cross-toolchain and newlib

This example-application demonstrates C++ on ARM-controllers with Cortex-M3 with the GNU cross-toolchain. The gnu libstdc++ is in use. C++ inheritance and polymorphism are implemented in this example. Target is a STM32F10x controller with ARM Cortex-M3 core but the code should be rather portable (i.e. for ARM7TDMI based controllers) as long as a GNU toolchain is used. The application has been tested with Codesourcery G++ lite for arm-eabi (Q1/2009) and a MINI STM32 board (mendium density STM32F103). The package includes full source-code with a minimal syscall implemenation, Makefile and linker-script.

[Download] of the complete package (timestamp 20091223)

Changelog:

20091223: various modifications and updates, old version 20091205 should not be used anymore

Run selected Functions in RAM with arm-elf-gcc

This example-application demonstrates how to set-up the compiler and linker to execute selected functions from RAM. Shown in this example:

Declare functions in RAM (section attribute)

Declare functions to be called by a "long-call" (long-call attribute)

Linker-script-entries for the "function-section"

Startup-code which transfers the function-code from ROM to RAM

Target for this example is a Philips LPC2129 ARM7TDMI-S but the code should be rather portable as long as a gcc-toolchain is used. Code, linker-scripts and makefile have been tested with WinARM (4/05). Download the complete source-archive here (timestamp 20050510, makefile, headers, linker-scripts and startup-code included).

GPIO, UART and interrupt example for the NXP LPC2378, NXP LPC2368 and other NXP LPC23xx/24xx devices

Page 12: Arm7

This code example demonstrates using the GNU-toolchain with the NXP LPC23xx/24xx family. It shows how to configure and use GPIO (i.e. LED blink, Button read), UART (buffered RX, interrupt) and timer-interrupts. and more. The basic C source-code is from the NXP example-collection (available from nxp.com) and has been adapted and extended a little bit. I have ported the startup assembler-code and added an interrupt-wrapper (incl. nesting) so porting of existing code for other toolchains is rather easy. Also included are scripts to upload the user-application to the internal flash with OpenOCD (testing).

Download the example [here] (timestamp 20070629, makefile, headers, linker-scripts and startup-code, OpenOCD configuration and -scripts included). Code has been tested with arm-elf-gcc V4.1.2 (as in my WinARM 5/07-testing collection) with a NXP LPC2378 ARM7TDMI-S on an Olimex LPC-2378-STK board.

Changelog:

20070629: modified/fixed SWI-handler, demonstrates activation of IRQ-exceptions in user-mode thru swi-call (see startup-code and main()). The old version without swi-demo is still available [here] (timestamp 20070430)

Philips LPC213x/214x examples ported for the GNU-Toolchain

A ported version of the Philips LPC213x/LPC214x example "code bundle" to the GNU-toolchain (arm-elf-gcc) can be found on this page.

FreeRTOS example for LPC2138

An example for the LPC2106 on the Olimex LPC-P2106-board comes with the FreeRTOS-code. This is a ported version of the example to the LPC2138. The LED-handling has been adapted to the Keil MCB2130 evaluation-board. The code has been tested with WinARM 3/06 (arm-elf-gcc 4.1.0). [Download] (timestamp 20060519, zip-Archive, ca. 200kBytes).

AT91SAM7 Examples

On my AT91 projects page you can find:

Page 13: Arm7

A GPIO example application for the Atmel AT91SAM7S64 (should work with all AT91SAM after minimal changes) which demonstrates usage of the general IO (LEDs/Buttons).

An AT91SAM7 interrupts example which demonstrates "AIC"-interrupts by a timer and an external interrupt.

An AT91SAM7 Serial-IO/UART example for the Atmel AT91SAM7S64 (should work with all AT91SAM after minimal changes) which demonstrates UART interfacing (serial I/O) in simple "polled" mode (no ISRs).

An AT91SAM7 Serial-IO/UART and interrupt example for the Atmel AT91SAM7S64 (should work with all AT91SAM after minimal changes) which demonstrates UART interfacing (serial I/O), interrupt/exception-handling and lots of gcc-specials.

Example application for the Atmel AT91SAM7S64 (should work with all AT91SAM7S after minimal changes) which demonstrates USB and UART interfacing (USB access via system-Driver/DLL, "pseudo modem" and virtual COM-port)

An interface for the Embedded-Filesystem-Library and Chan's Filesystem Module to the AT91SAM7S-controllers (AT91SAM7S64, AT91SAM7S256 et al). To read and write data to SD/MMD memory-cards. With filesystem-support (FAT).

GNU-Port of the Atmel "MIPS" example with "gcc/as specials"

AT91SAM7 SWI, Remap, GPIO, PIT and stdio Example

C++ with the GNU-Toolchain on an AT91SAM7

All AT91 projects are now on my AT91 projects page

Analog Devices ADµC7000 ARM7TDMI controller Examples

Please visit my ADI ARM-controller page.

STMicroelectronics ARM controller Examples

Please visit my STR7 page for information end example-codes.

Page 14: Arm7

ARMv7 Cortex-M3 examples (Luminary Mirco LM3S and STmicro STM32 series)

Please visit this page for further information and examples-applications controllers with for the Cortex-M3 ARM-core.

Using OpenOCD as flash-programming tool

A short introduction on how to use OpenOCD as flash-programming tool can be found on this page.

Patched Version of the Keil ULINK Windows-Driver

I've got the Keil ULINK debugging-inferface togehter with the MCB2100 evalation board. The ULINK-driver on the CD included with the kit and the updated version of the driver available on the Keil Web-Site (written: 7.9.2005) did not work on my development-machine (Windows2000SP4+Rollup, old Intel "BX" board, USB1.1 onboard hostchip). I've spent some hours with this and even installed an additional PCI-USB-Card with a NEC USB 2.0 controller. But the problem is not caused by the hardware. Only a modified inf-file solved this issue. With this inf-File the ULINK could be used with the 1.1 and 2.0 USB-Ports. Get the inoffical inf-File here(zip-Archive, ca. 19kB, Timestamp 20050824).

Update: Keil has fixed the inf-file. An official version is available from keil.com (search the knowledge base for ulink driver).

LPC2106 ARM7 Interfacing with Maxim/Dallas Onewire Temperature Sensors (DS18x20)

Page 15: Arm7

This sample-application demonstrates interfacing Maxim/Dallas DS1820/DS18S20/DS18B20 with a LPC2106 ARM7TDMI controller using the Onewire-interface. The code detects all DS18x20 sensors on a bus and sends information via UART/RS232. Tested with a Philips LPC2106 at FOSC=14,7MHz/CCLK=58MHz. Timing has to be very precise for Onewire. This preliminary code still has a "tuning value" (see delay.h). Based on the AVR code. Code is not very "clean" since it has just been a test during the "T-Clock" development. Download the ARM7 source code here (Timestamp 20041114, makefile for WinARM and hex-file for the LPC-P2106 board included, 1-Wire Pin: P0.4).

LPC2106 ARM7 connected to Graphics-LCD

This sample-application demonstrates interfacing a KS0108/KS0107 graphics-LCD with a LPC2106 ARM7TDMI. Based on the "LPC2106 interrupt-UART"-sample (see above) which has been extended with a glcd-module. Find out more on this page.

"T"-Clock: ARM7 Radio-Controlled-Clock with Graphics-LCD

This sample-application demonstrates interfacing a KS0108/KS0107 graphics-LCD, Onewire Temperature-Sensor and a DCF77 time-signal receiver with a LPC2106 ARM7TDMI. Find out more on this page.

(*) Remark about Olimex ARM Demo-Boards: Please verify that the definitions for connected hardware (like LED, Buttons etc.) in the source-code match the connections on the demo-board in use. Olimex produces different versions of the boards and sometimes the version is not obvious. If in doubt: measure the connections. I have the Olimex LPC P-1 which has been replaced by the LPC-P2106 and the LPC-P2129 which has been replaced by the LPC-P2129-B. Both successor boards differ from the old boards. I.E.: Buttons on LPC-P2129 are connected to P0.10 and P0.11 on the LPC-P2129_B they are connected to P0.15 and P0.16. (Thanks to Chris "O2" for the information about the P2129-B-Board.)

To my Atmel AVR-Projects page

Page 16: Arm7

Martin Thomas 

Page 17: Arm7

Last mod.: 

This NXP LPC2148 development board features a 170-hole solderless prototyping breadboard and several built-in peripherals such as a buzzer, LEDs, potentiometer, PS/2, USB, two serial ports, SD/MMC slot, and more. No external programmer is required; the LPC2148 can be programmed from your PC via one of the DB9 serial ports. A standard 20-pin ARM JTAG interface also is provided for programming and debugging. The board has a connector for attaching an ESD-02 Bluetooth module (not included).

The LPC2148 is based on a 32-bit ARM7TDMI-S CPU core with real-time emulation and embedded trace support, combining a microcontroller with 512 kB embedded high-speed Flash memory. A 128-bit wide memory interface and a unique accelerator architecture enables 32-bit code execution at the maximum clock rate. For critical code size applications, the alternative 16-bit Thumb mode reduces code by more than 30 percent with minimal performance penalty.

Due to their tiny size and low power consumption, LPC2148 are ideal for applications where miniaturization is a key requirement, such as access control and point-of-sale. Serial communications interfaces ranging from a USB 2.0 Full-speed device, multiple UARTs, SPI, SSP to I2C-bus and 40 kB on-chip SRAM make these devices well suited for communication gateways and protocol converters, soft modems, voice recognition and low-end imaging, providing both large buffer size and high processing power. Various 32-bit timers, dual 10-bit ADC(s), 10-bit DAC, PWM channels and 45 fast GPIO lines with up to nine edge- or level-sensitive external interrupt pins make these microcontrollers suitable for industrial control and medical systems.

LPC2148 Development Board Features

Page 18: Arm7

LPC2148 ARM7 Microcontroller Standard 20-pin ARM JTAG connector USB connector Two RS232 connectors SD/MMC card connector PS/2 connector Two user buttons Potentiometer connected to ADC Two LEDs Buzzer SPI connection 2-Wire point connection 170-point mini-breadboard RESET button On-board voltage regulator 3.3V Barrel and screw-terminal power connectors (6V DC required) 12 MHz main crystal 32.768 kHz crystal RTC backup battery Socket for ESD-02 Bluetooth module (not included) Dimensions: 12.6 x 9.5 mm (5" x 3.75")

LPC2148 Development System Contents

JX-2148 Board Quick-start guide One RS232 serial cable Ten 7cm jumper wires CD-ROM with software and sample code

System Requirements

IBM-compatible PC with at least one USB and one RS232 port (2x RS232 ideally)

Windows XP Operating System Keil μVision3 or Keil ARM tool kit evaluation version. Download

at www.keil.com LPC2000 Flash In-System Programming Utility  software from NXP DC power adapter (+9V 500mA recommended) An additional serial cable if using UARTs at the same time (or ISP and a UART) PS/2 Keyboard or mouse if you want to use the PS/2 USB cable, standard A/B type, maximum 3m length, if using USB interface ARM debugger/programmer  if you need JTAG in-circuit debugging capability

Download JX-2148 user manual

Country of Origin: Thailand

Optional Recommended Products for this Item

Page 19: Arm7

USB 2.0 Cable, 6ft., A-Male / B-Male + US$6.00

Serial Cable, 6ft., DB9 M/F + US$6.00

Power Supply 3-12V DC, U.S. plug, 6 connection tips + US$11.00

Power Supply 3-12V DC, US/UK/Euro/AU Plugs, 100-240VAC + US$13.00

Page 20: Arm7

he following links provide useful background information for this microcontroller and using this controller board.

Data Sheets• LPC2148 Data Sheet: NXP - LPC2148 Data Sheet• LPC214X User Manual: NXP - LPC2148 User Manual• LPC2000 Series Code Examples: NXP - ADC, EINT, I2C, SPI etc Code Examples

Books

Compilers and Programming Tools• Keil: DB-ARM Compiler

Useful Websites• NXP (formerly Philips): To NXP website• Circuit Cellar Magazine: To Circuit Cellar Website

User TipsIf you have some useful tips or relevant information that would be helpful to other users, please send it [email protected]

|  Main Page  |  Technical Data  |  Accessories  |  Tips and Tricks  |

This GPS based car speed and position logger is based on Olimex LPC2148  project board, which is

wired to GPS receiver. GPS receiver is interfaced via serial port – so not much of soldering.

Page 21: Arm7

Software is based on FreeRTOS where ChanFS file system is used for storing logged data in

SD/MMC FAT16 formatted card. It also has USB serial port emulation which enables to monitor

NMEA sequences or simply retrieve logs as from mass storage device without removing CD/MMC

card. Project files for WinARM GCC can be downloaded here.