mirror of https://github.com/ARMmbed/mbed-os.git
INIT: uARM no rtos: Align pre-main initialization steps between TCs
In uARM, the library's hook _platform_post_stackheap_init does not seem to exist and I couldnot find a documentation describing the initialisation flow. All we know is that _open is called after RAM init and before the C++ init, so this is a working placeholder. This is maybe not acceptable so a uARM lib expert may propose a better hook to fullfil the requirement. At least this is a workign setup. This series should solve issue reported here: STM32 (At least F401) breaks if Tickers are activated in a global object #2115pull/2917/head
parent
f50e23aea6
commit
e8d67ac530
|
@ -149,13 +149,21 @@ static inline int openmode_to_posix(int openmode) {
|
|||
return posix;
|
||||
}
|
||||
|
||||
extern "C" WEAK void mbed_sdk_init(void);
|
||||
extern "C" WEAK void mbed_sdk_init(void) {
|
||||
}
|
||||
|
||||
extern "C" FILEHANDLE PREFIX(_open)(const char* name, int openmode) {
|
||||
#if defined(__MICROLIB) && (__ARMCC_VERSION>5030000)
|
||||
// Before version 5.03, we were using a patched version of microlib with proper names
|
||||
// This is the workaround that the microlib author suggested us
|
||||
static int n = 0;
|
||||
static int mbed_sdk_inited = 0;
|
||||
if (!mbed_sdk_inited) {
|
||||
mbed_sdk_inited = 1;
|
||||
mbed_sdk_init();
|
||||
}
|
||||
if (!std::strcmp(name, ":tt")) return n++;
|
||||
|
||||
#else
|
||||
/* Use the posix convention that stdin,out,err are filehandles 0,1,2.
|
||||
*/
|
||||
|
@ -516,10 +524,6 @@ extern "C" WEAK void mbed_main(void);
|
|||
extern "C" WEAK void mbed_main(void) {
|
||||
}
|
||||
|
||||
extern "C" WEAK void mbed_sdk_init(void);
|
||||
extern "C" WEAK void mbed_sdk_init(void) {
|
||||
}
|
||||
|
||||
#if defined(TOOLCHAIN_ARM)
|
||||
extern "C" int $Super$$main(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue