在上一期中,我们对STM32MP135F-DK探索套件进行了简单的开箱和亮机测试,熟悉了开发环境,并且结合当前的开发环境(基于win10+wsl2)下载安装了必要的工具和软件。这一期里将使用下载好的SDK,对这块板子进行初步的调试与开发,并且完成处理器性能测试与评估。
- 安装SDK
将下载好的SDK包放到WSL2虚拟机中并解压,我的WSL2虚拟机就作为后续HOST开发环境,用的是Ubuntu20.04
在线安装其他需要用到的包,并且扩展mmc为16个分区,为编译系统内核做准备。如果只是开发应用程序,可以忽略这一步
sudo apt-get update
sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib chrpath socat cpio python3 python3-pip python3-pexpect
sudo apt-get install libssl-dev libgmp-dev libmpc-dev lz4 zstd
sudo apt-get install build-essential libncurses-dev libyaml-dev libssl-dev
sudo apt install python-is-python3
sudo apt-get install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html libxml2-utils
echo 'options mmc_block perdev_minors=16' > /tmp/mmc_block.conf
sudo mv /tmp/mmc_block.conf /etc/modprobe.d/mmc_block.conf
解压SKD包
进入到解压好的文件夹下,执行里面的shell脚本安装SDK
需要注意的是,安装过程中会提示修改路径,我选择的默认路径(输入Y后回车),大家也可以存放在自己想要的路径下。安装成功后有一个提示,当在一个新的窗口下使用SDK,需要执行SDK里提供的一个脚本来配置当前窗口的环境变量。我怕自己搞忘了,就把这个脚本添加profile文件里,这样就不用每次手动刷环境变量了。
SDK目录结构
先打开脚本文件确认下确实是用来export各种环境变量的
查看当前环境变量测试一下
加入到当前用户的.profile下(~/.profile),或者直接加到系统profile下也可以(/etc/profile)
重启WSL2虚拟机,新建一个shell,发现SDK中的路径已经包含在PATH中,说明执行生效了
- 应用程序测试:交叉编译hello-world样例
ST官方wiki文档提供了hello-world样例程序
这里由于当前用户下的环境变量都已经设置好了,$(CC)就指代了交叉编译工具链,make之后就得到了aarch64下的应用程序的可执行文件
- 远程调试环境
下一步就是将可执行程序导入到开发板中运行,使用ssh远程到开发板即可,ssh服务是默认系统中就自带的,不需要修改配置,登录名为root,无密码。
- 连接网线,开发板的ETH1,ETH2丝印下的网口分别对应系统中的eth0,eth1网卡,我这里将ETH1连到家里的交换机上,使之和开发用的PC在同一个局域网中
- 配置ip地址,使开发板和PC互通
wsl2也可以ping通开发板
- 通过ssh连接,ssh服务已默认开启,而且可以通过root用户免密登录,但比较奇怪的是我在文件系统中找了一下,没有找到ssh的配置文件。
用putty进行ssh连接测试:
- 可以正常通信,到wsl2中拷贝编译好的应用程序到开发板中运行
ssh到开发板中运行
效果如下
- 处理器性能评估
- Dhrystone基准测试:
背景介绍:Dhrystone基准测试是通过执行一系列的算术、逻辑和字符串操作来评估计算机系统的整体性能。测试的结果是每秒钟可以执行的Dhrystone指令数量,即DMIPS(Dhrystone Million Instructions Per Second)。将Dhrystones per second除以1757是为了将结果转换为DMIPS的单位。这个常数1757是经验性的值,用来使得DMIPS的范围在可读性良好的范围内。这样,DMIPS的数值通常比较容易理解和比较。需要注意的是,DMIPS只是一个基准测试的指标,它并不一定完全反映实际应用的性能。在实际情况下,还需要考虑其他因素,如处理器架构、缓存、内存等等。因此,在进行性能比较时,不仅仅依靠DMIPS是不够的,还需要综合考虑其他因素。
github下载源码,交叉编译后将可执行文件拷贝到开发板执行,编译优化参数设置为O2级别
(不需要改代码的同学可以直接在板子上在线安装apt install dhrystone)
执行
echo 50000000 | ./dhrystone
下面贴一下测试结果
Please give the number of runs through the benchmark:
Execution starts, 50000000 runs through Dhrystone
Execution ends
Final values of the variables used in the benchmark:
Int_Glob: 5
should be: 5
Bool_Glob: 1
should be: 1
Ch_1_Glob: A
should be: A
Ch_2_Glob: B
should be: B
Arr_1_Glob[8]: 7
should be: 7
Arr_2_Glob[8][7]: 50000010
should be: Number_Of_Runs + 10
Ptr_Glob->
Ptr_Comp: 90832
should be: (implementation-dependent)
Discr: 0
should be: 0
Enum_Comp: 2
should be: 2
Int_Comp: 17
should be: 17
Str_Comp: DHRYSTONE PROGRAM, SOME STRING
should be: DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
Ptr_Comp: 90832
should be: (implementation-dependent), same as above
Discr: 0
should be: 0
Enum_Comp: 1
should be: 1
Int_Comp: 18
should be: 18
Str_Comp: DHRYSTONE PROGRAM, SOME STRING
should be: DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc: 5
should be: 5
Int_2_Loc: 13
should be: 13
Int_3_Loc: 7
should be: 7
Enum_Loc: 1
should be: 1
Str_1_Loc: DHRYSTONE PROGRAM, 1'ST STRING
should be: DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc: DHRYSTONE PROGRAM, 2'ND STRING
should be: DHRYSTONE PROGRAM, 2'ND STRING
Register option selected? YES
Microseconds for one run through Dhrystone: 0.3
Dhrystones per Second: 3851526.1
VAX MIPS rating = 2192.104
- sysbench多线程性能测试
安装:直接apt install sysbench
测试4个线程结果如下
- DDR性能测试
本文来自论坛,点击查看完整帖子内容。