mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #2917 from c1728p9/fix_InitTCs
Initialization steps in toolchainspull/2915/merge mbed-os-5.2.0-rc1
commit
670b0984eb
|
@ -149,13 +149,21 @@ static inline int openmode_to_posix(int openmode) {
|
||||||
return posix;
|
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) {
|
extern "C" FILEHANDLE PREFIX(_open)(const char* name, int openmode) {
|
||||||
#if defined(__MICROLIB) && (__ARMCC_VERSION>5030000)
|
#if defined(__MICROLIB) && (__ARMCC_VERSION>5030000)
|
||||||
// Before version 5.03, we were using a patched version of microlib with proper names
|
// 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
|
// This is the workaround that the microlib author suggested us
|
||||||
static int n = 0;
|
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++;
|
if (!std::strcmp(name, ":tt")) return n++;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Use the posix convention that stdin,out,err are filehandles 0,1,2.
|
/* Use the posix convention that stdin,out,err are filehandles 0,1,2.
|
||||||
*/
|
*/
|
||||||
|
@ -501,7 +509,7 @@ extern "C" void software_init_hook(void)
|
||||||
mbed_die();
|
mbed_die();
|
||||||
}
|
}
|
||||||
#endif/* FEATURE_UVISOR */
|
#endif/* FEATURE_UVISOR */
|
||||||
|
mbed_sdk_init();
|
||||||
software_init_hook_rtos();
|
software_init_hook_rtos();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -516,23 +524,22 @@ extern "C" WEAK void mbed_main(void);
|
||||||
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)
|
#if defined(TOOLCHAIN_ARM)
|
||||||
extern "C" int $Super$$main(void);
|
extern "C" int $Super$$main(void);
|
||||||
|
|
||||||
extern "C" int $Sub$$main(void) {
|
extern "C" int $Sub$$main(void) {
|
||||||
mbed_sdk_init();
|
|
||||||
mbed_main();
|
mbed_main();
|
||||||
return $Super$$main();
|
return $Super$$main();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void _platform_post_stackheap_init (void) {
|
||||||
|
mbed_sdk_init();
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined(TOOLCHAIN_GCC)
|
#elif defined(TOOLCHAIN_GCC)
|
||||||
extern "C" int __real_main(void);
|
extern "C" int __real_main(void);
|
||||||
|
|
||||||
extern "C" int __wrap_main(void) {
|
extern "C" int __wrap_main(void) {
|
||||||
mbed_sdk_init();
|
|
||||||
mbed_main();
|
mbed_main();
|
||||||
return __real_main();
|
return __real_main();
|
||||||
}
|
}
|
||||||
|
|
|
@ -538,6 +538,7 @@ void pre_main (void)
|
||||||
__asm void __rt_entry (void) {
|
__asm void __rt_entry (void) {
|
||||||
|
|
||||||
IMPORT __user_setup_stackheap
|
IMPORT __user_setup_stackheap
|
||||||
|
IMPORT _platform_post_stackheap_init
|
||||||
IMPORT os_thread_def_main
|
IMPORT os_thread_def_main
|
||||||
IMPORT osKernelInitialize
|
IMPORT osKernelInitialize
|
||||||
#ifdef __MBED_CMSIS_RTOS_CM
|
#ifdef __MBED_CMSIS_RTOS_CM
|
||||||
|
@ -558,6 +559,7 @@ __asm void __rt_entry (void) {
|
||||||
/* Ignore return value of __user_setup_stackheap since
|
/* Ignore return value of __user_setup_stackheap since
|
||||||
* this will be setup by set_stack_heap
|
* this will be setup by set_stack_heap
|
||||||
*/
|
*/
|
||||||
|
BL _platform_post_stackheap_init
|
||||||
BL osKernelInitialize
|
BL osKernelInitialize
|
||||||
#ifdef __MBED_CMSIS_RTOS_CM
|
#ifdef __MBED_CMSIS_RTOS_CM
|
||||||
BL set_stack_heap
|
BL set_stack_heap
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
void mbed_sdk_init() {
|
void mbed_sdk_init() {
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
// Need to restart HAL driver after the RAM is initialized
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,9 +162,6 @@ void pwmout_period_us(pwmout_t* obj, int us) {
|
||||||
|
|
||||||
__HAL_TIM_DISABLE(&TimHandle);
|
__HAL_TIM_DISABLE(&TimHandle);
|
||||||
|
|
||||||
// Update the SystemCoreClock variable
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
/* To make it simple, we use to possible prescaler values which lead to:
|
/* To make it simple, we use to possible prescaler values which lead to:
|
||||||
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
||||||
* or
|
* or
|
||||||
|
|
|
@ -90,10 +90,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
// Need to restart HAL driver after the RAM is initialized
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,9 +152,6 @@ void pwmout_period_us(pwmout_t* obj, int us)
|
||||||
|
|
||||||
__HAL_TIM_DISABLE(&TimHandle);
|
__HAL_TIM_DISABLE(&TimHandle);
|
||||||
|
|
||||||
// Update the SystemCoreClock variable
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
/* To make it simple, we use to possible prescaler values which lead to:
|
/* To make it simple, we use to possible prescaler values which lead to:
|
||||||
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
||||||
* or
|
* or
|
||||||
|
|
|
@ -82,10 +82,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,10 +82,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,9 +113,6 @@ void i2c_frequency(i2c_t *obj, int hz)
|
||||||
timeout = LONG_TIMEOUT;
|
timeout = LONG_TIMEOUT;
|
||||||
while ((__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_BUSY)) && (timeout-- != 0));
|
while ((__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_BUSY)) && (timeout-- != 0));
|
||||||
|
|
||||||
// Update the SystemCoreClock variable.
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Values calculated with I2C_Timing_Configuration_V1.0.1.xls file (see AN4235)
|
Values calculated with I2C_Timing_Configuration_V1.0.1.xls file (see AN4235)
|
||||||
* Standard mode (up to 100 kHz)
|
* Standard mode (up to 100 kHz)
|
||||||
|
|
|
@ -32,6 +32,8 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
// Need to restart HAL driver after the RAM is initialized
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,9 +82,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
|
|
|
@ -33,8 +33,10 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
// Need to restart HAL driver after the RAM is initialized
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -84,10 +84,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,10 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
// Need to restart HAL driver after the RAM is initialized
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -83,10 +83,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,4 +32,8 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,10 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
|
HAL_Init();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(TARGET_XDOT_L151CC)
|
#if defined(TARGET_XDOT_L151CC)
|
||||||
if (PWR->CSR & PWR_CSR_SBF) {
|
if (PWR->CSR & PWR_CSR_SBF) {
|
||||||
|
|
|
@ -166,8 +166,6 @@ void pwmout_period_us(pwmout_t* obj, int us)
|
||||||
|
|
||||||
__HAL_TIM_DISABLE(&TimHandle);
|
__HAL_TIM_DISABLE(&TimHandle);
|
||||||
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
/* To make it simple, we use to possible prescaler values which lead to:
|
/* To make it simple, we use to possible prescaler values which lead to:
|
||||||
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
||||||
* or
|
* or
|
||||||
|
|
|
@ -82,10 +82,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,4 +32,8 @@ void mbed_sdk_init()
|
||||||
{
|
{
|
||||||
// Update the SystemCoreClock variable.
|
// Update the SystemCoreClock variable.
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
#if !defined(TOOLCHAIN_GCC_ARM)
|
||||||
|
// Need to restart HAL driver after the RAM is initialized
|
||||||
|
HAL_Init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,8 +167,6 @@ void pwmout_period_us(pwmout_t* obj, int us)
|
||||||
|
|
||||||
__HAL_TIM_DISABLE(&TimHandle);
|
__HAL_TIM_DISABLE(&TimHandle);
|
||||||
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
/* To make it simple, we use to possible prescaler values which lead to:
|
/* To make it simple, we use to possible prescaler values which lead to:
|
||||||
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
* pwm unit = 1us, period/pulse can be from 1us to 65535us
|
||||||
* or
|
* or
|
||||||
|
|
|
@ -82,10 +82,6 @@ static void init_uart(serial_t *obj)
|
||||||
huart->Init.Mode = UART_MODE_TX_RX;
|
huart->Init.Mode = UART_MODE_TX_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* uAMR & ARM: Call to UART init is done between reset of pre-initialized variables */
|
|
||||||
/* and before HAL Init. SystemCoreClock init required here */
|
|
||||||
SystemCoreClockUpdate();
|
|
||||||
|
|
||||||
if (HAL_UART_Init(huart) != HAL_OK) {
|
if (HAL_UART_Init(huart) != HAL_OK) {
|
||||||
error("Cannot initialize UART\n");
|
error("Cannot initialize UART\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue