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部分的工作。那么接下来我们先看这两个函数源代码...
rt_components_board_init()函数会遍历通过INIT_BOARD_EXPORT(fn)申明的初始化函数表,并调用各个函数,主要初始化硬件环境,其函数代码如下: void rt_components_board_init(void){const init_fn_t *fn_ptr;for (fn_ptr = &__rt_init_rti_board_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++)...
extern int rt_hw_uart_init(void); rt_hw_uart_init(); #endif #if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif #ifdef RT_USING_COMPONENTS_INIT rt_components_board_init(); #endif } 移植效果 到此为止,基本上已经完成了移植工...
【rt-thread 】组件与设备初始化配置 rt-thread 初始化配置有两个分支: 第一,板级设备初始化 rt_components_board_init() 第二,内核组件初始化 rt_components_init()
1.2.rt_hw_board_init() 该函数主要进行MCU相关硬件外设的初始化,内容依然较多。 /** * This function will initial STM32 board. */ RT_WEAK void rt_hw_board_init() { #ifdef BSP_SCB_ENABLE_I_CACHE /* Enable I-Cache---*/ SCB_EnableICache(); #endif #ifdefBSP_SCB_ENABLE_D_CACHE /* ...
rt_components_board_init()函数会遍历通过INIT_BOARD_EXPORT(fn)申明的初始化函数表,并调用各个函数,主要初始化硬件环境,其函数代码如下: void rt_components_board_init(void) { const init_fn_t *fn_ptr; for (fn_ptr = &__rt_init_rti_board_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr...
rt_components_board_init()函数最先执行,这个函数是用来初始化芯片相关的硬件的,这个函数会遍历用 INIT_BOARD_EXPORT(fn)声明的函数列表。 rt_components_init()函数是在系统启动后,在main线程里面被调用执行,这个函数是用来初始化其他用 INIT_XXX_EXPORT(fn)声明的函数列表的。
rt_components_board_init() 函数执行的比较早,主要初始化相关硬件环境,执行这个函数时将会遍历通过 INIT_BOARD_EXPORT(fn) 申明的初始化函数表,并调用各个函数。 rt_components_init() 函数会在操作系统运行起来之后创建的 main 线程里被调用执行,这个时候硬件环境和操作系统已经初始化完成,可以执行应...
rt_components_board_init()函数会遍历通过INIT_BOARD_EXPORT(fn)申明的初始化函数表,并调用各个函数,主要初始化硬件环境,其函数代码如下: AI检测代码解析 void rt_components_board_init(void) { const init_fn_t *fn_ptr; for (fn_ptr = &__rt_init_rti_board_start; fn_ptr < &__rt_init_rti_boar...