【STM32MP135F-DK】核心功能评估
本帖最后由 fangkaixin 于 2023-12-17 22:03 编辑<div>在上一期中,我们对STM32MP135F-DK探索套件进行了简单的开箱和亮机测试,熟悉了开发环境,并且结合当前的开发环境(基于win10+wsl2)下载安装了必要的工具和软件。这一期里将使用下载好的SDK,对这块板子进行初步的调试与开发,并且完成处理器性能测试与评估。</div>
<p><span style="font-size:18px;"><strong>安装SDK</strong></span></p>
<p>将下载好的SDK包放到WSL2虚拟机中并解压,我的WSL2虚拟机就作为后续HOST开发环境,用的是Ubuntu20.04<br />
<br />
在线安装其他需要用到的包,并且扩展mmc为16个分区,为编译系统内核做准备。如果只是开发应用程序,可以忽略这一步</p>
<pre>
<code class="language-bash">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</code></pre>
<p> </p>
<p><span style="font-size:18px;"><strong>解压SKD包</strong></span><br />
<br />
进入到解压好的文件夹下,执行里面的shell脚本安装SDK<br />
<br />
需要注意的是,安装过程中会提示修改路径,我选择的默认路径(输入Y后回车),大家也可以存放在自己想要的路径下。安装成功后有一个提示,当在一个新的窗口下使用SDK,需要执行SDK里提供的一个脚本来配置当前窗口的环境变量。我怕自己搞忘了,就把这个脚本添加profile文件里,这样就不用每次手动刷环境变量了。<br />
SDK目录结构<br />
<br />
先打开脚本文件确认下确实是用来export各种环境变量的<br />
<br />
查看当前环境变量测试一下<br />
<br />
加入到当前用户的.profile下(~/.profile),或者直接加到系统profile下也可以(/etc/profile)<br />
<br />
重启WSL2虚拟机,新建一个shell,发现SDK中的路径已经包含在PATH中,说明执行生效了<br />
</p>
<p><span style="font-size:18px;"><strong>应用程序测试:交叉编译hello-world样例</strong></span><br />
ST官方wiki文档提供了hello-world样例程序<br />
<br />
<br />
这里由于当前用户下的环境变量都已经设置好了,$(CC)就指代了交叉编译工具链,make之后就得到了aarch64下的应用程序的可执行文件<br />
</p>
<p><span style="font-size:18px;"><strong>远程连接</strong></span></p>
<div>下一步就是将可执行程序导入到开发板中运行,使用ssh远程到开发板即可,ssh服务是默认系统中就自带的,不需要修改配置,登录名为root,无密码。</div>
<p>(1)连接网线,开发板的ETH1,ETH2丝印下的网口分别对应系统中的eth0,eth1网卡,我这里将ETH1连到家里的交换机上,使之和开发用的PC在同一个局域网中</p>
<p></p>
<p>(2)配置ip地址,使开发板和PC互通</p>
<p><br />
<br />
wsl2也可以ping通开发板<br />
</p>
<p>(3)通过ssh连接,ssh服务已默认开启,而且可以通过root用户免密登录,但比较奇怪的是我在文件系统中找了一下,没有找到ssh的配置文件。<br />
用putty进行ssh连接测试:<br />
<br />
<br />
</p>
<p>(4)到wsl2中拷贝编译好的应用程序到开发板中运行</p>
<p> </p>
<div>(5)在开发板中运行</div>
<div> </div>
<div>效果如下</div>
<div></div>
<p><span style="font-size:18px;"><strong>处理器性能评估</strong></span></p>
<p><strong>(1)Dhrystone基准测试:</strong><br />
背景介绍:Dhrystone基准测试是通过执行一系列的算术、逻辑和字符串操作来评估计算机系统的整体性能。测试的结果是每秒钟可以执行的Dhrystone指令数量,即DMIPS(Dhrystone Million Instructions Per Second)。将Dhrystones per second除以1757是为了将结果转换为DMIPS的单位。这个常数1757是经验性的值,用来使得DMIPS的范围在可读性良好的范围内。这样,DMIPS的数值通常比较容易理解和比较。需要注意的是,DMIPS只是一个基准测试的指标,它并不一定完全反映实际应用的性能。在实际情况下,还需要考虑其他因素,如处理器架构、缓存、内存等等。因此,在进行性能比较时,不仅仅依靠DMIPS是不够的,还需要综合考虑其他因素。<br />
github下载源码,交叉编译后将可执行文件拷贝到开发板执行,编译优化参数设置为O2级别<br />
<br />
(不需要改代码的同学可以直接在板子上在线安装:apt install dhrystone)<br />
<br />
执行测试程序:<br />
echo 50000000 | ./dhrystone<br />
下面贴一下测试结果</p>
<pre>
<code class="language-ini">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: 7
should be: 7
Arr_2_Glob: 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</code></pre>
<p>BogoMIPS(参考)</p>
<p> </p>
<p><strong>(2)sysbench多线程性能测试</strong><br />
安装:apt install sysbench<br />
测试4个线程结果如下<br />
</p>
<p><strong>(3)DDR性能测试</strong></p>
<div></div>
<div> </div>
<div>整体来看,STM32MP135F-DK 在仅有一颗单核心32位,最大主频1Ghz的Cortex-A7处理器,linux中的性能表现还是不错的</div>
页:
[1]