着手RT-Thread工程向导工具的工作已经过了一个月,从不了解RT-Thread到逐步清楚整个代码的组成结构,深入学习了scons构建工具的使用,做了前期必要的验证工作,以及完成整个系统的设计工作。
数据流图在逻辑上可以很清晰的描述整个系统的功能、输入、输出和数据存储等,形象的呈现了数据在整个系统设计实现过程中流动和处理的过程,是系统逻辑模型的重要组成部分。整个RT-Thread涉及到的数据以及处理如下:
1 顶层数据流图
1.1 顶层图输入输出数据流
1.用户配置包括
- 硬件平台选择
确定arch以及cpu类型以及flash芯片的选择。
- RTT根目录以及BSP目录
- 工具链的选择
keil,iar,gcc工具链的选择以及所在目录。
- 功能模块的选择及配置
决定kernel中哪些特性会被编译进内核库以及components目录下功能组件是否编译成库并被添加进工程中,组件内部的相关参数的确定等。
2.默认RTT工程配置
- 各个功能模块的默认选择以及默认配置
读取选择的BSP目录中rtconfig.h中的宏,这些宏决定了内核如何进行编译,components目录下哪些功能组件会被使用以及各个功能组件的详细配置。
3.库文件
scons根据用户选择的构建环境和库配置生成库文件。
1.2 顶层数据流图数据存储
1._rtrc
在经过用户选择后,使用python中pickle模块将硬件平台类型,工具链的选择以及RTT根目录和BSP目录进行存储写入_rtrc文件中,在接下来构造scons的构建环境时使用。
2.RTT工程配置
用户交互时,用户根据工程需要进行配置,关于kenerl以及功能组件的配置会被写入到rtconfig.h中。
1.3 顶层数据流图加工处理
1.交互系统的主要作用:
2.Scons构建系统:
读取_rtrc文件,创建工程的构造环境,根据rtconfig.h中的参数生成库文件,工程文件(keil,iar)。
2 下层数据流图1
2.1 子数据流图1输入输出数据流
2.2 子数据流图1数据存储
1._rtrc
详见顶层数据流图数据存储部分中描述。
2.RTT工程配置
详见顶层数据流图数据存储部分中描述。
2.3 子数据流图一加工处理
1.分类处理:分别获得用户通过界面选择的工具链以及库的相关配置。
2.读取处理:读取BSP目录下rtconfig.h的内容进行解析,获取对各个功能单元以及内核的默认配置。
3.生成构建环境配置文件:将工具链,编译选项,链接选项等写进_rtrc中。
4.处理工程配置文件:用户对内核的裁剪,以及功能单元的增加和其内部参数配置的修改都会写入rtconfig.h中。
3 下层数据流图2
3.1 子数据流图2输入输出数据流
3.2 子数据流图2数据存储
1._rtrc
详见顶层数据流图数据存储部分中描述。
2.RTT工程配置
详见顶层数据流图数据存储部分中描述。
3.3 子数据流图2加工处理
1.解析配置:
scons通过Sconstruct调用building.py中的接口函数得到buildOptions,这些配置决定着哪些功能单元会编译成库以及内核如何裁剪之后编译成库。
2.编译生成库:
根据设置的构建环境变量,对被包含的功能单元进行编译链接成库文件。
通过上面对整个系统设计的数据流图的说明,整个项目框架很清晰。下一阶段的工作就集中在完善并改进各个模块的源程序,提交验收整个项目。在此,感谢王老师对我的指导和帮助,没有他耐心和细心的帮助,整个项目的进度不可能这么顺利。