【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
最新版本,顶层结构如下所示:
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并回车,可以看到如下输出:
输入list并回车,可以看到如下输出:
1.2 下载AiBurn
AiBurn工具的安装包位于这个代码仓中:
https://gitee.com/artinchip/tools
网页上可以看到,有如下文件:
其中,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。
2.2 编译闪存映像文件
选择默认配置之后,就可以编译代码了,使用如下命令进行编译:
scons -j 16
其中,-j 16表示16个并发任务,实际数字可以根据PC的CPU核数自行调整。
编译成功后,可以看到最后的输出如下:
可以看到生成了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就可以识别到设备了,如下图所示:
其中,蓝色文字“ArtInChip设备已连接”,即表示已经成功识别到设备。
此时,点击“开始”,即可进行烧写。
烧写过程中会显示进度、速率、用时,如下图所示:
烧写成功后,可以看到结果显示绿色的 SUCCESS,如下图所示:
三、编译运行CoreMark程序
3.1 打开CoreMark配置项
Luban-lite代码仓中默认包含了CoreMark软件包,默认没有打开相应的编译配置。
手动开启CoreMark编译配置后,即可编译CoreMark程序。
在Env命令行窗口中,输入menuconfig命令,打开配置界面,依次进入如下配置项:
→ Local packages options → Third-party packages options → BenchMark Tests
界面如下:
按空格选中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源码参与了编译:
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测试。
执行完成后,可以看到结果如下:
跑分为1565分。
3.4 修改编译优化选项
Luban-lite选择昆仑派配置时,默认的编译选项保存在如下文件中:
./bsp/artinchip/sys/d13x/rtconfig.py
可以看到默认的编译优化选项为-O2:
如果想单独修改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" 向编译器传递宏定义,用于运行时输出编译优化选项;
再次重新编译、烧写、运行,可以看到如下输出:
跑分1636,比默认的多了70分。
作为对比,我们可以去CoreMark分数记录网页上查询到STM32H7系列的几个分数:
可以看到,匠心创D133的成绩介于STM32H7B3和STM32H743之间。
四、参考链接
- D13x数据手册: https://aicdoc.artinchip.com/out/download-doc/D13x_Datasheet.pdf
- D13x用户手册: https://aicdoc.artinchip.com/out/download-doc/D13x_User_Manual.pdf
- D13x硬件指南: https://aicdoc.artinchip.com/out/download-doc/D13x Hardware Guide.pdf
- D133CBS RISC-V KunLun Pi 开发板硬件说明书: https://www.artinchip.com/upload/files/article/20240411/17128248847561509.pdf
- CoreMark分数查询页面: https://www.eembc.org/coremark/scores.php