GNU ARM Eclipse plug-ins v2.5.1-201412191510 released | web-jekyll

# GNU ARM Eclipse plug-ins v2.5.1-201412191510 released

Dec 19, 2014 / Liviu Ionescu / gnu, arm, eclipse

Version 2.5.1-201412191510 is a new release; the main improvements include a more reliable J-Link GDB server startup code and an improved Peripherals view, also handling enumerated fields.

Binary files »

New features:

- the code used to start the J-Link GDB server was rewritten for a more reliable error processing; for the best user experience, some changes were also required in the SEGGER software, currently available only in beta (V4.95e); with this new version, the Other options required to start the GDB server are `-singlerun -strict -timeout 0`;
- in the Peripheral memory monitor rendering, the enumerated fields now also show the enumeration value, and the list of available enumerations is also used when entering values for the field;
- in the Peripheral memory monitor rendering, writing a register might have affected the content of other registers too; for more accurate viewing, the entire content of the Peripheral is updated after a register write;
- in the Peripheral memory monitor rendering, the functionality of the first two columns (name and address) was extended, and the columns are sortable, ascending and descending, by clicking on the table header;
- the `-fno-move-loop-invariants` option was added to the common C/C++ Settings → Optimisations group, for use on Debug, especially with `-Og`; without it, parts of the code were moved outside the loop making tracing jumpy, and sometimes interfering with breakpoint placement.

The following bugs were addressed:

- in the Peripheral monitor, the functionality of the write-only fields was erroneously preventing reading the registers; as per ARM specs, reading is allowed and usually returns zero; writing zero is not effective; with the above clarifications, using read/modify/write cycles to update write/only fields is no longer a problem and works as expected;
- the source of problems when running the plug-ins on Luna was identified, it is a bug in Eclipse, that was triggered by the Restart button; until the Eclipse bug is fixed, the workaround was to rewrite the Restart button code; unfortunately not all Eclipse problems could be avoided (see the Known problems section);
- in the SVD parser, the function used to process ScaledNonNegative values was not parsing binary values marked with #; fixed;
- in the SVD parser, in certain conditions, some `derivedFrom=` definitions were not used properly; fixed, now all inheritance cases are implemented;
- [support-requests:#89 & 86] in the Packs installer, in certain network conditions, the package download fails, the result being incomplete archives that cannot be processed; due to the cache used, the incomplete file was not downloaded again, making installing fail repeatedly; fixed, the cached archive is now removed in case of unpack error to allow a new download;
- the Apply button in the C/C++ Settings → Devices tab in did not function properly; fixed
- after the move to Luna, some internal exceptions related to error processing were discovered in the debug plug-ins; fixed, improving error processing.

In the projects generated by the templates, the following issues were addressed:

- [bugs:#131] in certain conditions, the `–specs=nano.specs` option was added twice to the linker line; fixed, now only the boolean option is set by the templates;
- [bugs:#135] in certain conditions, the vectors in the STM32F4 projects were missing some definitions, and in other conditions the definitions were not for the current sub-family; fixed, now the vectors should compile without errors or warnings;
- some defaults used by the Cortex-M template were not correct; fixed;
- for more consistency with the other folders, the CMSIS name was changed to lower case cmsis.

Known problems:

- the Luna Eclipse bug could not be avoided entirely; due to an enabling problem, the first time the Restart button is used, an information message box is displayed, claiming the button is not enabled; clicking the same button again works as expected;
- the new `HardFault_Handler` (used to display the registers on failure) does not compile on Cortex-M0 cores and need to be commented out.

Many thanks to Infineon for supporting the development of the debug plug-ins.

Edit