What's New in Armaide v2
Version 2.4.1 © 2006-2010 CFB Software
Last Updated 13 Apr 2010
Options
Character Sets
The Font Style setting of the Font dialog box accessed from the Tools
> Options > Editor is used to set the relevant Windows codepage to
display characters as required. 8-bit characters from the following character sets
can be used in Oberon-07 comments, strings and character constants:
- Central Europe
- Cyrillic
- Western
- Greek
- Turkish
- Hebrew
- Arabic
- Baltic
The default character set used is Western i.e. CodePage 1252, Latin-1.
IMPORT search depth
The IMPORT search depth setting accessed from Tools > Options >
Compiler / Linker allows you to specify how many levels of folders should
be searched by the compiler or linker when searching for imported modules. The default
value is 4, the minimum is 1 and the maximum is 9.
Examples
There are two sets of examples: General and board-specific.
- The general examples should work with little or no modification on any of the
supported LPC2xxx targets
- The board-specific examples are separated into folders identifying which supported
boards they have been tested on. It is likely that they would need to be modified
to run on a different development board even if the target processor is the same.
For descriptions of the examples refer to the ReadMe file in the Documents\Armaide\Examples
folder
NOTE: Some of the examples use library modules or language features
that are not included in the Evaluation Edition. The source code can be studied
but the examples cannot be compiled and / or linked in the Evaluation Edition.
Library Modules
Full details of the Library Modules can be found in the Library Definitions
section in the Linking and Loading chapter of the document Oberon for
LPC2000 Microcontrollers accessible from the Armaide Help menu.
All Editions
- LPC.Mod includes additional LPC2000 family common constant definitions
e.g. Timer1.
- Module Traps includes default interrupt handlers for the internal interrupts
Undefined Instruction, Data Abort, and Prefetch Abort.
These are installed at startup time when Main.Init calls Traps.Init,
the only function exported from Traps.
- Library modules needed by the runtime system are included.
Standard and Professional Editions only
Additional library modules included are IAP, LPC2103, LPC2106, LPC2148, LPC2378,
Strings, Math, Random, and ResData.
- Modules LPC2xxx include peripheral register definitions specific to that
family of microcontrollers.
- Module IAP allows full access to the In-Application (IAP) programming
functions of the target processor (details below).
- Module ResData contains functions to access the constant resource data
from the Oberon-07 program (details below).
Professional Edition only
- Source code of all library modules (except the compiler-dependent MAU
and FPU) is included.
In-Application (IAP) Programming Module
The IAP library module allows full access to the In-Application (IAP) programming
functions of the target processor. These allow the reading and writing of the on-chip
flash memory as well as obtaining the part identification number and boot code version
number. The IAP module uses 128 bytes of RAM at the top of memory. This is declared
in module LPC (the first module with global variables to be loaded) to prevent global
variables in your program from being overwritten.
Each function and its parameters has a direct correspondence to one of the IAP commands.
Refer to the chapter titled Flash memory system and programming in the NXP
target processor User Manual (UM10xxx) for details of their use.
Resource Data
Typically on a PC system, large quantities of constant data (e.g. the definition
of a font, a bitmap image etc.) would be stored in files to be read at runtime.
A file system is often not available on the smaller embedded systems targeted by
Armaide, so a different approach is used:
- After the Armaide linker has linked all of the object files <module>.arm
into the executable program, it looks for the corresponding 'resource' data files
named <module>.res file.
- The resource files are appended to the executable to be stored in Flash ROM when
the program is uploaded.
- Library ResData contains functions to access the constant resource data
from the Oberon-07 program.
For more information refer to the Resource Data section of the Armaide
document Oberon for LPC2000 Microcontrollers.
Linker
- A file <modulename>.ref containing the names and absolute addresses
of each module is created at link time and appended to the executable as resource
data. It is used by the runtime trap reporting system to display the name of the
module that was executing when the trap occurred.
- The link map includes details of the linked resources.
- The range of crystal frequencies allowed in link options is 10000000Hz to 25000000Hz
(i.e. 10Mhz to 25Mhz) except for the LPC2378 family of processors (12Mhz and 20Mhz
only).
- The link map includes the full pathnames of all of the imported modules, the target
processor and crystal frequency.
Oberon-07 Language Extensions
Local Dynamic Arrays
Local dynamic arrays of any type can be declared within a procedure:
VAR
weights: ARRAY OF REAL;
alarms: ARRAY OF Event;
The number of elements (i.e. length) of the array is determined at runtime:
NEW(weights, count);
Interrupt Handlers
An Oberon-07 interrupt handler is a normal procedure which has an offset specification
in square brackets instead of a list of parameters:
PROCEDURE TimerHandler[4];
For more information refer to the Oberon-07 Language Extensions section
of the Armaide document Oberon for LPC2000 Microcontrollers.
Supported Targets
The target processors supported by Armaide are:
- LPC2000 (Generic)
- LPC2101, LPC2102, LPC2103
- LPC2104, LPC2105, LPC2106
- LPC2142, LPC2144, LPC2146, LPC2148
- LPC2212, LPC2214
- LPC2364, LPC2366, LPC2368, LPC2378
Note: LPC2378 parts earlier than Revision 'B' are not supported.
Technical Support
Documentation
- A chapter Programming Conventions and Guidelines is included in the document
Oberon for LPC2000 Microcontrollers.
- Page numbers are included in the Table of Contents
- Each numbered section can be accessed directly using Acrobat bookmarks.
Problems fixed
v2.4.1
- Runtime error trapping now identifies the correct module name instead of the one
following it.
- Report an error when compiling a procedure which contains strings with a total
of more than 1024 characters instead of crashing.
- A nested procedure inside an interrupt procedure no longer causes the interrupt
procedure to hang.
- Processing of negative numbers in FPU has been modified in an attempt to avoid
a
suspected side effect which results in a infinite loop in a subsequent MOD expression.
- Fixed erroneous RETURN values when constants > 256 or < 0 are used in IF
statements in leaf procedures. e.g.
PROCEDURE* P1 (CONST x: BOOLEAN): INTEGER;
VAR result: INTEGER;
BEGIN
IF x THEN result := 0 ELSE result := 257 END;
RETURN result
END P1;
v2.4
- Out explicitly imports Serial and the Main library
module and its imports are linked before the main module of the application. This
ensures that the Out module is correctly initialised with a PutCh
procedure before it is used by the initialisation section of any other module.
v2.3
- Fixed printing from the menu. Was only a problem on Windows 7 and Windows Vista.
- Latin-1 characters > 7FX can be used in Oberon-07 comments, strings and character
constants. Elsewhere they result in the compiler error "bad character".
- Main.SetupPLL2300: Corrected NSEL left-shift value when calculating LPC.PLLCFG.
- Global and multi-dimensional dynamic arrays are reported as compile-time errors.
- Prevent exception when compiling a set range with 30 as the upper bound e.g. CONST
s = {0..30};
v2.2
- Corrected definitions of FIO1* in LPC2378.mod
- Library function Math.Cos(x) now returns correct results for negative values of
x
- The compiler reports an error if a local procedure is assigned to a global procedure
variable.
v2.1
VAR
x: ARRAY;
PROCEDURE P(x: ARRAY);
set := {0..254};