Astrobe for Cortex-M0, M3, M4 and M7

Feature Matrix

This table summarises and compares the features of v9.0 Astrobe for Cortex-M0, M3, M4 and M7.

IDE / Editor M0 M3 M4 M7
  • 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 2016 Standard Oberon Language,
  • Integer, Byte, Boolean, Char, Set, Array, Record and 32-bit IEEE Real data types and operations
  • Pointers to records for dynamic memory allocation
  • Constant, Type, Variable and Procedure declarations
  • Open array parameters
  • For, While, Repeat loops and Case (switch) statements
  • Nested procedures
  • Direct assignment of structured types (arrays and records)
  • 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 the special registers Program Counter (PC), Link Register (LNK) and Stack Pointer (SP)
  • Type casting using SYSTEM.VAL
  • Direct access to the Cortex-M 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.
  • Single instructions used for DIV, MOD, RBIT, BFI and BFX
  • Cortex-M floating-point hardware used for real operations: add, subtract, multiply, divide and square root
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 applications
  • 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
  • Source code of the Traps runtime library module can be user-customised
Uploading and Running
  • No special hardware flash programming tool is required
  • Upload via USB drive for mbed-enabled boards
  • Integrated terminal emulator communicates via a UART with a program running on the target device
  • BIN format files allow you to program target devices using 3rd-party tools e.g. ST-Link.
General Library Modules
  • Out - Formatted ASCII text output of chars, strings and integers
  • Strings - General text string processing
  • Reals - Conversion of real numbers to and from strings
  • Storage - Memory allocation / deallocation of pointer variables
  • Math - Mathematical and trigonometrical functions
  • LinkerOptions - Access the user-supplied link-time configuration settings
  • Graphics - device-independent drawing of lines, circles and ellipses
  • Random - Random number generation
  • ResData - Resource data handling (constant data, images, fonts etc.)
  • Traps - Runtime and assertion error handling
  • Error - Standard error code definitions and messages
  • Bits - Perform bitwise operations on INTEGERs
  • Convert - Integer / string conversion
  • Put - String handling helper functions
  • DateTime - date and time string conversion
Additional Library Modules
  • Main - Initialisation code required by the applications
  • MCU - Definitions of peripheral register addresses to access the target's features e.g. GPIO, NVIC, RCC, RTC, I2C, SPI, Timers and USART.
  • Serial - Serial input and output communication via USARTs
  • Timers - Millisecond time measurement and delays
  • Clock - access the time components of the Real Time Clock
  • SPI - Serial Peripheral Interface: control LCD displays, SD cards, 7-segment LEDs, and digital sensors such as accelerometers, magnetometers, etc.
  • I2C - control serial RAMs and EEPROMS, LCDs, accelerometers, temperature and pressure gauges, compasses etc.
  • GPIO - General Purpose I/O Configuration and Control
  • RTC - setting and retrieving the date and time components of the Real Time Clock
  • HCDrive, HCDir, HCFiles - The HCFiler SDHC filesystem
Source Code of Library Modules
  • Full source code of all runtime and additional library modules
  • Example modules including full source code
Maximum RAM / Flash Size
  • Flash Size (KB)
256 1024 2048 2048
  • RAM Size (KB)
32 128 192 512
NOTE: These limits are imposed by the microcontrollers that are currently supported, not by Astrobe.
  • Display the ARM assembler instructions generated for a module
  • Display the ARM assembler instructions generated for the whole 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