INIT_DEVICE_EXPORT(fn) 外设驱动初始化相关,比如网卡设备 INIT_COMPONENT_EXPORT(fn) 组件初始化,比如文件系统或者 LWIP INIT_ENV_EXPORT(fn) 系统环境初始化,比如挂载文件系统 INIT_APP_EXPORT(fn) 应用初始化,比如 GUI 应用 RT-thread内核对象模型 静态对象:使用时分配内存空间,不依赖于内存堆管理器 动态对象:...
id=rt-thread-自动初始化机制),根据官方文档的讲述在 RTT 源码中一共使用了 6 中顺序的初始化,本文以其中的一个 INIT_APP_EXPORT(fn) 为例进行自动初始化的原理分析,其他顺序的初始化的原理与之一致。
相信不少工程师在阅读RT-Thread相关源代码的时候,都会经常看到如下图所示的宏定义,按照宏定义的命名来理解,这些宏定义似乎都是对一些初始化函数进行某些声明工作。 如上图所示,通过对源码的跟踪发现,这些INIT_XXX_EXPORT的宏定义,最终都是调用了INIT_EXPORT这个宏定义,而这个宏定义,就是把该初始化函数放在自定义的...
INIT_APP_EXPORT(finsh_system_init); 这个的启动的位置,可能小伙伴需要自己根据情况调整 第三步:更改shell.c文件 此时编译是会出问题的 提示我们了finsh_system_init() 函数在shell.c 和 Cpu0_Main.c 重复定义了(更准确地说是重复使用了) 下面打开RTT库下的shell.c (rtthread_libraries/components/finsh/shel...
rt_components_init()函数是在系统启动后,在main线程里面被调用执行,这个函数是用来初始化其他用 INIT_XXX_EXPORT(fn)声明的函数列表的。 目前RT-Thread内核里面,用来实现自动初始化功能的宏定义接口,如下图所示。 综上所述,要使用RT-Thread的自动初始化流程,可以概括为以下如图所示的步骤。
rt_components_init()函数是在系统启动后,在main线程里面被调用执行,这个函数是用来初始化其他用 INIT_XXX_EXPORT(fn)声明的函数列表的。 目前RT-Thread内核里面,用来实现自动初始化功能的宏定义接口,如下图所示。 综上所述,要使用RT-Thread的自动初始化流程,可以概括为以下如图所示的步骤。
#define INIT_APP_EXPORT(fn) INIT_EXPORT(fn, "6") 通过源码的学习,了解一下程序初始化过程。 1)首先在main函数内调用了 rtthread_startup() 函数; 2)在void rtthread_startup(void)内调用了 rt_hw_board_init() 函数; 3)在 rt_hw_board_init() 函数内调用 rt_components_board_init(); ...
转载自RT-Thread-RT-Thread 的 INIT_BOARD_EXPORT(fn) 宏 实现过程RT-Thread问答社区 - RT-Thread [postbg]bg8.png[/postbg]由于项目需要,最近也开始接触RTT,小白一枚。如有错误,多多指教。 今天在看RT-Thread启动分析时,遇到了这样一段代码(下面红色代码): ...
RT-Thread 的自动初始化机制使用了自定义 RTI 符号段,将需要在启动时进行初始化的函数指针放到了该段中,形成一张初始化函数表,在系统启动过程中会遍历该表,并调用表中的函数,达到自动初始化的目的。 自动初始化功能的宏接口定义详细描述如下表所示: 初始化函数主动通过这些宏接口进行申明,如 INIT_BOARD_EXPORT(rt...
INIT_APP_EXPORT(led_init);intmain(intargc,char*argv[]){ led_on(); rt_kprintf("hello rt thread\r\n");return1; } 1 2 3 4 5 6 7 8 9 10 11 登录后即可复制 自动初始化的中心思想是,在执行函数之前,每个外设的初始化都已完成,所有外设都可以直接在函数中使用。例如,上面的程序直接用于输出...