2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef BSP_INIT_H__
|
|
|
|
|
|
#define BSP_INIT_H__
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><CDB9>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD>ɹ<EFBFBD>
|
2025-10-18 13:58:40 +08:00
|
|
|
|
typedef struct {
|
|
|
|
|
|
const char *name;
|
|
|
|
|
|
int (*init)(void);
|
|
|
|
|
|
} init_call_fun;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
2025-10-18 13:58:40 +08:00
|
|
|
|
#define extern_init(name_, init_) \
|
|
|
|
|
|
const char __init_##name_[] __attribute__((section(".name"))) = #name_; \
|
|
|
|
|
|
__attribute__((used, section(".bsp_init"))) \
|
|
|
|
|
|
const init_call_fun __bsp_init_##name_ = { \
|
|
|
|
|
|
.name = __init_##name_, \
|
|
|
|
|
|
.init = init_, \
|
|
|
|
|
|
};
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int bsp_init_all(void);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|