/* * Copyright (c) 2014-2016 Cesanta Software Limited * All rights reserved */ #include /* * STM's startup script requires __libc_init_array for successfull * initialization. * Oficially supported IDE (Keil, IAR...) provide this function. * We use our own */ extern void (*__preinit_array_start[])(void) __attribute__((weak)); extern void (*__preinit_array_end[])(void) __attribute__((weak)); extern void (*__init_array_start[])(void) __attribute__((weak)); extern void (*__init_array_end[])(void) __attribute__((weak)); void __libc_init_array(void) { size_t count; size_t i; count = __preinit_array_end - __preinit_array_start; for (i = 0; i < count; i++) __preinit_array_start[i](); count = __init_array_end - __init_array_start; for (i = 0; i < count; i++) __init_array_start[i](); }