其中 rtthread_startup() 函数的代码如下所示: 1int rtthread_startup(void)
2{
3 rt_hw_interrupt_disable();
4
5 /* 板级初始化:需在该函数内部进行系统堆的初始化 */
6 rt_hw_board_init();
7
8 /* 打印 RT-Thread 版本信息 */
9 rt_show_version();
10
11 /* 定时器初始化 */
12 rt_system_
timer_init();
13
14 /* 调度器初始化 */
15 rt_system_scheduler_init();
16
17#ifdef RT_USING_SIGNALS
18 /* 信号初始化 */
19 rt_system_signal_init();
20#endif
21
22 /* 由此创建一个用户 main() 线程 */
23 rt_application_init();
24
25 /* 定时器线程初始化 */
26 rt_system_timer_thread_init();
27
28 /* 空闲线程初始化 */
29 rt_thread_idle_init();
30
31 /* 启动调度器 */
32 rt_system_scheduler_start();
33
34 /* 不会执行至此 */
35 return 0;
36}
这部分启动代码,大致可以分为四个部分:(1)初始化与系统相关的硬件;(2)初始化系统内核对象,例如定时器、调度器、信号;(3)创建 main 线程,在 main 线程中对各类模块依次进行初始化;(4)初始化定时器线程、空闲线程,并启动调度器。rt_hw_board_init() 中完成系统时钟设置,为系统提供心跳、串口初始化,将系统输入输出终端绑定到这个串口,后续系统运行信息就会从串口打印出来。main() 函数是 RT-Thread 的用户代码入口,用户可以在 main() 函数里添加自己的应用。1int main(void)
2{
3 /* user app entry */
4 return 0;
5}