在 RT-Thread v3.1.0 以前的版本中,这也称之为应用模块(Application Module),在 RT-Thread v3.1.0 及之后,则回归传统,以动态模块命名。 dlmodule 组件更多的是一个 ELF 格式加载器,把单独编译的一个 elf 文件的代码段,数据段加载到内存中,并对其中的符号进行解析,绑定到内核导出的 API 地址上。动态模块...
在rtthread_startup函数中:主要实现了板级初始化(如led的初始化,串口初始化就是在这里边调用的);打印RT-Thread的logo和版本信息;初始化系统定时器;初始化调度器;创建application初始化线程(这里将用户main函数作为一个线程,用户main里面是空的);初始化软件定时器;创建空闲线程;启动系统调度(启用调度后,main函数就会...
5. “enviroment init functions” 为所有通过 INIT_ENV_EXPORT(fn) 申明的初始化函数。 6. “application init functions” 为所有通过 INIT_APP_EXPORT(fn) 申明的初始化函数。 rt_components_board_init() 函数执行的比较早,主要初始化相关硬件环境,执行这个函数时将会遍历通过 INIT_BOARD_EXPORT(fn) 申明的初...
8、我想自己定义一个文件,不想和软件包的内容放一起,自己看起来舒服,好,那接下来我们编写自己的OLED显示线程,说白了很简单,自己定义一个文件,就可以了,我们放在application文件夹中,新建文件OLED_Display.cpp文件,写入下面内容就可以啦,就可以做做自己的显示处理逻辑了 #include <rthw.h> #include <rtthread.h>...
A Simple Application This is a simple application ofHello World: #include<stdio.h> intmain(intargc,char**argv) { printf("Hello World!\n"); return0; } It's just like theHello Worldprogram in the PC/Linux. Beside that, the user application can use the most of APIs of RT-Thread, fo...
⑤以下是在rt_application_init()函数中创建的main函数线程:⑥$Super$$mian 可以直接跳到main()函数;...
application: 应用代码存放; board: 设备驱动存放,使用ST官方的CubeMX进行创建; build: 编译文件存放; figure: README.md的图片存放; libraries:RTT和ST提供的针对STM32F4xx的库文件; packages: RTT软件包存放; rt-thread: 操作系统存放; si-prj.si4project: SourceInsight工程文件存放; ...
在rtthread_startup函数中:主要实现了板级初始化(如led的初始化,串口初始化就是在这里边调用的);打印RT-Thread的logo和版本信息;初始化系统定时器;初始化调度器;创建application初始化线程(这里将用户main函数作为一个线程,用户main里面是空的);初始化软件定时器;创建空闲线程;启动系统调度(启用调度后,main函数就会...
4、关于rt_application_init()函数,主要是创建了一个名为main的主线程,这个线程的函数入口是main_thread_entry,这里有两种创建方式,二选一,如果使用了系统堆内存,则使用动态创建的方式,线程使用的内存资源可以动态进行申请或释放,如果没有使用系统堆内存,则使用静态创建的方式,线程使用的内存资源是固定好的,不能被释...
还是在rtthread_startup中往下看,进入到rt_application_init函数,就是 main 线程的初始化函数。 创建main 线程,因为没有使用heap,所以只能使用静态初始化的方式,这倒不是什么问题,但是我们需要注意的是,线程栈的大小为2K : 总共就8K 的RAM,一个main 线程就占用了 2K,算是很大了,这里得注意下这个大小,后续应用...