Astrobe for RP2040 and RP2350

Feature Matrix

This table summarises and compares the features of the Starter, Personal and Professional Editions of v9.3 Astrobe for the RP2040 and RP2350 microcontrollers.

IDE / Editor RP2040 RP2350
  • Standard Windows, programmer-oriented, text-editing features
  • Fast and responsive interactive operation
  • Tabbed multi-document interface for editing multiple source files (modules)
  • Split-screen editing
  • Regular expression support in Find / Replace
  • Bookmarks
  • Line modification indicators
  • Optional line numbers, printing features etc. etc.
  • The module in the current window is the target of the compiler / linker / builder
  • User-customisable Tools menu for integrating batch files, Windows commands or 3rd-party applications
  • Desktop HTML Help
Oberon Language-oriented Editing
  • Automatic syntax colouring of language elements as you type
  • Auto-capitalisation of keywords as you type
Code Navigation
  • Alphabetical auto-indexed list of procedures. Click on the name to go to the procedure in the source code.
  • Auto-indexed list of imported modules. Click on the module name to open the file.
General Language Features
  • Oberon is a general-purpose programming language first published in 1987.
  • Conforms to the latest revision of the Standard Oberon Language
  • Constant, Type, Variable and Procedure declarations
  • Local and Global declarations
  • Integer, Byte, Boolean, Char, Set and Procedure data types
  • 32-bit IEEE Real data types and operations
  • Array and Record structured data types
  • Direct assignment of structured data types
  • Pointers to Records for dynamic memory allocation
  • Open array parameters
  • If-elsif-else statements
  • For, Repeat, While and While-elsif loops
  • Case (switch) statements
  • Nested procedures
  • Type-extension capabilities for Object-Oriented programming
  • Assertions for validating input / output parameters
  • Type-checking / consistency validation across modules
  • Read-only access to external global variables
  • Nested comments
Embedded Programming Features / Language Extensions
  • Interrupt handling procedures
  • Direct access to registers using SYSTEM.REG and SYSTEM.LDREG
  • Type casting using SYSTEM.VAL
  • Direct access to the Arm REV, REV16 and REVSH instructions
  • Explicit read / write access to memory-mapped peripheral device registers using SYSTEM functions GET and PUT
  • Low-level SYSTEM functions ADR, BIT, EMIT etc. for absolute memory addressing, bit testing, emitting code instructions etc.
  • Byte-level addressing of all built-in and user-defined data types and structures
  • Inline bitfield insert and extract functions BFI and BFX
Performance Optimisation
  • Runtime checks are disabled locally in Leaf procedures
  • Registers are used instead of the stack to store selected local variables in Leaf procedures.
  • Arm floating-point hardware used for real operations: add, subtract, multiply, divide and square root
  • Single instructions used for DIV, MOD, RBIT, BFI and BFX
 
Fast Native-code Compilation
  • Fast single-pass modular compilation
  • One-click to compile the module in the current window
  • Only the current module needs to be compiled if the interfaces of imported modules are unchanged
  • Pre-compiled symbol files are used for fast access to imported modules
  • Compilation continues to the end to find as many errors as possible
  • Compilation errors are displayed in a separate window
  • Click on an error line to take you to the actual line in the source
Linking / Building
  • Creates compact and fast native-code UF2-format executables
  • Automated Build feature identifies and recompiles all outdated modules before linking
  • There is no need to maintain separate 'make' files. The names and locations of imported modules are already known at link time.
  • Interfaces of imported modules are validated at link time to ensure consistency and eliminate obscure runtime errors
  • Compile, link and build options are stored in configuration files
  • Multiple projects for the same target can share a single configuration file
  • Configuration file settings for multiple library search paths
  • Configuration file settings for application code, data, stack and heap addresses
  • User-customisable Tools menu to launch Windows applications or command-line utilities of your choice from the Astrobe menu
Debugging and Error trapping
  • Language support for validation of procedure parameters, pre- and post-conditions using assertions
  • Compilation warnings for unused constants, types, variables, procedures and imported modules.
  • Automatic array index bounds checking
  • Runtime library Out can be used to send trace output to the Astrobe terminal window via a UART serial connection
  • Runtime errors and failed assertions are identified by a callback trace with module and procedure names and source line numbers
Uploading and Running
  • Upload application to flash via a UART-USB adaptor board / cable and a virtual USB drive on the PC
  • Integrated terminal emulator communicates via a UART with an application running on the target device
  • Reset the board via UART DTR by clicking on the Astrobe Terminal Reset button
General Library Modules
  • Bits - Perform bitwise operations on INTEGERs
  • Convert - Integers <-> strings conversion
  • Error - Standard error codes and messages used by Traps
  • In - ASCII text input of chars, strings and integers
  • LinkOptions - Access the user-supplied link-time configuration settings
  • Math - Mathematical and trigonometrical functions
  • Out - Formatted ASCII text output of chars, strings and integers
  • Random - Random number generation
  • Reals - Reals <-> strings conversion
  • ResData - Resource data handling (constant data, images, fonts etc.)
  • Storage - Memory allocation / deallocation of pointer variables
  • Strings - General text string processing
  • Traps - Runtime and assertion error handling
  • Graphics - Device-independent drawing of lines, circles and ellipses
Q4 2024
Additional Library Modules
  • DateTime - Date and time string conversion
  • GPIO - General Purpose I/O Configuration and Control
  • MCU - Definitions of peripheral register addresses to access the target's features e.g. GPIO, NVIC, RCC, RTC, SPI, Timers and UART.
  • Main - Initialisation code required by the applications
  • RTC - Update and access the current date and time
  • SPI - Serial Peripheral Interface: control LCD displays, SD cards, 7-segment LEDs, and digital sensors such as accelerometers, magnetometers, etc.
  • Serial - Serial input and output communication via USARTs
  • Timers - Microsecond / millisecond time measurement and delays
  • I2C - Control serial RAMs and EEPROMS, LCDs, accelerometers, temperature and pressure gauges, compasses etc.
Q4 2024 Q4 2024
Internal Library Modules
  • MAU - Memory Allocation Unit
  • Put - String handling helper functions
  • FPU - Floating point operations implemented in software
Not required
Memory Limits (KB)
  • Maximum RAM Size
264 520
  • Maximum Flash Size
2048 4096
NOTE: The above RAM and Flash limits are imposed by the microcontrollers that are currently supported, not by Astrobe.
Source Code
  • Example modules
RP2040 Examples RP2350 Examples
  • Full source code of library and runtime modules
  • Source code of the Traps runtime library module can be user-customised
Personal and Professional Editions
Disassemblers
  • List the Arm assembler instructions with procedure headings and source lines for the compiled current module
  • List the Arm assembler instructions with module / procedure headings for the linked application
Professional Edition
Command-line Compiler, Linker and Builder
  • Compile, Link and Build applications using batch files, 3rd-party IDEs and build tools
Professional Edition
Commercial Applications
  • Develop and deploy commercial applications with no additional runtime fees
Professional Edition