Introduction
The following notes supplement What's New in v9.3 Astrobe for Arm. They describe additional changes which have been introduced in Astrobe for the Raspberry Pi RP2040 (Cortex-M0+) and RP2350 (Cortex-M33) microcontrollers. Where relevant, the changes will be included in future releases of the other versions of Astrobe.
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
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 RP2350 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 real-time clock library module currently uses the TIMER1 timer in the absence of a dedicated RTC peripheral.
NOTE: The Always-On Timer may be used instead of TIMER1 in a future release.
Examples
Details of the source code examples included with Astrobe can be found here:
New examples introduced in this release are:
Temperature
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.
Limitations
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
- A RISCV core (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
- Search paths can include up to ten 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 configurations should not be reported as errors when linking.