本帖最后由 xusiwei1236 于 2024-7-6 18:48 编辑

【D133CBS RISC-V KunLun Pi】昆仑派开发板CoreMark编译运行

一、搭建开发环境

昆仑派开发板的开发环境搭建只依赖于两个工具,分别是:

  • Luban-lite 匠心创RTOS SDK及开发环境
  • AiBurn 匠心创镜像烧写工具

1.1 下载Luban-lite

使用git命令下载Lunban-lite代码仓:

git clone https://gitee.com/artinchip/luban-lite.git

最新版本,顶层结构如下所示:

181201o5w9awh521m59y9y

Luban-lite 代码仓中包含:

  • 匠心创RTOS SDK代码;
  • RT-Thread Env环境
  • 平头哥的RISC-V交叉编译工具链;

因此,下载这个代码仓之后,无需再下载其他工具(以及配置环境变量)就可以直接进行代码编译了,非常方便!

下载完成后,双击 win_env.bat 脚本,将会打开RT-Thread Env命令行,除了RT-Thread Env自带的 scons、menuconfig命令之外,匠心创团队另外添加了一些命令:

  • list 查看defconfig配置列表;
  • lunch 选择一个defconfig作为编译配置;
  • h 查看匠心创添加的命令列表;

例如,输入h并回车,可以看到如下输出:

181201rv2va2r34rvu87uv

输入list并回车,可以看到如下输出:

181201rlkh9vq7kvxkkgkh

1.2 下载AiBurn

AiBurn工具的安装包位于这个代码仓中:

https://gitee.com/artinchip/tools

网页上可以看到,有如下文件:

181202lz3d306dvzw66yxr

其中,AiBurn有1.3.6和1.4.1两个版本的安装包,随意下载一个安装即可。网页端下载即可,安装按照向导提示下一步即可,不再赘述。

二、编译烧录运行

2.1 选择默认配置

上一节中的list命令用于选择一个defconfig文件,作为后续开发的基础配置。

defconfig,一般视为default configuration,也就是默认配置的英文简写。

由于AiBurn工具只能烧录.img文件,而带有baremetal的配置项最终只能生成.elf文件。

因此,默认情况下,我们手中的昆仑派开发板只能选择(具体编号参考上面的list输出):

13. d13x_kunlunpi88-nor_rt-thread_helloworld

也就是:

lunch 13

或者:

scons --apply-def=13

PS: 编译裸机需要单独下载匠心创的baremetal SDK,而不是Luban-lite。

181202havm4mkp1vpn7w3p

2.2 编译闪存映像文件

选择默认配置之后,就可以编译代码了,使用如下命令进行编译:

scons -j 16

其中,-j 16表示16个并发任务,实际数字可以根据PC的CPU核数自行调整。

编译成功后,可以看到最后的输出如下:

181202h062t8l88k2ulkss

可以看到生成了img文件:

E:\Opensource\artinchip\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/d13x_kunlunpi88-nor_v1.0.0.img

2.3 烧写闪存映像文件

生成img文件后,需要使用AiBurn工具可以将其烧写到昆仑派开发板上。

使用AiBurn进行烧写之前,需要让开发板进入下载模式,具体方法如下:

  • 按住开发板的uboot键,将其与PC通过USB线连接;

或者:

  • 先将昆仑派开发板与PC通过USB线连接;
  • 按住uboot键;
  • 短按reset键;
  • 松开uboot键;

进入下载模式后,AiBurn就可以识别到设备了,如下图所示:

181203dxap0is13p5kk0i9

其中,蓝色文字“ArtInChip设备已连接”,即表示已经成功识别到设备。

此时,点击“开始”,即可进行烧写。

烧写过程中会显示进度、速率、用时,如下图所示:

181203d71ccqk5okkao7is

烧写成功后,可以看到结果显示绿色的 SUCCESS,如下图所示:

181203wuzryopuluei8py5

三、编译运行CoreMark程序

3.1 打开CoreMark配置项

Luban-lite代码仓中默认包含了CoreMark软件包,默认没有打开相应的编译配置。

手动开启CoreMark编译配置后,即可编译CoreMark程序。

在Env命令行窗口中,输入menuconfig命令,打开配置界面,依次进入如下配置项:

→ Local packages options → Third-party packages options → BenchMark Tests

界面如下:

181204vcd6ay1adoou16tn

按空格选中COREMARK配置开关,左右移动光标到Save上,回车保存。

3.2 编译CoreMark源代码

接下来,执行如下命令:

cp .config target\configs\d13x_kunlunpi88-nor_rt-thread_helloworld_defconfig

将 .config 内容拷贝到 d13x_kunlunpi88-nor_rt-thread_helloworld_defconfig 文件中;

PS:因为scons 构建时会将 d13x_kunlunpi88-nor_rt-thread_helloworld_defconfig 拷贝到 .config,因此需要这一步拷贝,否则刚刚menuconfig进行的修改将会被覆盖掉。

此时,执行 scons -j 16,可以看到coremark源码参与了编译:

181204sybwbffz5q55jo0z

3.3 执行CoreMark测试

Luban-lite中的CoreMark软件包,默认会通过RT-Thread的命令注册宏注册为finsh命令,具体代码位于packages\third-party\benchmark\coremark\core_main.c文件中:

MSH_CMD_EXPORT(test_coremark, "Coremark benchmark")

因此,编译成功、重新烧写映像文件后,可以通过串口输入如下命令:

test_coremark

执行CoreMark测试。

执行完成后,可以看到结果如下:

181204fabkuuqhpquqprbm

跑分为1565分。

3.4 修改编译优化选项

Luban-lite选择昆仑派配置时,默认的编译选项保存在如下文件中:

./bsp/artinchip/sys/d13x/rtconfig.py

可以看到默认的编译优化选项为-O2:

181205d1lass17s175isls

如果想单独修改CoreMark软件包的编译优化选项,可以修改如下文件:

packages\third-party\benchmark\coremark\SConscript

具体修改内容为:

diff --git a/packages/third-party/benchmark/coremark/SConscript b/packages/third-party/benchmark/coremark/SConscript
index 5a8d970b0..f04a46094 100644
--- a/packages/third-party/benchmark/coremark/SConscript
+++ b/packages/third-party/benchmark/coremark/SConscript
@@ -8,7 +8,7 @@ src     = Glob('*.c')

path    = [cwd + '/']

-LOCAL_CCFLAGS = ''
+LOCAL_CCFLAGS = '-Ofast -DCOMPILER_FLAGS=\\"-Ofast\\"'

group = DefineGroup('coremark', src, depend = ['LPKG_USING_COREMARK'], CPPPATH = path, LOCAL_CCFLAGS = LOCAL_CCFLAGS)

其中,通过 LOCAL_CFLAGS向编译器传递了两个编译选项,作用分别为:

  • -Ofast 指定编译优化选项为 -Ofast;
  • -DCOMPILER_FLAGS="-Ofast" 向编译器传递宏定义,用于运行时输出编译优化选项;

再次重新编译、烧写、运行,可以看到如下输出:

181205yii0rdddik10klk0

跑分1636,比默认的多了70分。

作为对比,我们可以去CoreMark分数记录网页上查询到STM32H7系列的几个分数:

181205lfxqvhjx3x1qjdch

可以看到,匠心创D133的成绩介于STM32H7B3和STM32H743之间。

四、参考链接