RT-Thread OS启动流程,详细步骤
startup_stm32f103xe.S做的事情:
1. 复制数据的初始化从flash到sram
2.初始化bss段
3.初始化时钟
4.跳转到entry()函数中去执行rtthread_startup()函数
rtthread_startup()函数做的事情:
1.关闭硬件中断
2.板级初始化:需在该函数内部进行系统堆的初始化
3.打印 RT-Thread 版本信息
4.定时器初始化
5.调度器初始化
6.信号初始化
7.创建一个用户 main 线程
8.定时器线程初始化
9.空闲线程初始化
10.启动调度器rt_system_scheduler_start();
启动调度器之前,系统所创建的线程在执行 rt_thread_startup() 后并不会立马运行,它们会处于就绪状态等待系统调度;待启动调度器之后,系统才转入第一个线程开始运行,根据调度规则,选择的是就绪队列中优先级最高的线程。
rt_hw_board_init() 中完成系统时钟设置,为系统提供心跳、串口初始化,将系统输入输出终端绑定到这个串口,后续系统运行信息就会从串口打印出来。
main() 函数是 RT-Thread 的用户代码入口,用户可以在 main() 函数里添加自己的应用。