What's New in Armaide v2
Version 2.3 © 2006-2010 CFB Software
Last Updated 6 Jan 2010
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.
Resources
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.
Supported Targets
The target processors supported by Armaide are:
- LPC2000
- 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.
Libraries
- Module ResData contains functions to access the constant resource data
(see above) from the Oberon-07 program.
- LPC.Mod includes more of the LPC2000 family common constant definitions
e.g. Timer1.
- Modules LPC and Main have been modified to support the additional
processors. Existing applications developed with earlier versions of Armaide should
be recompiled and relinked.
- Module Traps now 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.
- The Evaluation Edition only includes the library modules needed by the runtime
system and included examples.
- Additional library modules included in the Standard and Professional Editions
are Math, Random, and ResData.
- Source code of all library modules (except the compiler-dependent MAU
and FPU) is included in the Professional Edition.
Linker
- The link map includes details of the linked resources, if any.
- 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.
Examples
- The TestTraps example demonstrates a single runtime error - #6: String
too long or destination string too short.
- An example of a timer-driven interrupt handler can be built from the source code
files IRQTimer.mod and IRQBlinker.mod
Technical Support
- Access to the Armaide developers via the
Armaide Technical Support webpage is now also available for Evaluation Edition
users.
Documentation
- A new chapter Programming Conventions and Guidelines is included in the
document Oberon for LPC2000 Microcontrollers.
Problems fixed
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};