INIT_DEVICE_EXPORT(fn) 外设驱动初始化相关,比如网卡设备 INIT_COMPONENT_EXPORT(fn) 组件初始化,比如文件系统或者 LWIP INIT_ENV_EXPORT(fn) 系统环境初始化,比如挂载文件系统 INIT_APP_EXPORT(fn) 应用初始化,比如 GUI 应用 RT-thread内核对象模型 静态对象:使用时分配内存空间,不依赖于内存堆管理器 动态对象:...
如上图红框所示,rt_hw_pin_init和rt_hw_usart_init都是使用 INIT_BOARD_EXPORT(fn)声明的函数,因此,它们是存放在橙色竖线所在的区间的,使用rt_components_board_init()函数就可以对这个区间进行遍历。 如上图蓝框和绿框所示,它们分别是用 INIT_COMPONENT_EXPORT(fn)和 INIT_APP_EXPORT(fn)声明的函数,这些函数...
rt_components_init()函数是在系统启动后,在main线程里面被调用执行,这个函数是用来初始化其他用 INIT_XXX_EXPORT(fn)声明的函数列表的。 目前RT-Thread内核里面,用来实现自动初始化功能的宏定义接口,如下图所示。 综上所述,要使用RT-Thread的自动初始化流程,可以概括为以下如图所示的步骤。 为什么初始化函数加入了...
INIT_COMPONENT_EXPORT 主要用于组件的初始化,像文件系统或者 LWIP 等组件的初始化就可通过此宏。 INIT_ENV_EXPORT 用于系统环境的初始化,比如挂载文件系统等操作。 INIT_APP_EXPORT 则用于应用的初始化,比如 GUI 应用等。 通过这些不同类型的自动初始化接口,开发者能够根据具体的初始化需求,将函数放置在合适的初始...
如上图蓝框和绿框所示,它们分别是用 INIT_COMPONENT_EXPORT(fn)和 INIT_APP_EXPORT(fn)声明的函数,这些函数是存放在红色竖线所在的区间的,使用rt_components_init()函数就可以对这个区间进行遍历。 从上面的分析可以看出,使用符号段的方式来存放初始化函数,好处就是当我需要添加某一个初始化函数的时候,就不需要再...
$Sub$$main函数调用了rtthread_startup()函数,rtthread_startup()完成 RT-Thread 的启动。 int rtthread_startup(void) { /* 关闭全局中断 */ rt_hw_interrupt_disable(); /* 硬件配置初始化 */ rt_hw_board_init(); /* 打印 RT-Thread 版本信息 */ ...
rt_components_init()函数是在系统启动后,在main线程里面被调用执行,这个函数是用来初始化其他用 INIT_XXX_EXPORT(fn)声明的函数列表的。 目前RT-Thread内核里面,用来实现自动初始化功能的宏定义接口,如下图所示。 综上所述,要使用RT-Thread的自动初始化流程,可以概括为以下如图所示的步骤。
init_thread*/29/*device initialization*/30#defineINIT_DEVICE_EXPORT(fn) INIT_EXPORT(fn, "2")31/*components initialization (dfs, lwip, ...)*/32#defineINIT_COMPONENT_EXPORT(fn) INIT_EXPORT(fn, "3")33/*file system initialization (dfs-elm, dfs-rom, ...)*/34#defineINIT_FS_EXPORT(fn)...
系统先从启动文件开始运行,然后进入 RT-Thread 的启动入口rtthread_startup(),最后进入用户入口main()。 以MDK-ARM 为例,RT-Thread 启动流程,如下图所示: 系统启动后,先从汇编代码startup_xx.s开始运行,然后跳转到 C 代码,进行 RT-Thread 系统启动,最后进入用户程序入口main()。
一、finsh组件初始化函数finsh_system_init(),并且添加了INIT_COMPONENT_EXPORT(finsh_system_init),支持组件初始化; 这个函数会初始化finsh组件,包括一些finsh变量以及相关数据结构。 然后它会创建一个线程,代码如下: 代码语言:javascript 复制 result=rt_thread_init(&finsh_thread,"tshell",finsh_thread_entry,RT_...