This table summarises and compares the features of the Starter, Personal and Professional Editions of v9.3 Astrobe for each type of Cortex-M microcontroller.
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
- 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, While and Repeat 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 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 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
- 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
- Integrated terminal emulator communicates via a UART with a program running on the target device
|
|
|
|
|
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
- LinkOptions - 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 - Set and retrieve the date and time components of the Real Time Clock
- HCDrive, HCDir, HCFiles - The HCFiler SDHC filesystem
|
|
|
|
|
Maximum RAM Size (KB) |
|
32 |
128 |
192 |
512 |
Maximum Flash Size (KB) |
|
256 |
1024 |
2048 |
2048 |
NOTE: The above RAM and Flash limits are imposed by the microcontrollers that are currently supported, not by Astrobe. |
Source Code |
|
|
|
|
|
- Full source code of library and runtime modules
|
Personal and
Professional
Editions |
Disassemblers |
- Display the ARM assembler instructions generated for a module
- Display the ARM assembler instructions generated for the whole linked application
|
Personal and
Professional
Editions |
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 |