电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
使用RT-Thread对树莓派4进行性能测试
分 享
扫描二维码分享
使用RT-Thread对树莓派4进行性能测试
RTT
树莓派4
性能测试
xukejing
关注
发布时间: 2021-01-21
丨
阅读: 2714
## 1、测试背景 树莓派4是芯巴客社区非常热门的一款创客小电脑,是全世界单板电脑的一个新标杆,作为Raspberry Pi 最新一代的产品,并且得益于处理器芯片使用了4个Cortex A72架构的计算核心,主屏高达1.5GHz,具有接近日常办公电脑的性能。 ![](https://cf04.ickimg.com/bbsimages/202101/72fcd277b0f23344204d2aa895968b87.jpg) 近年来随着物联网行业的发展,涌现出很多优秀的物联网操作系统(IoT OS),这些IoT OS的内核以Linux、VxWorks、RTOS等为基础,常见的RTOS有uCOS、ChibiOS、FreeRTOS、RT-Thread等。今天我们要用来测试树莓派4的就是小而美的RT-Thread(简称RTT),他是国人自主开发并且是目前国内最广泛使用的开源RTOS。 ![](https://cf04.ickimg.com/bbsimages/202101/8ce5d11c3b3e73b46683e234c344ca65.jpg) RTT最近提供了树莓派4的板级支撑,我们可以从RTT源码的SBC目录找到树莓派4的分支。通过RTT系统,树莓派可以与其他主流的Cortex-M内核的单片机在相同的系统下进行跑分测试,这是件非常有趣的事情。于是便有了今天这个评测。 考虑到部分时间宝贵玩家没有时间看完全文,我们把重要的内容放在最前面汇报,直接说重点,树莓派4的测试成绩是 **3.772 DMIPS/MHz**。该计算速度达到了行业内领先水平。全剧终^_^!!!!! ![](https://cf04.ickimg.com/bbsimages/202101/e4a40f13fd8a50dd6ad57322ad5f8e25.jpg) 玩笑开大了,小伙伴们,我们收。 ## 2、编译环境搭建 树莓派的RTT系统在windows下使用RT-Studio作为IDE,编译环境通过ENV工具实现,其中编译器ARM GCC集成在ENV工具里。当然,您也可以像我一样自定义最小化搭建这个编译环境。 我先安装了[env工具](https://www.rt-thread.org/page/download.html)。注意前面那个“env工具”上的蓝色带下划线的超链接符号了吗?大家可以点进去下载了。env工具下载后解压到你喜欢的路径便可。 然后安装[gcc工具](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads)到env文件夹下的编译工具目录,我用的是gcc-arm-8.3-2019.03-i686-mingw32-aarch64-elf。发现这里的“gcc工具”又有超链接符号了吗?大家又可以点进去下载了。 接下来,把gcc-arm-8.3-2019.03-i686-mingw32-aarch64-elf解压出来放到env的工具目录里。完成后的路径应该是长这样(我特意在描述路径时省略了盘符和env上一级的目录,也许有的同学是放在program files目录,而有的同学是直接放在根目录): `env/tools/gnu_gcc/arm_gcc/gcc-arm-8.3-2019.03-i686-mingw32-aarch64-elf` 最后,下载RTT的源代码,命令如下: `git clone https://github.com/RT-Thread/rt-thread.git` RTT源码下载完毕后,进入rt-thread/bsp/raspberry-pi/raspi4-64路径,修改一下rtconfig.py文件,把EXEC_PATH的值修改到一直指到gcc-arm-8.3-2019.03-i686-mingw32-aarch64-elf下面的bin目录。然后,在当前路径下(raspi4-64)打开env,在env里输入scons回车。 如果你发现scons回车后编译报错信息如下,这表明环境搭建完成。至于怎么解决这个报错,后面我们再填坑。 ![](https://cf04.ickimg.com/bbsimages/202101/20c6562ad44e2629b24974a04f794930.jpg) 别走开,下面的第3小节教您修复方法。 ## 3、scons编译报错修复方法 也许你跟着RTT源码里的readme教程一步步做,也卡在scons这一步了,那么我的这一小节教程可以帮到您。 scons报错原理很简单,它与源代码被其他项目编译过有关。 解决的思路很简单,我们只需要先执行一下清理。 清理命令: `scons -c` 然后,你就可以正常使用scons编译了。 解决过程的截图如下: ![](https://cf04.ickimg.com/bbsimages/202101/99088c70e2bfe224dde1d3ec3642c9e8.jpg) 编译完成后会在raspi4-64目录生成一个rtthread.bin文件,把它放到树莓派系统TF卡的boot目录里,修改boot目录里的config.txt的内容为如下: `enable_uart=1` `arm_64bit=1` `kernel=rtthread.bin` `core_freq=250` 以上这个config.txt文件设置了串口调试和内核文件,并把主频设置为250MHz。会玩的小伙伴还可以把主频设置高一点。 ## 4、树莓派4串口调试使用方法 给树莓派的调试串口接上串口调试线,注意这里5V接口是不需要连接的,我们只使用GND、TX和RX。 ![](https://cf04.ickimg.com/bbsimages/202101/9c9d3fe88111681d9e2357762c553c97.jpg) 确保TF卡插好后,先把USB转串口模块插到电脑上,启动串口调试工具,然后给树莓派上电。注意树莓派上电在最后做,顺序不要反。你应该能在串口调试助手里看到下图的启动打印输出。我的这个RTT系统是新编译的,所以编译日期是今天,1月20日。串口调试打印如下图所示: ![](https://cf04.ickimg.com/bbsimages/202101/d753154aa5d41486b210a66af4aabb5d.jpg) ## 5、给RTT系统增加Dhrystone软件 下面我们回到RTT系统编译环境,重新制作一个带有性能跑分软件的系统。 在前面env环境里输入menuconfig回车进入RTT内核设置,在online packages里的tools packages里找到DHRYSTONE,按空格给他打上勾,如下图所示。 ![](https://cf04.ickimg.com/bbsimages/202101/fede49eb67d3c026c7440a5529313bc5.jpg) Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量。程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响。因此我们测试时候一定要把编译器版本和编译时候的优化级别也一起考虑,尽量不要把不同优化级别的程序放在一起比较。 另外,上图里另一个CoreMark也是个跑分软件,但是我测试有些问题,先不管那个CoreMark。 编译器设置文件在rtconfig.py,本次使用的gcc版本为8.3,如下图所示 ![](https://cf04.ickimg.com/bbsimages/202101/72366ade280176f855bc6b9e90d5fa18.jpg) 默认优化级别是O2,如下图所示,我们先用这个默认优化级别把Dhrystone的编译过程走通,后一小节再做O0级别优化的测试。 ![](https://cf04.ickimg.com/bbsimages/202101/bc4dc1bfbc3c71d876f743be9471911f.jpg) Dhrystone属于online package,没有集成在默认的源码里,需要在线下载,做完menuconfig以后还需要用命令pkgs update把Dhrystone的源码下载,如下图所示。**这步很重要,别忘了下载,不然白白让费编译时间**。 ![](https://cf04.ickimg.com/bbsimages/202101/9b6e084e29e138f4c335a12f7893fa93.jpg) 用scones命令编译出新的rtthread.bin,并放入树莓派的boot目录替换。这次启动后可以用help命令查看可以使用的命令,并找到dhrystone_test,如下图所示: ![](https://cf04.ickimg.com/bbsimages/202101/5ac6ee3d94af5440e41a899846575871.jpg) 跑一下试试,默认参数是循环320000次,如下图所示: ![](https://cf04.ickimg.com/bbsimages/202101/599afef5ef2363be372e694e43583865.jpg) 因为速度太快,来不及计时,所以测试失败,如下图所示: ![](https://cf04.ickimg.com/bbsimages/202101/5168fd106f8b09b9a65c134f8edc9647.jpg) 因此,接下来,我们要回去修改一下menuconfig的设置参数,给循环次数再多加两个0,如下图所示 ![](https://cf04.ickimg.com/bbsimages/202101/cd03bcbdca2b046fe7c0caa1d2d9db3e.jpg) 重新编译并替换内核文件后,测试结果如下,您只需要关注那个MIPS参数就可以了,这里是944。 ![](https://cf04.ickimg.com/bbsimages/202101/b116b9cef9646289a71065a4e0902df0.jpg) ## 5、Dhrystone跑分结果 正式跑分前,我们要把rtconfig.py文件里设置的RTT编译的优化级别改到O0,表示无优化,如下图所示。 ![](https://cf04.ickimg.com/bbsimages/202101/031225ce63eae47025295ce28f189e1a.jpg) 再次重新编译并替换内核文件后,测试结果如下: ![](https://cf04.ickimg.com/bbsimages/202101/08befee590ea4d7e06678008d2d3abe5.jpg) **我把测试结果划个重点**:**树莓派4,主频250MHz,C语言编译器版本gcc-arm-8.3,优化级别O0,跑分943 DMIPS**。 其中,DMIPS表示是Dhrystone测量的MIPS数值。 换算成每MHz的MIPS后是**3.772 DMIPS/MHz**,如下图所示: ![](https://cf04.ickimg.com/bbsimages/202101/ffd214789b000ba6e943a29f83f8947b.jpg) 我们常见的单片机,比如STM32系列的DMIPS/MHz数值大都在1左右。如基于Cortex M4核心的STM32F4和L4系列,根据ST官网数据,Cortex M4核心的STM32芯片的计算速度是1.25 DMIPS/MHz。也就是说一个80MHz的STM32F4单片机只有100 DMIPS的算力。而反观树莓派4,即使从1.5GHz降频到只有250MHz,算力仍然是STM32F4的9倍多。 ## 6、小结 通过今天的测试,我们可以发现树莓派4非常适合玩家们用于RT-Thread的研究和运行。它的性能比普通的单片机平台高很多,价格适宜,展现出很高的性价比。 如果你正准备开始RT-Thread的学习之旅,是买一块STM32开发板呢,还是树莓派4呢,相信您也有答案了。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
2
)
xukejing
擅长:其他应用
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交