A family of Eclipse CDT extensions and tools for GNU ARM & RISC-V development

GNU ARM Eclipse plug-ins v2.2.1-201404120702 released

Posted on April 12, 2014 by Liviu Ionescu.

Version 2.2.1 is a major release. The main changes are: the complete overhaul of the template plug-ins, the addition of a generic Cortex-M template, the addition of the STM32F2xx template and a better integration of the Freescale PEx template with the Processor Expert 10.4 version.

the generic Cortex-M template was added, to provide a starting point for projects using processors not yet fully supported

the STM32F2xx templates were added, completing the STM32F family

the STM32F4 template was updated to use the new HAL library, instead of the StdPeriph library

starting with Processor Expert 10.4, the Freescale PEx template can now properly launch the new project wizard, so integration with Processor Expert is fully functional

all templates now optionally use the newlib nano library

all templates now optionally use the new GCC 4.8 -Og option for debug configurations

a new trace facility, using separate functions like trace_printf(), was added to the code generated for the templates; the trace output channel can be changed with a preprocessor define

[feature-requests:#39] selecting semihosting/retargetting/standalone is no longer a one time decision, but can be changed at build time using preprocessor definitions

new selection values were added for the -mcu= option

arm610

cortex-r5

cortex-r7

generic-armv7-a

new selection values were added for the -march= option

armv6s-m

armv7e-m

[feature-requests:#37] a new option Save temporary files (–save-temps) was added to the Miscellaneous category of the compiling tools

[feature-requests:#41] in the Tool Settings tab, the common Warnings category, new options were added:

-Wunused

-Wpadded

in the Tool Settings tab, the Warnings category of the C tool, new options were added:

-Wmissing-prototypes

-Wstrict-prototypes

-Wbad-function-cast

in the Tool Settings tab, the Warnings category of the C++ tool, new options were added:

-Wctor-dtor-privacy

-Wnoexcept

-Wnon-virtual-dtor

-Wstrict-null-sentinel

-Wsign-promo

in the Tool Settings tab, the common Optimization category, new options were added:

-ffreestanding

in the Tool Settings tab, the Optimization category of the C++ tool, new options were added:

-fabi-version=

-fno-threadsafe-statics

the templates can now optionally generate freestanding programs, using the -ffreestanding option.

Major CDT bugs fixed:

[support-requests:#44] due to a long standing CDT bug affecting the creation of make files, the dependencies were not properly checked; the culprit was the -MF"$(@:%.o=%.d)", instead of -MT"$@", which generated wrong targets in the make files; until a proper patch will be applied to CDT, the workaround in the plug-in was to locally perform the replacement.

Bugs fixed:

the names of the windows tools for Sourcery CodeBench Lite were changed from cs_make/cs_rm, instead of cs-make/cs-rm

after project rename there were many exceptions due to name change; fixed

[bugs:#96] changing the toolchain of another build configuration then the active one was not possible in the Toolchains tab; fixed

[bugs:#103, bugs:#97] J-Link & OpenOCD: changing some of the fields in the interface did not enable the Apply button; fixed

[bugs:#94] in the Tool Settings tab, the optimisation option ‘Do not use _cxa_atexit() (-fno-use-cxa-atexit)’ was moved from the common category to the C++ compiler tool, since it applies only to C++

in the Tool Settings tab, the warning option ‘Warn if wrong cast (-Wbad-function-cast)’ was moved from the common category to the C compiler tool, since it applies only to C

J-Link: in certain conditions, the remote address & port were not properly set, and the debugging session did not start; fixed

J-Link: in certain erroneous conditions, the J-Link plug-in triggered an exception, leaving the process handling the semihosting and SWO console in a wrong state; fixed

the inlines used in the Trace.h header were marked with ((always_inline)), to ensure no code is generated on all optimisation levels

[bugs:#99] J-Link & OpenOCD: macro substitution added to most fields available in the interface

[bugs:#100] J-Link: to avoid confusion related to multiple JTAG/SWD speeds in the interface, the labelling was changed to ‘Initial speed’ and ‘JTAG/SWD Speed’

[bugs:#95] timer setting in templates was not accurate; fixed

[bugs:#88] the interrupt handlers generated by the templates were not declared in the “C” namespace and failed when generating C++ projects; fixed.

Other changes:

templates share a common code, to keep them consistent between processor families

the projects generated by the templates have a new structure, with a single hierarchical level below include and src

all projects generated by the template plug-ins also have now the C++ nature; the change does not impact at all C only projects, but keeps an open door to the possibility of adding future C++ libraries to the generated projects.

templates common code is now directly copied from the sources of the µOS++, to keep them consistent between processor families and with future code

J-Link & OpenOCD: a notice was added near the second reset field, to warn on not using it when debugging from RAM

J-Link & OpenOCD: when launching external processes (like JLinkGDB Server, GDB client, OpenOCD), the current folder is set to the project folder, to easily refer to local configuration files

the language standard defaults for new projects were changed to ISO C11 (-std=gnu11) and C++11 (-std=gnu++11)

J-Link: as suggested by SEGGER, the default speed used for the initial server connection was increased to 1000 kHz

guard checks were added on debug in the startup code, to check if the proper BSS and DATA initialisations were performed

[feature-requests:#40] on Cortex-M3/M4 the trace semihosting output code can check if not running under debugger and skip the semihosting call, so it is possible to execute the applications built for Debug without the debugger connected (unfortunately for Cortex-M0/M0+ the debug registers are not available to the application, so this test cannot be done)

for all STM32 templates, the USE_FULL_ASSERT was added to debug configurations, and assert_param() is functional

J-Link & OpenOCD: most fields in the interface are now persistent, serving as defaults when creating new debug configurations.