1.RT-Thread目录框架和启动过程分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_38245860/article/details/80489720

目录框架

rt-thread:rtt系统目录

        scr:RTT的核心代码

        include:RTT内核头文件

        libcpu:对各种不同类型架构cpu芯片的支持文件

        components:RTT的各种组件(dfs文:件系统,finsh:命令行,cplusplus:c++支持,net网络组件,等等)

        tools:自动化构建、编译

applications:用户应用文件夹

debug:keil编译输出目录

drivers:板级驱动

libraries:芯片固件库函数

project.eww : IAR工程

project.uvproj: keil 4工程

project.uvprojx: keil 5工程

template是个模板工程不需要关注

rtconfig.h: 系统裁剪相关的一个头文件,特别重要。


rt-thread启动过程:

 1、运行启动代码startup_stm32f10xxx.s
 2、从启动代码进入rt-thread系统的_main函数(非用户main函数,不是main.c文件中的main函数)(components.c第147行)
     (1)关闭全局中断
     (2)启动rt-thread(进入rtthread_startup函数)
 3、在rtthread_startup()函数中
     (1)板级硬件初始化 
     (2)打印rt-thread版本 
     (3)系统定时器初始化
     (4)系统调度器(scheduler)初始化
     (5)应用初始化(rt_application_init()创建并启动初始线程,也就是进入用户main函数。注意:此处的进入用户main函数其实是将main函数作为线程运行)
     (6)系统定时器线程初始化
     (7)创建并启动空闲线程
     (8)启动系统调度器
 至此,整个启动过程结束。
 

     特别注意的是:main.c文件中的main函数其实是一个线程,以提供给用户创建其他应用线程,所以在创建了其他应用线程之后,这个main函数线程就可以被删除了。

    进入用户main函数之后最好延时一段时间,避过系统上电的不稳定期(可用示波器查看时间长短),再进行其他动作。

 以上为个人见解,如有不妥之处,请指正。

猜你喜欢

转载自blog.csdn.net/sinat_38245860/article/details/80489720