Overview
The Eclipse Embedded CDT plug-ins provide template support for some of the most popular microcontrollers, but it is not reasonable to expect support for all existing ones. For the microcontrollers not supported by the specific templates, the Eclipse Embedded CDT plug-ins still provide a method to create projects, using the generic Cortex-M template.
Requirements
The projects generated by the template are almost complete, except the device specific files, which must be provided by the user.
Before starting to use the generated projects, please identify the CMSIS vendor specific files. The required files are:
- the device CMSIS header (for example
stm32f4xx.h
) - the device CMSIS system header (for example
system_stm32f4xx.h
) - the device CMSIS system source file (for example
system_stm32f4xx.c
) - the device specific interrupt vectors (for example
vectors_stm32f4xx.c
)
The first 3 files should be copied from the vendor specific package.
Definitions of the interrupt vectors is usually done in an assembly
file; it is recommended to identify the names of the vectors, and enter
them in the .c
vectors file.
Create a new project
The template can create both C and C++ projects. To create a new C++ project:
- in the Eclipse menu, go to File → New → C++ Project
- in the Executables group, select the Hello Arm Cortex-M C/C++ Project
Select the core type and various project settings:
All the above setting can be changes later, either in the project settings, or as different preprocessor definitions.
Define the names of the destination folders:
Instead of DEVICE, it is recommended to use the actual name suggested byt he vendor, for example stm32f4-stdperiph.
Accept the default configuration names:
Define the toolchain name and path:
The generated project has the following structure:
Copy vendor specific files
In the generates project identify the system/include/cmsis
and
system/src/cmsis
folder, and copy the vendor specific files to them:
- the device CMSIS header (for example
stm32f4xx.h
) should be copied tosystem/include/cmsis
instead ofDEVICE.h
- the device CMSIS system header (for example
system_stm32f4xx.h
) should be copied tosystem/include/cmsis
instead ofsystem_DEVICE.h
- the device CMSIS system source file (for example
system_stm32f4xx.c
) should be copied tosystem/src/cmsis
instead ofsystem_DEVICE.c
- the device specific interrupt vectors (for example
vectors_stm32f4xx.c
) should be copied tosystem/src/cmsis
instead ofvectors_DEVICE.c
Check and correct the memory map
The defaults used for this generic project should be ok for most of the existing devices, but there might be cases when some devices have specific characteristics.
For this reason it is recommended to check the memory map generated
in the ldscripts/mem.ld
file, and possibly update the values that do
not match your device, for example the flash origin, or the RAM origin.
You can safely edit this file, since it will not be overwritten by the plug-in during future builds.
Build
As seen in the above picture, even without the vendor specific files, the project builds without errors and, strangely enough, runs on the target, printing trace lines on the debugger output window, counting seconds.