ARMLINK: Error: L6200E: Symbol SysTick_Handler multiply defined
Information in this knowledgebase article applies to:
I have added a SysTick_Handler function to my application (in the file blinky.c) and now I am getting the following linker messages when I build the project:
.\Flash\Blinky.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by hal_cm3.o and blinky.o). Not enough information to list image symbols. Not enough information to list the image map.
The error message indicates that the application implements already a SysTick_Handler in the module hal_cm3.o. It is not possible to overwrite this interrupt handler and therefore the linker issues a error that indicates this multiple definitions.
The module hal_cm3.o is part of the CMSIS-RTOS RTX library. You can identify the exact library by using the ARM linker command line option --show_parent_lib and --show_full_path. In µVision these options under Project - Options for Target - Linker. Enter under Misc Controls:
Now the linker error includes the full file name of the library:
.\Flash\Blinky.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by C:\Keil_v5\ARM\PACK\ARM\..\CMSIS\RTOS\RTX\LIB\ARM\RTX_CM3.lib(hal_cm3.o) and .\flash\blinky.o).
The library file RTX_CM3.lib relates to a Software Component that can be identified in the Project Window. Once this Software Component is removed from the project the second definition of the SysTick_Handler function disappears and the error does no longer occur.
The following Discussion Forum threads may provide information related to this topic.
Last Reviewed: Wednesday, August 19, 2015
of your data.