This is a summary of the new features and changes introduced in Astrobe for Cortex-M3, M4 and M7 since version 7.1.
Personal EditionThe Personal Edition of Astrobe now has exactly the same IDE features and capabilities as the Profession Edition. In particular, the the Project menu commands Disassemble Module and Disassemble Application commands are now included. Also the source code of every library module, including FPU, for floating point support and MAU, the dynamic memory allocator, is provided.
When a new file which is still named Untitled.mod is saved, the Save As dialog box is shown to allow the filename to be changed
When the Editor Preference Trim whitespace (see below) is checked, trailing tab and space characters are deleted from each line of a file when it is saved.
Project > Compile
Order of Import Items
The items in an IMPORT list may now be included in any order. The sequence is no longer affected by dependencies or indirect imports.
Warnings for Unused Items
The compiler optionally reports a warning for:
- Every module that is included in an IMPORT list but is not otherwise referenced in that module
- Every constant, type, variable or procedure that is declared in a module, but not used in that module
Runtime Trapping of Undefined Procedure Variables
Code is generated which reports an error at runtime if an attempt is made to call an undefined (NIL) procedure variable.
SYSTEM.VAL for Non-scalar Variables
SYSTEM.VAL can be used to typecast non-scalar variables i.e. records and arrays. The sizes of the source and destination must be the same size.
Number of Entries Display
Items (variables, procedures etc.) whose actual runtime addresses are established by the linker, that are exported by a module, are included in a section of the object module known as entries. There is a limit of 256 entries allowed for each module. If this limit is exceeded the compilation terminates with the error message too many entries.
The number of entries is now reported in the compilation summary to warn if you are getting close to the limit and need to refactor the module.
Increased Module Code Size Limit
The limit of the size of the code which can be generated for a module has been increased from approximately 30 KBytes to approximately 100 KBytes to allow larger modules to be compiled. Note that there are other factors which determine the size of the largest module that you can compile. For more details, refer to the section titled Implementation Size Limits in the Astrobe - ARM Cortex-M Oberon Programmers Guide accessible from the Astrobe Help menu.
The Configuration menu now includes the names of all of the configuration files located in the current Config folder e.g. for Astrobe for Cortex-M3 :
Click on the name to set that as the current configuration.
Alternatively, select the Configuration > Open command to immediately set the configuration, or to change the current Config folder.
Select Configuration > Edit if you want to view the current configuration.The configuration files are now generic. All manufacturer-specific features have been eliminated. The configuration files are designed to allow you to target Cortex-M3 microcontrollers other than those that we explicitly support.
The configuration file now includes a Warnings checkbox so you can enable / disable compiler warning messages.
Run > Upload
The Run > Upload command is now used solely for uploading to mbed-enabled development boards. It can be used with an extensive range of Mbed-compatible microcontrollers and development boards, including those which do not exist yet.
The built-in Upload via UART facility has been removed. The Tools menu can now be customised to include upload commands for specific microcontrollers using 3rd-party command-line utilities e.g. STLink and FlashMagic. Examples can be found on the Astrobe Forum.
Tools > Preferences
The Trim whitespace checkbox controls whether or not trailing tab and space characters are deleted from each line of a file when it is saved.
The number of levels of record extensions allowed is now configurable with the limit increased from 4 to 8.
Example source code and configuration files are included for use with a number of currently available development boards.
- A record field may now be used directly as the selector in a numeric CASE statement.
- The dynamic type of a dereferenced pointer variable passed as a parameter to a procedure e.g.
is now correctly identified in type tests in that procedure.
- The compiler now generates correct code when INC and DEC operate on BYTE fields of records.
- The Build and View Import commands now process comments in IMPORT lists without problems.
- The compiler reports an error if a variable declared as a POINTER is passed as an actual parameter to a procedure with a formal parameter declared as a BYTE array. If there was a good reason for doing this SYSTEM.VAL can be used to cast the POINTER to an INTEGER before calling the procedure.
- When the first parameter of the standard functions INC and DEC is declared as a BYTE the compiler now correctly generates LDRB and STRB instructions (instead of LDR and STR). This prevents potential problems particularly when the parameter is an element of a BYTE array.
- The linker confirms that all modules have been compiled with the same number of Extension Levels (see Preferences above) and the same Line Number option setting.
- Applications with total code size > 512 KBytes can now be built.
- If the import lists in the modules that make up an application contain the same module name, except that the case is different, only one instance of the module should be linked by the application.
- Exporting a field from a private record is now a compilation error.
- A real constant parameter followed by a period instead of a comma e.g. InitEllipse(e, 10.0. 20.0) is now a compilation error.
- A superfluous comma in an IMPORT list e.g. IMPORT M1, M2, (* M3 *); is now a compilation error.
- Assigning an array to a VAR open array parameter is now a compilation error.
- RETURN "A" when the procedure result type is a CHAR now compiles successfully.