What's New in Astrobe for Cortex M3

ARM Oberon Development System for Windows
Version 7.2.3 Copyright © 2006-2021 CFB Software
Email: support@astrobe.com
Website: www.astrobe.com

Last Updated 7 Apr 2021
This version is supported on Windows 10. The Installation and Uninstall executables are digitally signed to validate authenticity and integrity.

A summary of new features introduced in Astrobe for Cortex-M3 since version 7.0.0:


Runtime Error Tracing

The library module Traps has been enhanced so that when a runtime error occurs a callback trace of the sequence of procedure calls that led to the error is reported. Each line of the trace shows the module name, procedure name and the absolute address of the location of the call in the executable. The relevant source code line number of each procedure is also shown if the configuration option, Line Numbers, is enabled:

Application Disassembler

A full application disassembler is included in the Professional Edition. Each procedure and its address is identified as shown in this screenshot:

The Application disassembler does not replace the Module disassembler - they are separate menu items, Project > Module Disassembler and Project Application Disassembler. They are both implemented very differently. The Module disassembler requires the source code and compiler to be present; the Application disassembler requires neither.


Compiler (Personal and Professional Editions Only)

The number of levels of record extensions allowed is now configurable with the limit increased from 4 to 8.

Syntax Colouring

The syntax colouring configuration scheme is stored in the file Oberon.xml. When Astrobe is started it looks for this file in the Astrobe Folder e.g.


If it does not exist there it looks for it in the Astrobe Program Folder e.g.

C:\Program Files (x86)\AstrobeM3 Professional Edition

If syntax colours are changed, the changes are stored in the Oberon.xml file in the Astrobe folder. The Syntax colouring configuration details are no longer stored in the Windows registry.

A maximum of three levels of nested comments, instead of two, are now allowed for in the syntax colouring scheme.

User-customisable Tools Menu

You can now add up to ten new menu commands of your own choice to the Astrobe Tools Menu. These can be used to launch a Windows application, a command-line console application or a DOS command.

You can include the following context-sensitive parameters in the commands:


They are substituted with values corresponding to the file currently showing in the editor.

You can also use the parameter


as the working folder or parameter for the command. The name of the folder where the Astrobe configuration files, library modules and examples are located is substituted when the command is executed. This is the folder which you specified when you installed Astrobe e.g.


You can create new menu items by editing a Tools.ini text file which is located with the configuration files in the Astrobe Configs folder. The ini file supplied with Astrobe includes three commands:

Open Containing Folder ...
Open Examples Folder ...
View Map File

These commands perform the following functions:

Cortex-M3 Oberon Language Extensions and Features

Bitfield Operators - BFI and BFX:

The bitfield extract and insert procedures BFX and BFI are predefined procedures which generate efficient inline code for common shift and mask operations. They are replacements for SYSTEM.UBFX and SYSTEM.BFI. For example:

SYSTEM.UBFX(bitfield, word, msb, lsb);
SYSTEM.BFI(word, msb, lsb, bitfield);

should now be written as:

bitfield := BFX(word, msb, lsb);
BFI(word, msb, lsb, bitfield);

Oberon Language Features

The latest version of the Oberon Language Report is dated May 2016. A copy of the report is included in the Astrobe distribution.


The following are implementation restrictions:

Pointer types declared in an external module can only be extended in a client module if they point to a named record.
Pointers to anonymous records cannot reference themselves.

Anonymous records should be declared as named types instead to avoid these problems and ensure compatibility with Project Oberon.
For example, if B imports A, and C imports both A and B, then A must appear before B in C's IMPORT list. If it does not, the error is detected and reported with a compiler error message.

Configuration Options

Line Numbers (Personal and Professional Editions only)

If this checkbox option is enabled (the default) the relevant source code line number of each procedure in the callback trace is shown when runtime errors are reported. Whenever this setting is changed, the application must be relinked to ensure that all modules have been compiled with the same setting, otherwise an error will be reported when the application is linked.

Library Pathnames

Library Pathnames are used by Astrobe to search for dependent module files when compiling, building and linking applications. The number of these pathnames that you can define for each application has been increased from five to ten.

The foldername parameter %AstrobeM3% has replaced the parameter %astrobe% to allow for several different versions of Astrobe to co-exist on a single PC. It is substituted with the name of the folder where the Astrobe configuration files, library modules and examples are located. This is the folder which you specified when you installed Astrobe for Cortex-M3 e.g.


Library Modules - General


The error codes used in ASSERT statements in the library modules have been rationalised and are now referenced by named constants. These are defined in the Error library module e.g. Error.timeout. Each error code is associated with an error message that is displayed when the assertion is handled by the Traps module.


The common modules HCDrive, HCDir and HCFiles used by HCFiler, the SDHC Filesystem, are now included with the library modules for the supported microcontrollers.


An ASSERT statement with a code in the range 200 .. 255 can now be assigned a user-defined trap handler. A new example, UserTraps, shows how it can be used.


The new Bits module can be used to perform bitwise operations on INTEGERs.

Library Modules - STM32


I2C is now supported.


The GPIO module has been modified to be compatible with the Astrobe for Cortex-M4 version. The library modules Serial, SPI and ST7735 have been updated to use the new GPIO interface.


The length parameter is no longer required on the SPI Send and Receive functions for STM32 targets. The number of bytes transferred by these functions will correspond to the size in bytes of the variable that is passed as a parameter.   


The Main and MCU modules all configure the HSE oscillator, PLL, AHB and APB clocks in a similar way to the corresponding STM32 modules in Astrobe for Cortex-M4 and Cortex-M7.

Development Boards

Astrobe now includes a configuration file, library modules and examples for the STM32F207ZG microcontroller with 1024 KB of flash memory and 128 KB of RAM. The NUCLEO-F207ZG, an STM32 Nucleo-144 board from STMicroelectronics which features this microcontroller, has been added to our list of supported boards.

Source Code Examples

Subscribe to the Cortex-M3 Source code examples of the Astrobe forum to receive notification of the availability of new source code examples.

Problems fixed