RT-thread提供了组件化功能,具体实现是在components/init文件夹下components.c文件中实现的。应用组件化功能首先在rtconfig.h中添加宏定义#defineRT_USING_COMPONENTS_INIT;若需要启用调试模式,则还要添加#define RT_DEBUG_INIT 1。 1voidrt_components_board_init(void)2{3#ifndef _MSC_VER 4 #if RT_DEBUG_INIT...
前文说过,在RT-Thread的启动流程中,调用了两个函数 rt_components_board_init()与 rt_components_init()就完成了上述6个部分的初始化工作。从初始化启动流程图中我们可以看出: rt_components_board_init()完成了第 1部分工作, rt_components_init()完成了第2-6部分的工作。那么接下来我们先看这两个函数源代码...
/*initialization export*/#ifdefRT_USING_COMPONENTS_INIT//在rtconfig.h中进行宏定义,则启用RT-thread的组件初始化功能typedefint(*init_fn_t)(void);//对指向int ()(void)函数类型的指针类型取别名init_fn_t。 利用这个别名可定义指向该函数类型的指针,也可用于直接定义该类型的函数名#ifdef_MSC_VER/*we ...
/* 系统 main 线程入口函数 */void main_thread_entry(void *parameter){extern int main(void);extern int $Super$$main(void);#ifdef RT_USING_COMPONENTS_INIT/* RT-Thread 组件初始化 */rt_components_init();#endif#ifdef RT_USING_SMPrt_hw_secondary_cpu_up();#endif/* 调用系统主函数 main() ...
rt_components_board_init(); #endif #ifdef RT_USING_HEAP rt_kprintf("heap: [0x%08x - 0x%08x]n", (rt_ubase_t)RT_HW_HEAP_BEGIN, (rt_ubase_t)RT_HW_HEAP_END); #endif /RT_USING_HEAP */ } rt_page_init rt-smart中使用了buddy算法管理了一部分内存区域,系统使用page_alloc来向buddy管理的...
#ifdef RT_USING_COMPONENTS_INIT typedef int (*init_fn_t)(void); 1. 2. 这就是一个函数指针类型,其实就是个指针。那么SECTION又是啥呢?其定义如下: __ attribute__((used))表示这个标记这个东西是使用过的,避免出现如: warning: #177-D: variable “a” was declared but never referenced的警告。
1. “board init functions” 为所有通过 INIT_BOARD_EXPORT(fn) 申明的初始化函数。 2. “pre-initialization functions” 为所有通过 INIT_PREV_EXPORT(fn) 申明的初始化函数。 3. “device init functions” 为所有通过 INIT_DEVICE_EXPORT(fn) 申明的初始化函数。 4. “components init functions” 为所有...
“device init functions” 为所有通过 INIT_DEVICE_EXPORT(fn) 申明的初始化函数。 “components init functions” 为所有通过 INIT_COMPONENT_EXPORT(fn)申明的初始化函数。 “enviroment init functions” 为所有通过 INIT_ENV_EXPORT(fn) 申明的初始化函数。
io_config_init(); /* initalize interrupt */ rt_hw_interrupt_init(); /* initialize hardware interrupt */ rt_hw_uart_init(); rt_hw_tick_init(); #ifdef RT_USING_SMP rt_hw_clint_ipi_enable(); #endif #ifdef RT_USING_CONSOLE
代替),仅保留待会我们要用的东西/* 初始化段,程序的入口 _start 存放在该段/.init :{...} >F...