RT-Thread的自动初始化机制使用了自定义 RTI符号段,将需要在启动时进行初始化的函数指针放到了该段中,形成一张初始化函数表,在系统启动过程中会遍历该表,并调用表中的函数,达到自动初始化的目的。 自动初始化功能的宏接口定义详细描述如下表所示: 初始化函数主动通过这些宏接口进行申明,如 INIT_BOARD_EXPORT(r
在RT-Thread中,自动初始化是一种机制,它允许开发者在不需要显式调用初始化函数的情况下,自动完成系统组件和驱动程序的初始化。以下是对RT-Thread自动初始化的详细解释: 1. 自动初始化的含义 在RT-Thread中,自动初始化是一种通过宏定义和链接器特性,自动收集和调用初始化函数的方法。这意味着开发者只需在函数定义...
定义 函数指针块 主要用于map文件标记 components.c 中 static int rti_start(void)return 0;} INIT_...
通过rt_components_board_init()和rt_components_init()函数,就完成了所有需要自动初始化函数的调用。 3、启动顺序 在日常使用中,功能的初始化是需要有先后循序的。根据上面的分析,RT-Thread 通过不同的宏完成顺序调用。 1.rt_components_board_init()函数较rt_components_init()先被调用,所以INIT_BOARD_EXPORT相...
这样,使用一个宏,初始化函数就会被自动初始化,不用在其他地方显式调用 led_init() 。代码瞬间清爽很多。 二、引入 当然也不用担心一个初始化必须在另一个初始化之前的问题,因为这里有6个自动初始化等级可供选择。 我抠了一张RT-Thread官网文档的图,该图是RT-Thread代码的启动流程图,该图中的蓝色方框部分就是...
rt_components_init() 函数会遍历通过剩下的其他几个宏申明的初始化函数表。 RT-Thread的自动初始化机制使用了自定义 RTI符号段,将需要在启动时进行初始化的函数指针放到了该段中,形成一张初始化函数表,在系统启动过程中会遍历该表,并调用表中的函数,达到自动初始化的目的。 自动初始化功能的宏接口定义详细描述...
这样,使用一个宏,初始化函数就会被自动初始化,不用在其他地方显式调用 led_init() 。代码瞬间清爽很多。 二、引入 当然也不用担心一个初始化必须在另一个初始化之前的问题,因为这里有6个自动初始化等级可供选择。 我抠了一张RT-Thread官网文档的图,该图是RT-Thread代码的启动流程图,该图中的蓝色方框部分就是...
当我们使用RT-Thread后,完全不需要这样做了,我们可以将硬件等自动初始化。RT-Thread 自动初始化机制是指初始化函数不需要被显式调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。 5.1普通初始化 前面也讲了,我们在写单片机的程序时,需要对硬件进行初始化操作,我们这里还是以LED...
rt_components_init()函数是在系统启动后,在main线程里面被调用执行,这个函数是用来初始化其他用 INIT_XXX_EXPORT(fn)声明的函数列表的。 目前RT-Thread内核里面,用来实现自动初始化功能的宏定义接口,如下图所示。 综上所述,要使用RT-Thread的自动初始化流程,可以概括为以下如图所示的步骤。 为什么初始化函数加入了...
(https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/basic/basic?id=rt-thread-自动初始化机制),根据官方文档的讲述在 RTT 源码中一共使用了 6 中顺序的初始化,本文以其中的一个 INIT_APP_EXPORT(fn) 为例进行自动初始化的原理分析,其他顺序的初始化的原理...