1voidrt_components_init(void)2{3#ifndef _MSC_VER4#ifRT_DEBUG_INIT//启用初始化调试模式5intresult;6conststructrt_init_desc *desc; //rt_init_desc为在rtdef.h中定义的结构体类型,这里定义了指向该结构体类型的指针变量78rt_kprintf("do components intialization.\n");9for(desc = &__rt_init_des...
rt_components_init(); 测试发现去掉rt_components_init不会进入shell比如msh,这里只是初始化一些资源,为何会导致跟msh关联 uart1使用shell,uart2使用通信,去掉rt_components_init发现uart2通信正常,加入rt_components_init发现可以进入shell,但是uart也会有正常通信的数据,但是会有很多垃圾数据出现 垃圾数据如下: "鎜...
---有些组件,例如串口,例如sdram的初始化,是放在调度器起来之前最好-那board.c中应该把rt_console_set_device(RT_CONSOLE_DEVICE_NAME);放在rt_components_board_init后面吧 Contributor liangyongxiang commented Jun 18, 2018 只要求是在uart初始化之后,如果是自动初始化,放在rt_components_board_init后面也很合...
/*initialization export*/#ifdefRT_USING_COMPONENTS_INIT//在rtconfig.h中进行宏定义,则启用RT-thread的组件初始化功能typedefint(*init_fn_t)(void);//对指向int ()(void)函数类型的指针类型取别名init_fn_t。 利用这个别名可定义指向该函数类型的指针,也可用于直接定义该类型的函数名#ifdef_MSC_VER/*we ...
launch本身可以加载Component,也可以加载二进制文件。加载Component的底层,也是配置了一堆dag。加载dag使用mainboard进程启动,一个dag文件中可以有一个或多个components。一个component对应一个协程,协程中的静态变量是共享的,并且全局唯一。 3. Component底层实现原理——协程 ...
那main_thread_entry()里又是啥东东呢,继续跳进去看,首先extern int main(),嗯,看来下面要执行main了,执行前,再来个初始化rt_components_init() (该函数以回调的方式进行component初始化,后面再细细分析,先别打断我们当前思路)。 void main_thread_entry(void *parameter) ...
“components init functions”为所有通过 INIT_COMPONENT_EXPORT(fn)申明的初始化函数。 “enviroment init functions”为所有通过 INIT_ENV_EXPORT(fn)申明的初始化函数。 “application init functions”为所有通过 INIT_APP_EXPORT(fn)申明的初始化函数。
typedef int (*init_fn_t)(void); /* init_fn_t 为函数指针 */ #define RT_SECTION(x) __attribute__((section(x))) 以文件 rt-thread/components/finsh/shell.c 中 Finsh 控制台初始化函数 INIT_APP_EXPORT(finsh_system_init)为例,参照上面的宏定义规则分布展开和最终结果如下 ...
/* 系统 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() ...
intfinsh_system_init(void) 初始化函数通过 INIT_APP_EXPORT(finsh_system_init) 宏定义加入到系统组建初始化 main_thread_entry 会调用 rt_components_init(); 从而去执行”.rti_fn.” level section下的函数入口地址。 RT thread 隐式调用封装的核心机制。