版权声明:本文为博主原创文章,未经博主允许不得转载。 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.s2、从启动代码进入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函数之后最好延时一段时间,避过系统上电的不稳定期(可用示波器查看时间长短),再进行其他动作。
以上为个人见解,如有不妥之处,请指正。