Add optional post-bsp-init hook

This allows the application to inject its own resource reservations
immmediately after the BSP (and therefore HAL) is initialized,
ensuring that they can claim require resources before mbed tries
to use them for more flexible purposes. For example, the application
might want to claim a particular timer to make sure that it doesn't
get picked for us_ticker (which can use any arbitrary timer instance).
pull/13130/head
Kyle Kearney 2020-06-11 11:22:53 -07:00
parent ab5eb07e3c
commit 6a2d93ee94
2 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,45 @@
/*
* mbed Microcontroller Library
* Copyright (c) 2019, Arm Limited and affiliates.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef CY_MBED_POST_INIT_H
#define CY_MBED_POST_INIT_H
#include "mbed_toolchain.h"
#ifdef __cplusplus
extern "C" {
#endif
/*******************************************************************************
* Function Name: cy_mbed_post_bsp_init_hook
****************************************************************************//**
*
* Function that is called immediately after cybsp_init finishes executing
* Applications can override this definition if they need to reserve resources
* early in the startup process so that later stages won't try and use them.
* For example, a timer instance might be reserved so that the us_ticker won't
* try to allocate it.
*
*******************************************************************************/
void cy_mbed_post_bsp_init_hook(void);
#ifdef __cplusplus
}
#endif
#endif /* CY_MBED_POST_INIT_H */

View File

@ -20,6 +20,7 @@
#include "cycfg.h"
#include "cyhal_hwmgr.h"
#include "cybsp.h"
#include "cy_mbed_post_init.h"
#include "mbed_power_mgmt.h"
#if MBED_CONF_RTOS_PRESENT
#include "rtos_idle.h"
@ -49,6 +50,11 @@ static void active_idle_hook(void)
}
#endif
MBED_WEAK void cy_mbed_post_bsp_init_hook(void)
{
/* By default, do nothing */
}
/*******************************************************************************
* Function Name: mbed_sdk_init
****************************************************************************//**
@ -71,6 +77,8 @@ void mbed_sdk_init(void)
/* Set up the device based on configurator selections */
cybsp_init();
cy_mbed_post_bsp_init_hook();
#if CY_CPU_CORTEX_M0P
/* Enable global interrupts */
__enable_irq();