前言
一个偶然机会接触到了一个陌生的名字---RT-Tread,想一探究竟,从它的手册中发现这个陌生的嵌入式操作系统有着许多优秀的表现,于是下决心学习研究下。下面记录了RT-Thread的学习过程,不妥之处请予指正。
软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2
硬件环境:Armfly STM32F103ZE-EK REV 3.0开发板
参考文章:
【1】RT-Thread配置开发环境手册
【2】RT-Thread 教程连载点击打开链接
【3】STM32 + RT Thread OS 学习笔记
1,RT-Thread开发环境配置
1.1 安装python 以及SCons构建工具
RT-Thread使用SCons作为默认的构建工具。SCons基于Python开发,因此我们需要先安装python,再安装SCons。
(1),安装python,其版本号为2.7点击打开链接,下载完毕后安装,如下图。但这不是必需的,您完全可以使用2.6或其他版本。python3.2版本不能运行scons
一路点击下一步(next)即可。默认情况下,这个程序会被安装到 C:\Python27 目录下,我们要将这个目录加入到系统
PATH变量中。方法如下:
在计算机(windows 7)上右击,选择【属性】,然后在弹出对话框中点击【高级系统设置】,弹出系统属性对话框->高级->环境变量,如下图。注意第五步是“; C:\Python27 ”,其中的分号是英文输入状态下的符号。
然后,点击确定关闭对话框。
(2),安装SCons
Scons下载地址: http://sourceforge.net/projects/scons/files/scons/2.3.2/,软件版本是2.3.2这里选择微软window版本,下载完毕后点击安装,SCons 会被自动安装到python 安装目录中即C:\Python27\Scripts目录,如下图。
参考上一节,将上述路径同样添加到系统PATH 变量中。用echo %path%命令可以看到系统变量添加的结果,如下图。
1.2,安装编译工具链
RT-Thread可以支持GCC,Keil MDK 或者 IAR的EWARM 编译工具的一种或全部。
(1),关于GCC,推荐一篇文章sourcery g++ lite建立交叉编译环 ,里面相关GCC的介绍,下载地址是 codesourcery,需要注册,这里安装的版本arm-2012.09-63-arm-none-eabi.exe,如下图,可以更改安装位置。
按照默认安装,结束后,gcc 的安装路径就会被自动加入到系统环境变量中去。
(2),KeilMDK 和 IAR EWARM安装,因为其为商业软件,这里不做介绍。
2,编译测试
2.1,源码目录结构
通过SVN下载到本地的SVN目录的源码结构如下图。
2.2,配置SCons脚本
进入到RT-Thread的板级工程目录bsp下面,可以看到很多开发板工程目录,这里现有的开发板是armlay(安富莱)的STM32F103ZE-EK REV3.0,因此只需将stm32f10x目录连同文件复制一份并重命名为stm32f103ze-ek(armfly),如左下图。然后进入该目录找到readme.txt和rtconfig.py,如右下图。
上面文件中:
rtconfig.py 此文件必须修改。
rtconfig.h 此文件用于裁剪rt-thread(根据您的需要修改)
打开readme.txt,可以看到如下内容:
-- cn --
按需要生成工程文件:
1. 修改 rtconfig.py :
CROSS_TOOL='keil' #使用的工具链
STM32_TYPE = 'STM32F10X_HD' #STM32对应的型号.
2. 修改 rtconfig.h 配置需要的功能.
2. 执行 scons --target=mdk 生成MDK工程文件.
note: 需要安装 python,scons.
-- en --
上面内容告诉我们需要指定的编译器和开发板上芯片类型。
RT-Thread 的通过SCons 支持三种编译器,编译器的选择在rtconfig.py 中指定,如果您按照上面的步骤安装了python和SCons,那么可以在 rtconfig.py 上右键点击Edit with IDLE 编辑器打开, 部分内容如下(红色粗体字部分是根据自己的实际环境和需求修改的结果):
说明:上面编译工具默认是IAR编译器链接,以windows平台为例,因此,路径都是windows路径风格,对于linux,只要修改路径为linux风格即可。 在路径的前面加上了小r,表示后面的内容不需要转义,因为windows路径风格是使用'\'作为分隔符,与转义字符冲突。
SCons命令的常用选项:
scons -c
这个命令会清除编译出来的文件
scons -j4
表示并行4个任务同时运行,适用于多核多线程。
scons --target=mdk4 -s
生成project.uvproj,不过您需要查看一下当前bsp目录下是否提供了template.uvproj文件,因为这个命令依赖template.uvproj或template.uv2。
scons --target=iar -s
生成project.ewp和project.eww,不过也同样依赖于当前bsp目录下是否提供了是否提供了template.ewp工程模板。
保存上面文件,打开cmd命令行窗口,然后先直接输入E:使用cd命令切换到 bsp\stm32f103ze-ek(armfly)目录下,如下图。
然后输入 scons 后回车,运行结果如下:
然后将上面rtconfig.py脚本CROSS_TOOLS修改如下:
CROSS_TOOLS='iar'
保存后,重新执行scons命令,结果如下:
然后在上面的变量改回去,如下:
CROSS_TOOLS='keil'
修改后保存,重新执行scons命令
由上面测试已经知道,iar和gcc不会出现这个错误的。但用keil编译结果有一处告警和一处链接错误。
注意:此时你可能会遇到一个错误,告警提示是链接时未找到ARM 库,link出错。
通过网上搜索说是scons 构建工程组件不能自动加入,自己没搞明白,只能暂且搁置,有待以后研究。
到此为止,我们为stm32f103ze-ek开发板构建了一个RT-Thread开发环境。