当前位置:网站首页>RT-Thread 学习笔记(一)---配置RT-Thread开发环境
RT-Thread 学习笔记(一)---配置RT-Thread开发环境
2022-07-26 10:38:00 【aping_cs_dn】
前言
一个偶然机会接触到了一个陌生的名字---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开发环境。
边栏推荐
- .net operation redis string string
- 剑指Offer(九):变态跳台阶
- [leetcode每日一题2021/2/13]448. 找到所有数组中消失的数字
- The problem of large fluctuation of hx711 data
- Redis docker instance and data structure
- 第4期:大学生提前职业技能准备之一
- [notes on machine learning] [building a cyclic neural network and its application] deeplearning ai course5 1st week programming(keras)
- Okaleido生态核心权益OKA,尽在聚变Mining模式
- Oracle创建索引
- STM32 Alibaba cloud mqtt esp8266 at command
猜你喜欢
![[leetcode每日一题2021/8/30]528. 按权重随机选择【中等】](/img/13/c6cb176d7065035f60d55ad20ed1bf.png)
[leetcode每日一题2021/8/30]528. 按权重随机选择【中等】

【机器学习小记】【风格迁移】deeplearning.ai course4 4th week programming(tensorflow2)

第8期:云原生—— 大学生职场小白该如何学

.net5wtm (asp.net core) PgSQL unpacking operation
![[notes on machine learning] [building a cyclic neural network and its application] deeplearning ai course5 1st week programming(keras)](/img/02/f85da2a2f2524fb034b17ed8d06692.png)
[notes on machine learning] [building a cyclic neural network and its application] deeplearning ai course5 1st week programming(keras)

Okaleido ecological core equity Oka, all in fusion mining mode
![[leetcode每日一题2021/2/18]【详解】995. K 连续位的最小翻转次数](/img/de/62fca587cde95110c2a967ca93eea5.png)
[leetcode每日一题2021/2/18]【详解】995. K 连续位的最小翻转次数

Zongzi battle - guess who can win

Application of.Net open source framework in industrial production

多目标优化系列1---NSGA2的非支配排序函数的讲解
随机推荐
从蚂蚁的觅食过程看团队研发(转载)
剑指Offer(五十三):表示数值的字符串
Issue 8: cloud native -- how should college students learn in the workplace
将json文件中数组转换为struct
Navicat15 MySQL (centos7) connected to local virtual machine
12 复制对象时勿忘其每一个成分
Interview questions and answers for the second company (2)
SuperMap IClient for Leaflet 加载高斯克吕格投影三度分带CGCS2000大地坐标系WMTS服务
MySQL速学笔记-2021-08-31
【dectectron2】跟着官方demo一起做
第8期:云原生—— 大学生职场小白该如何学
鹏哥C语言——扫雷2021-08-16
STM32 Alibaba cloud mqtt esp8266 at command
.net operation redis list list
数据分析入门 | kaggle泰坦尼克任务
[leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间
Summary of common skills in H5 development of mobile terminal
SAP ABAP 守护进程的实现方式
Datav beautiful data screen production experience
Analyze the hybrid construction objects in JS in detail (construction plus attributes, prototype plus methods)