本帖最后由 xhackerustc 于 2024-5-1 19:20 编辑
据官方datasheet,ESP32C6的主cpu是四级流水线支持160MHZ频率,RV32IMAC指令集,有32位乘法器和32位除法器。熟悉esp32c3的同学会发现这和esp32c3主cpu大体很像阿,所以一个问题是:抛开其它不谈,就主cpu性能来讲,它们两咋样?版上有位兄弟的帖子很好的回答了这个问题【FireBeetle 2 ESP32 C6】几种esp32性能对比测试。咱也跟着做做cpu性能pk,选用benchmark是coremark,不过手里板子只有esp32c3和esp32c6,比较穷。
大概在去年esp官方把coremark移植后加进idf-extra-components,所以这次比较幸福不用移植了。
cd /tmp
idf.py create-project-from-example "espressif/coremark:coremark_example"
这会在/tmp目录下生成一个名叫coremark_example的idf project,咱们配置一下:
cd /tmp/coremark_example
idf.py set-target esp32c6
idf.py menuconfig
menuconfig界面注意把console output改成USB Serial/JTAG Controller,-Og改成-O2, 具体改法可以参见本人第一篇测评贴 [FireBeetle 2 ESP32C6开发板]linux下开发环境搭建,这里不再叙述。flash大小和模式可改可不改,因为coremark比较特别,是全放进sram中运行的,所以flash用DIO还是QIO没区别。然后coremark_example中override了一些CFLAGS,比如用了-O3,所以前面的-Og改-O2也可以不改。
编译与烧录
idf.py build
esptool.py -p /dev/ttyACM0 --chip esp32c6 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode qio --flash_size 4MB --flash_freq 80m 0x10000 build/coremark_example.bin
串口终端打开板子usb虚拟cdc串口/dev/ttyACM0,过一会串口输出如下:
CoreMark Size : 666
Total ticks : 13661
Total time (secs): 13.661000
Iterations/Sec : 439.206500
Iterations : 6000
Compiler version : GCC13.2.0
Compiler flags : -ffunction-sections -fdata-sections -gdwarf-4 -ggdb -nostartfiles -nost
artfiles -O2 -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std
=gnu17 -O3 -fjump-tables -ftree-switch-conversion
Memory location : IRAM
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0xa14c
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 439.206500 / GCC13.2.0 -ffunction-sections -fdata-sections -gdwarf-4 -ggdb
-nostartfiles -nostartfiles -O2 -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-swi
tch-conversion -std=gnu17 -O3 -fjump-tables -ftree-switch-conversion / IRAM
CPU frequency: 160 MHz
I (16259) main_task: Returned from app_main()
所以160MHZ频率下获得了439 Iterations/Sec。我们可以重复上述步骤在esp32c3上测下coremark,唯一区别就是idf选target时参数是esp32c3,其它步骤一样,这里不再重复步骤,只把数据贴出作为对比:esp32c3在160MHZ频率下获得了407 Iterations/Sec。所以esp32c6的cpu比esp32c3强了一些,略有提升,也交叉验证了上面兄弟的性能测试帖子中的结论。