Introduction
The following notes summarise the new features included in Astrobe v10.0 and the problems fixed in Astrobe since v9.3.0. They generally apply to Astrobe for Cortex-M0, Cortex-M3, Cortex-M4, Cortex-M7, RP2040 and RP2350 microcontrollers unless identified otherwise.
Every version of Astrobe now includes the source code of the library modules, the command line tools and the Module and Application disassemblers and can be used to develop commercial applications. However, less expensive versions are still available based on the level of support (Professional, Personal or Starter) required.
Conditional Compilation
In the process of testing a module it is often very useful to add diagnostic traces to monitor progress. As these diagnostics are generally only required for development they can be turned off for the release version of the application using various CONST declarations.
Conditional Compilation is a new optimisation which eliminates sections of code from the executable if they are included in an IF statement controlled by a BOOLEAN value declared in a CONST declaration as FALSE. The end result uses less memory and can result in improved performance.
For more details see the Astrobe Oberon Programming Guide and the article Conditional Compilation posted on the Astrobe Forum.
Compilation Limits
The maximum number of modules that can be imported in a module has been increased from 32 to 64. The maximum number of procedures that can be declared in a module has been increased from 256 to 512.
Command Line Tools
A new command-line tool AstrobeDecode which produces the same output as the Disassemble Application command on the Project menu of Astrobe is now included.
Windows dependencies (e.g. Windows Forms, Windows Registry) have been eliminated from the command-line tools with the aim of allowing them to be run on .NET framework implementations on non-Windows systems.
NOTE: Support can only be provided for any related reported problems if they can be reproduced on a native Windows system.
The command-line parameters are now:
AstrobeCompile [astrobeFolder] configFilename sourceFilename
AstrobeBuild [astrobeFolder] configFilename sourceFilename
AstrobeLink [astrobeFolder] configFilename objectFilename
AstrobeDecode configFilename executableFilename
Where astrobeFolder is the (optional) name of the folder that is substituted for the %Astrobe..% parameter in the configuration file search paths.
Configuration Files
Extension Levels, the compiler option which is used to specify the number of levels of Type Extension allowed, is now set in Configuration files. Modules which were compiled with different levels configured can be linked without having to be recompiled. The linker output and map shows the maximum number of extension levels used by any of the modules which were linked.
The limit of the number of search paths that can be included in a configuration file has been increased from 10 to 32.
Relative path names ( ..\..\Lib\General
for example) can be used in the search paths. The paths are evaluated before
compilation / linking starts and are relative to the folder which contains the initial source file.
SYSTEM Procedures
SYSTEM.DATA
PROCEDURE DATA(data: INTEGER)
Inserts a 32-bit constant data value at the current code location. Use DATA instead of EMIT when you do not want the disassembler to interpret the value as an instruction.
Project Menu
Disassemble Module
Disassemble Application
- The disassemblers interpret unknown instructions as data instead of errors.
- Small integers are displayed in hexadecimal as well as decimal format in the output produced by Disassemble Application.
Link
- RP2040, Pi Pico: The linker searches for a second stage boot loader file, boot2.bin, in the Astrobe library paths. This is then used in the process of creating a valid executable UF2 file.
- RP2350, Pi Pico 2: The ImageDef library module includes the necessary data required to be included in a valid executable UF2 file. This should be included immediately after LinkOptions in the IMPORT list of the module Main.
NOTE: If a user modifies a configuration file it is their responsibility to also implement alternative versions of boot2.bin or ImageDef if required to produce a valid executable file.
Library Modules (RP2040 and RP2350)
The library modules included with Astrobe are listed in the Astrobe for RP2040 and RP2350 Feature Matrix.
I2C
The I2C module has been implemented for I2C0/I2C1 in Master Transmitter / Receiver mode using polling. It is used in the Temperature example module.
GPIO
Includes additional procedures to utilise the GPIO features of the RP2040 and RP2350. Mode_InOut is added. The unused ModeAF and Mode_Analog have been removed.
RTC
The RP2350 does not have a dedicated RTC peripheral. The RTC module has now been implemented using the Always-On Timer instead of the timer TIM1 used in the previous release.
Timers
The RP2350 Timers module now supports the use of TIM1 as well as TIM0.
Library Modules (Cortex-M0, M3, M4 and M7)
Clock and Time have been removed. Similar functionality provided by DateTime and RTC should be used instead.
Examples
Details of the source code examples included with Astrobe can be found here:
- Examples - Astrobe for RP2040
- Examples - Astrobe for RP2350
- Examples - Astrobe for Cortex-M0
- Examples - Astrobe for Cortex-M3
- Examples - Astrobe for Cortex-M4
- Examples - Astrobe for Cortex-M7
The HCFiler library modules have been moved to the examples folders.
New examples are:
Temperature (RP2040 and RP2350)
Demonstrates the use of the I2C library module.
TestBits
Demonstrates bitwise operations on integers that can be performed using the Bits library module.
TestDateTime
The TestDateTime example replaces the ShowTime example. It demonstrates setting and reading the date and time values of the real-time clock.
TestStrings
Demonstrates string manipulation operations that can be performed using the Strings library module.
TestReals
Demonstrates different ways to output real numbers using the Reals library module.
Miscellaneous
When a file that has been edited is saved, a warning is displayed if the file it is replacing has been modified by another application i.e. it has a modification date that is later than when the file was originally opened or last updated in Astrobe. The user has the option to replace the existing file, to save it with a different name or in a different folder, or to cancel the Save operation.
The obsolete data type aliases, LONGINT and LONGREAL, have been removed. If there are any existing declarations that reference them they should be replaced by the corresponding INTEGER and REAL declarations instead. Alternatively a user-defined data type alias could be used.
The Trim and Line Number options in Tools > Preferences are ticked by default for new installations.
New registration details are required to activate this version. They consist of the email address of the registered user and a registration number.
Limitations (RP2040 and RP2350)
The Raspberry Pi microcontrollers have a number of unique advanced capabilities. These include, but are not limited to:
- Programmable I/O (PIO)
- User-accessible functions in bootrom
- Alternative flash memory and caching configurations
- Dual Arm cores
- Dual RISCV cores (RP2350)
We intend to provide support for some of these in future releases of Astrobe according to feasibility and demand.
In the meantime you can find out how to exploit some of these features on the 3rd-party Oberon RTK website: https://oberon-rtk.org
Problems Fixed
- *.ini files that are not identified as valid configuration files are not included in the Configuration menu.
- A comment between PROCEDURE and the procedure name no longer excludes the procedure from the View > Procedure list.
- SYSTEM function names e.g. GET, PUT etc. are only capitalised if qualified by SYSTEM.
- Search paths can include up to 32 library module paths in addition to the current folder without causing an exception.
- The command-line builder AstrobeBuild does not raise an exception if the filename parameter option is used and the file exists in the current folder.
- Improved the reliability of the Astrobe Terminal Reset button.
- Prevented a spurious procedure heading from appearing at the beginning of the output produced by Disassemble Application.
- Unsupported (but valid) configurations are not reported as errors when linking.