56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
![]() |
/******************************************************************************
|
|||
|
|
|||
|
Copyright @2024 - 2044 Shenzhen dcenzix Technology Ltd.
|
|||
|
|
|||
|
******************************************************************************
|
|||
|
@file cola_init.h
|
|||
|
@brief 各个需要自动初始化的函数放到指定的段中,形成一张初始化函数表
|
|||
|
@author xiexiongwu
|
|||
|
@version V1.0
|
|||
|
@date 2024年5月25日
|
|||
|
|
|||
|
******************************************************************************/
|
|||
|
#ifndef __COLA_INIT_H__
|
|||
|
#define __COLA_INIT_H__
|
|||
|
|
|||
|
/*----------------------------------------------*
|
|||
|
* 宏定义 *
|
|||
|
*----------------------------------------------*/
|
|||
|
/* 修改后的宏定义(适配GCC) */
|
|||
|
#define __used __attribute__((used)) // 简化属性语法
|
|||
|
|
|||
|
typedef void (*initcall_t)(void);
|
|||
|
|
|||
|
/* 重新定义段命名规则 */
|
|||
|
#define __define_initcall(fn, level) \
|
|||
|
static const initcall_t __initcall_##fn##level __used \
|
|||
|
__attribute__((__section__(".initcall" #level ".init"))) = fn;
|
|||
|
|
|||
|
#define sysclk_initcall(fn) __define_initcall(fn, 0)
|
|||
|
#define register_initcall(fn) __define_initcall(fn, 1)
|
|||
|
#define bsp_initcall(fn) __define_initcall(fn, 2)
|
|||
|
#define device_initcall(fn) __define_initcall(fn, 3)
|
|||
|
#define app_initcall(fn) __define_initcall(fn, 4)
|
|||
|
|
|||
|
|
|||
|
/*----------------------------------------------*
|
|||
|
* 函数原型说明 *
|
|||
|
*----------------------------------------------*/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
#if __cplusplus
|
|||
|
extern "C"{
|
|||
|
#endif
|
|||
|
#endif /* __cplusplus */
|
|||
|
|
|||
|
extern void do_init_call(void);
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
#if __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
#endif /* __cplusplus */
|
|||
|
|
|||
|
|
|||
|
#endif /* __COLA_INIT_H__ */
|