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

【RT-thread学习记】:硬件准备篇。。。

2019年新的开始,先祝大家新年快乐,祝电源网的筒子们新年心想事成,加油前行。。。

接下来,还是继续RTT的小说之路吧,从事物联网有一段时间了,说实话,依旧没有摆脱原有的模式,RTT是我心仪已久的一个平台,光理论不知准备了多久,假如不开始真的应用到项目中(工作中是没机会了),学习也就只能停留在学习的阶段了,然而这样没什么意义,所以准备基于硬件进行模拟实战,将真实的项目真正的移植到RTT平台上,过程肯定充满了曲折,但是买不起的耐克先生有一句名言,just do it(干他~!!!)

新的平台已经选好,祭出我珍藏已久的麒麟开发板,真真正正从裸机到RTT上的搬迁。

老习惯,上一张图震一下,希望大家有所收获,边学变行吧。

全部回复(16)
正序查看
倒序查看
2019-01-28 10:01
沙发,坐等飞飞开讲
0
回复
2019-01-28 10:48
@电源网-璐璐
沙发,坐等飞飞开讲[图片]
准备开讲。。。
0
回复
2019-02-09 22:45
0
回复
2019-02-09 23:00
@程序小白
[图片]
其实选这一款开发板来做移植的硬件平台是别有用心的,

用心有仨,首先先讲其一吧,RTT的移植,假如你只用内核部分,可以选择nano版本,据说是很小的rom 和ram 开销,能够做到几K级别,但是对于物联网操作系统来讲,这是远远不够的,我实际做过移植,假如假如了finsh组件,再加点别的管理,其大小就奔着几十K去了,所以你想全功能的来体验就得选高性能的片子,大内存是关键,就像你玩手机游戏,假如手机配置低,你就没办法体验这个游戏给你带来的所有乐趣,特效只能开低点,保证硬件吃得消,所以这里我们看下这款开发板的核心:

打开cube,输入型号,就会发现这个芯片有多强悍(在单片机的领域):

这个容量足以支撑RTT的移植和实验了。

0
回复
2019-02-09 23:12
@程序小白
其实选这一款开发板来做移植的硬件平台是别有用心的,用心有仨,首先先讲其一吧,RTT的移植,假如你只用内核部分,可以选择nano版本,据说是很小的rom和ram开销,能够做到几K级别,但是对于物联网操作系统来讲,这是远远不够的,我实际做过移植,假如假如了finsh组件,再加点别的管理,其大小就奔着几十K去了,所以你想全功能的来体验就得选高性能的片子,大内存是关键,就像你玩手机游戏,假如手机配置低,你就没办法体验这个游戏给你带来的所有乐趣,特效只能开低点,保证硬件吃得消,所以这里我们看下这款开发板的核心:[图片]打开cube,输入型号,就会发现这个芯片有多强悍(在单片机的领域):[图片]这个容量足以支撑RTT的移植和实验了。

接下来继续我们其二的原因:选用这款开发板主要因素在于它集成了2G模组M6311(虽然有点过时)和wifi模组(ESP8266,最火没有之一),这样我们可以体验下AT组件如何应用,有了对应的外设,就可以展示RTT真正的优势(假设它真的很有优势在物联网应用当中),接下来看看相应的原理图。

记得,在使用2G模组时候,还需要搞一张2G的sim卡.


0
回复
2019-02-09 23:17
@程序小白
接下来继续我们其二的原因:选用这款开发板主要因素在于它集成了2G模组M6311(虽然有点过时)和wifi模组(ESP8266,最火没有之一),这样我们可以体验下AT组件如何应用,有了对应的外设,就可以展示RTT真正的优势(假设它真的很有优势在物联网应用当中),接下来看看相应的原理图。[图片][图片]记得,在使用2G模组时候,还需要搞一张2G的sim卡.

选用原因其三:除了核心的外设以外,这款开发板,还提供一些例如按键,指示灯的简单外设,有利于我们测试内核功能,除此之外,采用4pin的SW仿真接口,让我也不需要额外制作通讯线,省了不少的麻烦,总体来讲还是个不错的选择,可以做一些应用级的开发了,接下里在介绍一些实用必备的工具,就基本可以体验这款开发板了,今天先到这里吧,有点点晚了,睡觉,明天开工。


0
回复
2019-02-10 15:43
@程序小白
选用原因其三:除了核心的外设以外,这款开发板,还提供一些例如按键,指示灯的简单外设,有利于我们测试内核功能,除此之外,采用4pin的SW仿真接口,让我也不需要额外制作通讯线,省了不少的麻烦,总体来讲还是个不错的选择,可以做一些应用级的开发了,接下里在介绍一些实用必备的工具,就基本可以体验这款开发板了,今天先到这里吧,有点点晚了,睡觉,明天开工。

还有一些不错的设计,这里介绍下,一个串口通过跳线帽选择不同的外设进行使用,这个功能在我们设计的产品上也有用过,但是没有伦家画的原理图画的漂亮。

0
回复
2019-02-10 15:50
@程序小白
还有一些不错的设计,这里介绍下,一个串口通过跳线帽选择不同的外设进行使用,这个功能在我们设计的产品上也有用过,但是没有伦家画的原理图画的漂亮。[图片]

接下来开发板做了IO口的扩展,用的应该是2.54间距的排针,我猜,这样用杜邦线直接引出玩耍,不用焊接,更加方便使用。

0
回复
2019-02-10 15:58
@程序小白
接下来开发板做了IO口的扩展,用的应该是2.54间距的排针,我猜,这样用杜邦线直接引出玩耍,不用焊接,更加方便使用。[图片]

接下来是SW仿真接口,这里在dio和clk上加了上拉和下拉,说实话不太明白为啥子要加,我的好像一罐没加,有只晓得来个解答,先这么用吧,能work 就行。

0
回复
2019-02-10 16:14
@程序小白
接下来是SW仿真接口,这里在dio和clk上加了上拉和下拉,说实话不太明白为啥子要加,我的好像一罐没加,有只晓得来个解答,先这么用吧,能work就行。[图片]

在进行RTT适配以前,这里还有个很关键的因素,就是RTT有个很核心的组件FINSH,需要用到串口外设,所以一定要预留个串口可以进行调试,而这款开发板的大部分串口都被占用了,这里不得不占用下debug的串口,这里的debug串口是给M6311进行固件更新用的,如果不更新固件,用最原始的固件,直接占用就好,需要更新固件的时候再禁用finsh就好,略有麻烦。

0
回复
2019-02-16 11:03
@程序小白
在进行RTT适配以前,这里还有个很关键的因素,就是RTT有个很核心的组件FINSH,需要用到串口外设,所以一定要预留个串口可以进行调试,而这款开发板的大部分串口都被占用了,这里不得不占用下debug的串口,这里的debug串口是给M6311进行固件更新用的,如果不更新固件,用最原始的固件,直接占用就好,需要更新固件的时候再禁用finsh就好,略有麻烦。[图片]
开发板的资源已经介绍完了,当然你也可以用其它的开发板或者自己话块板子来玩,这里建议用的MCU芯片,尽量容量选大一些,不论是RAM还是ROM,事实上现在看着很贵的芯片,过两年可能就便宜了,容量大了才能带你体验RTT全部的功能和优势,除了一块开发板,还需要软件仿真其,这里我选的是STLInk(便宜好用),在准备一套USB转串口或者TTL的工具,这样你就可以通过shell进行交互了。基本硬件准备篇就到这里了,肉和菜都准备好了,接下来开启工具介绍和移植篇吧。
0
回复
2019-03-03 17:21
@程序小白
开发板的资源已经介绍完了,当然你也可以用其它的开发板或者自己话块板子来玩,这里建议用的MCU芯片,尽量容量选大一些,不论是RAM还是ROM,事实上现在看着很贵的芯片,过两年可能就便宜了,容量大了才能带你体验RTT全部的功能和优势,除了一块开发板,还需要软件仿真其,这里我选的是STLInk(便宜好用),在准备一套USB转串口或者TTL的工具,这样你就可以通过shell进行交互了。基本硬件准备篇就到这里了,肉和菜都准备好了,接下来开启工具介绍和移植篇吧。

因周末无法开新帖,接下来会介绍RTT最重要的一个组件,调试神器的finsh组件,如何对RTT进行调试,开启这个功能需要占用一个串口资源,但对于一个os来讲,你无法通过传统的方式进行调试,因很多不存在全局的概念,无法采用watch在线测试,例如线程栈的使用率,县城的个数运行态,动态内存情况等。这些概念在裸机里面是没有的,但是到了os,这些都是核心的核心,必须掌握如何查看,跟踪,分析系统是否在可控范围内运行。

在测试的时候需要准备一个usb转串口的工具,至于是TTL、232、还是485,取决于你系统板的接口方式,此外准备一台电脑,串口小助手,核心板,准备好,我们就可以开工啦,还有杜邦线准备一些,用于通信连接。

理论是这样的:

实际是这样的:


0
回复
2019-03-03 17:35
@程序小白
因周末无法开新帖,接下来会介绍RTT最重要的一个组件,调试神器的finsh组件,如何对RTT进行调试,开启这个功能需要占用一个串口资源,但对于一个os来讲,你无法通过传统的方式进行调试,因很多不存在全局的概念,无法采用watch在线测试,例如线程栈的使用率,县城的个数运行态,动态内存情况等。这些概念在裸机里面是没有的,但是到了os,这些都是核心的核心,必须掌握如何查看,跟踪,分析系统是否在可控范围内运行。在测试的时候需要准备一个usb转串口的工具,至于是TTL、232、还是485,取决于你系统板的接口方式,此外准备一台电脑,串口小助手,核心板,准备好,我们就可以开工啦,还有杜邦线准备一些,用于通信连接。理论是这样的:[图片]实际是这样的:[图片]

在进行finsh组件体验之前,有几个事儿还是要做的,首先保证硬件串口是正确的,不然你一上来就移植,遇到无法开启finsh的时候,可能会一头乱麻,这里用的USB转TTL实际上也是一块wifi 的开发板,可惜搞坏了,就把wifi模组拆掉了,当个串口助手先用吧,市面上卖的那种可能相对很便宜,尺寸类似一个U盘大小,尽量买好点的不要图便宜,否则光在电脑驱动这块会让你疯狂,确保三个点:

1.

2.

3.

总结下:1,正常上电

             2,驱动安装正常

             3,短接开发板的发送接收,用串口助手发送数据,能收到一样的数据,证明硬件没有问题。

0
回复
2019-03-03 20:33
@程序小白
在进行finsh组件体验之前,有几个事儿还是要做的,首先保证硬件串口是正确的,不然你一上来就移植,遇到无法开启finsh的时候,可能会一头乱麻,这里用的USB转TTL实际上也是一块wifi的开发板,可惜搞坏了,就把wifi模组拆掉了,当个串口助手先用吧,市面上卖的那种可能相对很便宜,尺寸类似一个U盘大小,尽量买好点的不要图便宜,否则光在电脑驱动这块会让你疯狂,确保三个点:1.[图片]2.[图片]3.[图片]总结下:1,正常上电            2,驱动安装正常             3,短接开发板的发送接收,用串口助手发送数据,能收到一样的数据,证明硬件没有问题。

接下来使用ENV工具裁剪os并烧录到目标开发板中:

0
回复
2019-03-03 20:44
@程序小白
接下来使用ENV工具裁剪os并烧录到目标开发板中:[图片][图片][图片][图片][图片][图片]

中间的调试过程基本省掉了,其实遇到了两个坑,首先编译完以后,下载到目标板上以后,串口并没有返回任何信息,这时候从驱动,都接线做了全面的检查,存在俩问题,一个接线TX RX不对,第二个问题是电脑端并没有装好有效驱动,按照测试串口转换板的测试步骤进行了逐一排查,解决掉两个问题,第二个问题是在进行通信时发现,出现乱码问题,这里需要校验一下串口的设置问题,然后对照一下程序中的配置是否正确,这里忽略了一个很重要的问题就是时钟的配置,开发板时钟的配置,在ENV中默认设置时外部8M的晶振,而实际我们用到的是12M晶振,导致无论怎样配置波特率都会出现乱码的现象,因为波特率本身就是不准的,更改时钟项以后,就解决了,最后来一张图看下成果:

0
回复
2019-03-03 20:52
@程序小白
中间的调试过程基本省掉了,其实遇到了两个坑,首先编译完以后,下载到目标板上以后,串口并没有返回任何信息,这时候从驱动,都接线做了全面的检查,存在俩问题,一个接线TXRX不对,第二个问题是电脑端并没有装好有效驱动,按照测试串口转换板的测试步骤进行了逐一排查,解决掉两个问题,第二个问题是在进行通信时发现,出现乱码问题,这里需要校验一下串口的设置问题,然后对照一下程序中的配置是否正确,这里忽略了一个很重要的问题就是时钟的配置,开发板时钟的配置,在ENV中默认设置时外部8M的晶振,而实际我们用到的是12M晶振,导致无论怎样配置波特率都会出现乱码的现象,因为波特率本身就是不准的,更改时钟项以后,就解决了,最后来一张图看下成果:[图片]

到上面已经完成了从硬件平台的选用,接口调试,搭建,到RTT的ENV工具裁剪,编译生成MDK工程,到烧录到目标板,到最终的测试调试完毕,finsh功能正常使用,finsh的核心还没有讲,这里点一个吧,在创建线程时候,需要给每个线程开一个线程栈,加入开的小了容易导致线程溢出异常,开的大了又浪费硬件资源,如何合理的定义一个线程栈的大小呢,这里的策略就是先开个大的,然后让程序跑起来,通过finsh组件查询当前存在的线程及其线程栈的使用率,然后合理的缩小线程栈的大小,这只是finsh组件的一个功能,它是调试RTT必备的组件,所以还是必须要用的,假如你想更好的发挥RTT:

0
回复