• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【Rt-thread学习记】工具介绍及移植篇

此篇开始讲如何将rtt移植到我们的目标开发板上,移植的过程实际是一个适配的过程,这个过程可以很简单,也可以很复杂,这里讲下这两者的区别,先说下最传统的os的移植:基本上拷贝核心C文件到你的工程内部,然后再指定的位置编写代码进行调整,然后编译工程进行仿真验证是否移植成,这种方式很原始,优点是节省内存开销,你要啥就打开啥,不要的全部都注释掉,或者是删掉,缺点也是很明显,移植过程很麻烦,相对繁琐,可以能要花费很长的时间反复调整,最终等你移植成功了,感觉太麻烦了,反而失去了进一步了解的兴趣。

所以这里我推荐官方给出的一种移植方法,不需要你直接操作底层C文件,也不需要你手动进行代码调整,就可以轻松的创建一个已经加入RTT的项目工程,所需要做的就是打开它,编译它,烧录它,至此整个移植的过程就结束了,移植的目的是让你能尽快的上手,尽快的开始玩耍这款操作系统,这样能保持持续学习的动力,等你把它撩的差不多了,反过来,你可以不依靠工具,进行手工改和移植,想怎么玩就怎么玩。这样做的代价就是内存开销,不论rom还是ram,既然是体验和学习阶段就先不要考虑成本因素了,先搞定它才是我们的目标。

实际在应用的时候,你只需要两个工具和rtt的源码库就ok了,所有这些都可以直接在RTT官网免费down。like下图:



全部回复(19)
正序查看
倒序查看
lingyan
LV.8
2
2019-02-13 15:08
等着学习
0
回复
2019-02-16 13:26

具体的如何安装GIT ENV工具就不介绍了,官网的文档介绍的很详细,这里还是谈一些理解,关于GIT ENV 和RTT源码,有了这三部分就可以量体定做自己需要的项目,举个不太恰当的例子来阐述下三者之间的关系,打个比方,今天是2019年2月16日,刚过完情人节,兜里毛爷爷有限,今天想去吃点好吃的,找了家不错的小店,进去看了一下菜谱,发现兜里钱连个宫保鸡丁都吃不起,没办法,还是决定去找事买肉菜调味料回家自己做,这里的肉菜调味料就是我们的RTT源码,接下来回到家,用刀把肉切好,然后刷干净锅碗瓢盆,准备开始烹饪时候发现家里的没有花生油,怎么办就要找个小商店去买咯,这里的锅碗瓢盆刀叉枪棒就是我们的ENV工具,小商店可以理解为GIT仓库,缺啥就去那里下载,准备好,就展现厨艺,一到丰盛的RTT工程盛宴或许很快就可以端上桌面了(比喻不太恰当)。

这里强调下此篇移植的重点,不谈如何挑肉买菜,也不讲怎么去小商店买油,而是把重点放在当你准备好肉菜,买好油回来以后怎么做出一道菜,这是此篇的核心,这里就是我们所说的ENV工具的使用,在继续深入介绍使用ENV之前,还是看下肉菜长什么模样,省的拿错了材料(rt-thread V3.0.4):



0
回复
2019-02-16 14:18
@程序小白
具体的如何安装GITENV工具就不介绍了,官网的文档介绍的很详细,这里还是谈一些理解,关于GITENV和RTT源码,有了这三部分就可以量体定做自己需要的项目,举个不太恰当的例子来阐述下三者之间的关系,打个比方,今天是2019年2月16日,刚过完情人节,兜里毛爷爷有限,今天想去吃点好吃的,找了家不错的小店,进去看了一下菜谱,发现兜里钱连个宫保鸡丁都吃不起,没办法,还是决定去找事买肉菜调味料回家自己做,这里的肉菜调味料就是我们的RTT源码,接下来回到家,用刀把肉切好,然后刷干净锅碗瓢盆,准备开始烹饪时候发现家里的没有花生油,怎么办就要找个小商店去买咯,这里的锅碗瓢盆刀叉枪棒就是我们的ENV工具,小商店可以理解为GIT仓库,缺啥就去那里下载,准备好,就展现厨艺,一到丰盛的RTT工程盛宴或许很快就可以端上桌面了(比喻不太恰当)。这里强调下此篇移植的重点,不谈如何挑肉买菜,也不讲怎么去小商店买油,而是把重点放在当你准备好肉菜,买好油回来以后怎么做出一道菜,这是此篇的核心,这里就是我们所说的ENV工具的使用,在继续深入介绍使用ENV之前,还是看下肉菜长什么模样,省的拿错了材料(rt-threadV3.0.4):[图片]

继续,在开始ENV之前,先找到适合你的板子的类型的bsp目录,RTT给你准备了很多BSP类型:

在这里针对我的MCU平台,我选择stmf10x-HAL,于是乎找到她,点击进入,然后空白处右键鼠标,准备ENV:

ComEmu Here  ~!!!

0
回复
2019-02-16 15:16
@程序小白
继续,在开始ENV之前,先找到适合你的板子的类型的bsp目录,RTT给你准备了很多BSP类型:[图片]在这里针对我的MCU平台,我选择stmf10x-HAL,于是乎找到她,点击进入,然后空白处右键鼠标,准备ENV:[图片]ComEmuHere ~!!!

基于3.0.4存在一些问题,改用master版本,进行ENV学习(说实话,RTT相对还是年轻,有许多不足需要完善,但是这不耽误我们的学习和使用):

先看下3.0.4存在的问题(目前无法解决,):


0
回复
2019-02-17 20:25
@程序小白
基于3.0.4存在一些问题,改用master版本,进行ENV学习(说实话,RTT相对还是年轻,有许多不足需要完善,但是这不耽误我们的学习和使用):先看下3.0.4存在的问题(目前无法解决,):[图片]

在介绍命令之前,先简单熟悉下env的操作,这个非图形化的软件,看着还是比较高端大气上档次,命令式的操作对于第二次接触这种类型,感觉有些怀念,想起了小上学时候用的dos命令,很快便爱上了这种方式,linux从未离去,想要玩的高端还是要学习,接下里看下env一个很重要的设置,帮助筒子们快速进行裁剪。

当你打开env时,它是在你目前打开的根目录,like this:

在工具界面打开:

如何进入响应的BSP目录,如何使用cd命令,对于第一次接触env的筒子们要不小的难度:

like this:

这时候可以设置一下ENV工具,然后单击右键就可以在相应的目录下进行裁剪编译工程了,不需要繁琐的cd(当然如果你能爱上这种方式,或许会诞生另一个大神):

0
回复
2019-02-17 20:34
@程序小白
在介绍命令之前,先简单熟悉下env的操作,这个非图形化的软件,看着还是比较高端大气上档次,命令式的操作对于第二次接触这种类型,感觉有些怀念,想起了小上学时候用的dos命令,很快便爱上了这种方式,linux从未离去,想要玩的高端还是要学习,接下里看下env一个很重要的设置,帮助筒子们快速进行裁剪。当你打开env时,它是在你目前打开的根目录,likethis:在工具界面打开:[图片]如何进入响应的BSP目录,如何使用cd命令,对于第一次接触env的筒子们要不小的难度:likethis:[图片]这时候可以设置一下ENV工具,然后单击右键就可以在相应的目录下进行裁剪编译工程了,不需要繁琐的cd(当然如果你能爱上这种方式,或许会诞生另一个大神):[图片]

接下来介绍一下:如何设置ENV,通过右击菜单进入相应目录进行操作:

one step:

two step:

==》Register   ==》Save setting,到这里软件的设置就结束了,剩下来讲一下如何使用,这里分两步,多余的命令一概不讲:

想要了解可以参考文档:

接下来先看一下这个编译功能该怎么用:

0
回复
2019-02-17 20:43
@程序小白
接下来介绍一下:如何设置ENV,通过右击菜单进入相应目录进行操作:onestep:[图片]twostep:[图片]==》Register  ==》Savesetting,到这里软件的设置就结束了,剩下来讲一下如何使用,这里分两步,多余的命令一概不讲:想要了解可以参考文档:接下来先看一下这个编译功能该怎么用:

编译的第一个命令:scons

找到对应MCU系列的bsp,右击ENV here:

这时候默认你看到的目录like this:

因为我们电脑装了MDK,所以你能看到目标工程的图标,一个是MDK4 一个是MDK5:说明目前存在一个工程模板:这时候你可以点击MDK打开,并进行编译工程,还可以直接输入scons命令:

like this:不需要打开MDK 编译工程:

请直接忽略 warning: 

done building targets. 完成工程编译。


0
回复
2019-02-17 20:51
@程序小白
编译的第一个命令:scons找到对应MCU系列的bsp,右击ENVhere:这时候默认你看到的目录likethis:[图片]因为我们电脑装了MDK,所以你能看到目标工程的图标,一个是MDK4一个是MDK5:说明目前存在一个工程模板:这时候你可以点击MDK打开,并进行编译工程,还可以直接输入scons命令:likethis:不需要打开MDK编译工程:[图片]请直接忽略warning: donebuildingtargets.完成工程编译。
接下来我们试一下创建工程的命令,先把已经存在的工程删除:

这时候输入命令:scons --target=mdk5

点击回车,gogogo:

输出:done building targets. 再次打开根目录,这时:


0
回复
2019-02-17 20:52
@程序小白
接下来我们试一下创建工程的命令,先把已经存在的工程删除:[图片]这时候输入命令:scons--target=mdk5点击回车,gogogo:[图片][图片]输出:donebuildingtargets.再次打开根目录,这时:[图片]
先到这里,先哄娃睡觉,筒子们晚安,希望明天继续,生命不息,like不止。。。
0
回复
2019-02-19 17:08
@程序小白
先到这里,先哄娃睡觉,筒子们晚安,希望明天继续,生命不息,like不止。。。

继续学习,接下来看一下ENV 图形化的功能,这里才是重点,是否还记得用u盘装系统时候,进的PE, 打开ENV,输入:menuconfig

神奇开始


0
回复
2019-02-19 17:12
@程序小白
继续学习,接下来看一下ENV图形化的功能,这里才是重点,是否还记得用u盘装系统时候,进的PE,打开ENV,输入:menuconfig神奇开始:[图片][图片]

这里展开看下讲一下每一项:

                            1》Rt-Thread Kernel:这一项是rtt  os内核的相关参数配置,主要是应用一个标准os需要根据硬件资源和自己的需求进行相应的配置。通用os 的内核在这里

                            

0
回复
2019-02-19 17:17
@程序小白
这里展开看下讲一下每一项:                           1》Rt-ThreadKernel:这一项是rtt os内核的相关参数配置,主要是应用一个标准os需要根据硬件资源和自己的需求进行相应的配置。通用os的内核在这里                            [图片]

2》Rt-thread components:组件层:你需要使用哪种组件在这里面可以选,也可以配置,例如comand shell组件,这里进行使能或者关闭。

0
回复
2019-02-19 17:34
@程序小白
2》Rt-threadcomponents:组件层:你需要使用哪种组件在这里面可以选,也可以配置,例如comandshell组件,这里进行使能或者关闭。[图片]

3》RT-thread online packages :RTT软件包:基于应用层软件封装,以包的形式进行管理,因为rtt是一个面向物联网的os,所以这里着重看一下 iot底下都有些什么好玩的东东:

0
回复
sabrina9988
LV.7
15
2019-02-25 15:00
@程序小白
3》RT-threadonlinepackages:RTT软件包:基于应用层软件封装,以包的形式进行管理,因为rtt是一个面向物联网的os,所以这里着重看一下iot底下都有些什么好玩的东东:[图片]
 学习一下
0
回复
2019-02-27 08:39
@sabrina9988
 学习一下
谢谢支持
0
回复
2019-02-27 09:00
@程序小白
谢谢支持

在这里,当你选中软件包以后会基于当前的软件包进行编译,在这里还需要介绍一个命令功能,就是软件包的更新,我们之前安装git实际上就是为本项功能做准备的,因为软件包实际是在不停的更新的,所以有时候需要获取最新的软件包,或者选中的软件包,当前的工具中没有,这时候需要你下载软件包,就需要用到,下面的命令了:

pkgs --update

我这里已经下载了最新的软件包,所以,使用此命令时,如下:

0
回复
2019-02-27 09:38
@程序小白
在这里,当你选中软件包以后会基于当前的软件包进行编译,在这里还需要介绍一个命令功能,就是软件包的更新,我们之前安装git实际上就是为本项功能做准备的,因为软件包实际是在不停的更新的,所以有时候需要获取最新的软件包,或者选中的软件包,当前的工具中没有,这时候需要你下载软件包,就需要用到,下面的命令了:pkgs--update我这里已经下载了最新的软件包,所以,使用此命令时,如下:[图片]

还有一个命令差点拉下:有关于ENV软件更新的,目前ENV的最新版本为V1.1.0,这个软件是个命令式的处理软件,当然也支持本地更新,不需要去下载最新的软件,只需要通过命令,在本地进行更新就可以,这里涉及的命令如下:

pkgs --upgrade,具体操作如下:

0
回复
2019-02-27 09:47
@程序小白
还有一个命令差点拉下:有关于ENV软件更新的,目前ENV的最新版本为V1.1.0,这个软件是个命令式的处理软件,当然也支持本地更新,不需要去下载最新的软件,只需要通过命令,在本地进行更新就可以,这里涉及的命令如下:pkgs--upgrade,具体操作如下:[图片]

到这里,基本上工具介绍和移植篇就讲完了,其实更多的是针对工具讲下RTT的裁剪 移植  编译等操作,这些在以后的开发中,可能会经常用得到,虽然帖子篇幅略长,但大部分都是废话吧,主要还有些自己的感想感触加里面了,希望对大家有所帮助。

最后来一张大神做的经典图来结束此篇学习吧,等到以后可能真的不需要看帖子了,翻开看一下这张图片就够了:


0
回复
sabrina9988
LV.7
20
2019-03-12 15:45
顶一下
0
回复