您的位置:首页 > 其它

为RT-Thread实现一个傻瓜式的工程向导工具(中期报告)

2014-08-02 20:06 731 查看
着手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.交互系统的主要作用:

a)根据用户选择的硬件平台,存贮在_rtrc文件。
b)根据用户指定的编译工具链,存入_rtrc文件。
c)是读取对应BSP目录下的rtconfig.h文件解析出当前内核以及额外功能组件的配置选项,并根据用户的选择来改变其配置写入到rtconfig.h文件。
2.Scons构建系统:

  读取_rtrc文件,创建工程的构造环境,根据rtconfig.h中的参数生成库文件,工程文件(keil,iar)。

2 下层数据流图1



2.1 子数据流图1输入输出数据流

1.用户配置:详见顶层图描述。
2.RTT默认工程配置:详见顶层图描述。
3.用户库配置:用户对内核的裁剪配置以及对功能组件的选择和其配置。
4.默认库配置:BSP中rtconfig.h中对内核功能特性以及功能组件部分的宏的开关。
5.工具链配置:用户选择相应的硬件平台,编译工具链,这些配置选项将被写入_rtrc。

2.2 子数据流图1数据存储

1._rtrc

  详见顶层数据流图数据存储部分中描述。

2.RTT工程配置

  详见顶层数据流图数据存储部分中描述。

2.3 子数据流图一加工处理

1.分类处理:分别获得用户通过界面选择的工具链以及库的相关配置。

2.读取处理:读取BSP目录下rtconfig.h的内容进行解析,获取对各个功能单元以及内核的默认配置。

3.生成构建环境配置文件:将工具链,编译选项,链接选项等写进_rtrc中。

4.处理工程配置文件:用户对内核的裁剪,以及功能单元的增加和其内部参数配置的修改都会写入rtconfig.h中。

3 下层数据流图2



3.1 子数据流图2输入输出数据流

I.Scons构建环境:scons工具用来编译链接生成库文件以及可执行文件的编译链接选项。
II.库选项:scons工具读取rtconfig.h中关于内核和功能组件的宏,根据这些宏觉得那些.c文件会被作为目标的依赖加入编辑链接。
III.库文件:scons编译生成.lib文件,eg:kernel.lib,lwip.lib,以及用户用来使用这些库的头文件。

3.2  子数据流图2数据存储

1._rtrc

  详见顶层数据流图数据存储部分中描述。

2.RTT工程配置

  详见顶层数据流图数据存储部分中描述。

3.3 子数据流图2加工处理

1.解析配置:

  scons通过Sconstruct调用building.py中的接口函数得到buildOptions,这些配置决定着哪些功能单元会编译成库以及内核如何裁剪之后编译成库。

 

2.编译生成库:

  根据设置的构建环境变量,对被包含的功能单元进行编译链接成库文件。

通过上面对整个系统设计的数据流图的说明,整个项目框架很清晰。下一阶段的工作就集中在完善并改进各个模块的源程序,提交验收整个项目。在此,感谢王老师对我的指导和帮助,没有他耐心和细心的帮助,整个项目的进度不可能这么顺利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: