# Library for microcontrollers with ARM7TDMI core

## What is it?

It is a library, more precisely, a set of libraries. It is aimed to embedded systems using a microcontroller based on the ARM7TDMI core, for which the software is being developed in the C language and the development environment is based on the GNU `gcc` compiler and associated binary utilities.
A library contains many (but not all) functions of the standard C library. You can find a (soft) real-time kernel as well. A library of the basic cryptographic functions is also part of the collection. Furthermore, a couple of possibly useful functions are collected under the 'miscellaneous' banner and placed in a library, In addition, a few LPC2xxx related tools (running from the command line of your host system) are thrown in for good measure. On top of that, additional LPC23xx specific headers and some information on those chips are also provided, the info about these extras are on the LPC23xx related information page.
Please note, that this library is not usable "as is" if:

- You don't have an ARM7TDMI core or at least one that has the same instruction set (ARM4t);
- You do not develop in C and your favourite language can't call C functions;
- You do not use the GNU toolchain and/or do not have the basic unix utilities installed in some form on your system.

## Rationale

My company (Bendor Research Pty. Ltd.) recently had to design several systems based on various NXP LPC2xxx microcontrollers, which sport an ARM7TDMI-S core. To make my life somewhat easier, I (Zoltán Kócsi) decided to put a library together so that we can reuse code and save development time.
Naturally, if you write a library that can be useful for others, you release it as open source software for the public good, and that's what we did.
The library's primary focus is the ARM7TDMI. The core is based on the ARM4t architecture. For details on that architecture, see the "ARM Architecture Reference Manual" (a.k.a. ARM-ARM), which you can either buy as a physical book or you can download it from the ARM website for free. The ARM7TDMI is a fairly popular core for the low-end 32-bit market. This core is used in the NXP LPC2xxx, the Texas Instruments TMS470, the Analog Devices ADuC7xxx, the Atmel AT91SAM7xxx, the Freescale MAC7100 and the ST-Microelectrionics STR710 chips and series.
As mentioned earlier, the library sources and the whole build process assumes that you use the GNU tools. The rationale of using the GNU toolchain for embedded development work as well as a few gcc related issues are discussed on the The pros and cons of using gcc page.

## License

The library is released under the Free Software Foundation's GNU General Public License version 3, with additional clauses that allow you to use the library in closed source projects. We made that exception because for many projects built around these micros releasing the source simply doesn't make much sense. Nothing stops you releasing your sources, however. For further details, please read the License.

## Warranty

If you know the GPL, you already know this: There is none. While the library is released in the hope that it will be useful, it is relased AS IS, with no explicite or implied warranty or guarantee of any kind. You use it at your own risk. Neither Bendor Research nor me can be held liable for any damage arising out of your using this library or its documentation, even if we were aware of deficiencies in it that could cause such damages. The license states that if you do not accept these terms, then you can not use this software.

## Installation

Please read Installation. It will also tell you how to create a gcc crosscompiler, if you don't know it already.

## Using the library

Simple. Link against it. However, if you are not familiar with gcc as your crossdevelopment tool, you can find some useful information on the page Crossdevelopment for bare-metal targets using gcc.

## Porting and hacking the library

Please read Porting.

## Support

If you find a bug, please report it by sending an email to `armlib-bug@bendor.com.au`. We'll try to fix it as fast as possible and put the fixed version on our website. We also run a low volume mailing list related to the library. If you want to subscribe, send an email to `listserv@bendor.com.au` with the subject of `"subscribe armlib"` (without the quotas).
Other than that, there's no free support. However, if you want us to modify the library for your particular needs, add some special functionality, enter a support contract with you or design you an ARM based embedded gizmo, do not hesitate to contact us, by writing to the contact@bendor.com.au address.