当前位置: 首页 > news >正文

保姆级教程:在Ubuntu 22.04上用SCons为CanMV K230大小核交叉编译CoreMark(附完整SConstruct文件)

保姆级教程在Ubuntu 22.04上为CanMV K230交叉编译CoreMark全流程解析当拿到一块搭载RISC-V双核处理器的开发板时如何快速验证其计算性能CoreMark作为嵌入式领域的标准基准测试能直观反映处理器核心的整数运算效能。本文将手把手带你完成从工具链配置到性能分析的全过程特别针对CanMV K230的大小核异构架构提供完整解决方案。1. 环境准备与工具链配置工欲善其事必先利其器。在开始编译前我们需要搭建完整的开发环境。Ubuntu 22.04 LTS作为稳定的开发平台配合SCons构建工具能显著提升编译效率。1.1 基础环境搭建首先确保系统已更新至最新状态sudo apt update sudo apt upgrade -y安装必要的开发工具链sudo apt install -y build-essential git wget python3-pipSCons作为Python-based的构建工具可通过pip安装最新版本pip install scons1.2 获取专用工具链CanMV K230采用大小核设计需要分别配置不同的工具链核心类型工具链名称C库类型适用场景大核riscv64-linux-musleabiMusl实时任务处理小核Xuantie-900-gcc-linux-glibcglibc通用Linux应用获取官方SDK包git clone https://github.com/kendryte/k230_sdk.git cd k230_sdk source tools/get_download_url.sh make prepare_sourcecode工具链路径说明大核工具链toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin小核工具链toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin提示建议将工具链路径加入系统PATH环境变量方便后续调用2. CoreMark源码获取与移植2.1 下载基准测试代码从EEMBC官方仓库获取最新CoreMark源码git clone https://github.com/eembc/coremark.git cd coremark2.2 移植适配工作CoreMark需要针对特定平台进行移植主要修改以下文件复制模板文件cp simple/core_portme.* .关键修改点实现portable_init()函数初始化硬件环境配置CLOCKS_PER_SEC匹配处理器频率调整ITERATIONS参数确保测试时长适中注意K230大小核时钟频率不同大核典型值为1.6GHz小核为800MHz3. SCons构建系统深度配置SCons的灵活性让我们可以针对不同核心定制编译选项。下面分别展示大小核的配置策略。3.1 小核glibc环境配置创建SConstruct.linux文件import os env Environment(ENV{PATH: os.environ[PATH]}) # 工具链配置 env[CC] riscv64-unknown-linux-gnu-gcc env[LINK] $CC # 关键编译参数 env.Append(CCFLAGS[ -O3, -marchrv64imafdcv, -mabilp64d, -mcmodelmedany ]) # 源文件处理 src_files Glob(*.c) env.Program(targetcoremark_linux.elf, sourcesrc_files)3.2 大核musl环境配置创建SConstruct.rt文件env Environment(tools[default, gcc]) # 特殊链接脚本配置 link_script /path/to/link.lds env.Append(LINKFLAGS[ -T, link_script, -static, -Wl,--whole-archive, -lrtthread, -Wl,--no-whole-archive ]) # 性能优化选项 env.Append(CCFLAGS[ -O3, -fno-common, -funroll-loops ]) env.Program(targetcoremark_rt.elf, sourceGlob(*.c))编译参数深度解析-marchrv64imafdcv启用向量指令扩展-mabilp64d双精度浮点ABI规范-mcmodelmedany中等代码模型限制4. 编译执行与性能分析4.1 交叉编译实战分别针对大小核进行编译小核编译命令scons -f SConstruct.linux大核编译命令scons -f SConstruct.rt常见问题解决方案头文件缺失错误env.Append(CPPPATH[/path/to/include])链接库找不到env.Append(LIBPATH[/path/to/libs]) env.Append(LIBS[pthread])4.2 测试结果解读将生成的elf文件通过SD卡或网络传输到开发板执行小核执行示例./coremark_linux.elf典型输出解析2K performance run parameters for coremark. CoreMark 1.0 : 3433 / GCC8.3.0 -O3 -marchrv64imafdcv性能指标计算小核800MHz得分3433 → 4.29 CoreMark/MHz大核1.6GHz得分8368 → 5.23 CoreMark/MHz与同类RISC-V核心对比处理器型号频率CoreMark/MHz玄铁C9061GHz3.40玄铁C908小核800MHz4.29玄铁C908大核1.6GHz5.23StarFive U741.2GHz5.095. 高级优化技巧5.1 编译参数调优尝试不同优化级别的影响优化级别小核得分大核得分代码大小-O01.822.15最小-O13.454.1215%-O24.014.9825%-O34.295.2340%-Os3.924.8510%5.2 内存布局优化通过修改链接脚本提升缓存命中率MEMORY { ITCM (rwx) : ORIGIN 0x80000000, LENGTH 64K DTCM (rw) : ORIGIN 0x90000000, LENGTH 128K }5.3 多线程测试虽然标准CoreMark是单线程测试但我们可以扩展为多核测试#define USE_PTHREAD #include pthread.h void* benchmark_thread(void* arg) { coremark_main(); return NULL; }在K230上启动双核测试taskset -c 0 ./coremark_linux.elf \ taskset -c 1 ./coremark_linux.elf
http://www.gsyq.cn/news/1402537.html

相关文章:

  • 从问答到执行:Claude Code如何实现一键式智能安全审计
  • 别再傻傻分不清了!5分钟搞懂HTTPS证书里的‘发证机构’和‘网站主体’到底是谁
  • 使用容器提供postgresql RESTful API服务 - Fan
  • 破解百度网盘限速困局:baidu-wangpan-parse技术指南
  • 别再只会updateTopic了!RocketMQ 5.1.1 Topic管理命令实战:从创建、监控到删除的完整操作流
  • 基于物理层网络编码的虫洞攻击检测:原理、实现与工程实践
  • 构建容错性强的AI应用时如何借助Taotoken的路由与容灾能力
  • 别再死记硬背了!用这3个真实项目案例,帮你彻底搞懂PERT图、关键路径和浮动时间
  • 5分钟快速上手:国家中小学智慧教育平台电子课本下载终极指南
  • 终极指南:3步掌握AlwaysOnTop窗口置顶工具提升多任务效率
  • 【力扣100题】53.最长回文子串
  • UML/OCL模型到Z/PVS形式化验证:提升CPS设计可靠性的工程实践
  • 对比直接使用厂商API,通过聚合平台管理多Key的便利性感受
  • 5分钟掌握RePKG:Wallpaper Engine资源提取与转换神器
  • StreamFX插件终极指南:为OBS Studio注入专业视觉特效
  • Squirrel-RIFE:高性能视频补帧解决方案,让每一帧都流畅如丝
  • WeChatMsg终极指南:如何完整备份微信聊天记录并永久保存你的数字记忆
  • 3步搞定Nginx配置美化:新手也能快速上手的终极指南
  • 魔兽世界API与宏命令工具:终极免费指南与实用技巧
  • 手把手教你用BES Audio Developer工具在线调试通话降噪(以2MIC_NS7和RX_NS3为例)
  • SunnyUI:让C WinForm开发变得简单高效的终极UI解决方案
  • UE4项目里想给道具加个‘选中光环’?用Post Process Volume五分钟搞定(附免费闪烁材质)
  • 融合社交与文本的推荐系统:Word2Vec与重叠社区检测的工程实践
  • DW02KA 高精度内置MOSFET锂电池保护电路
  • 超市机器人连续跑一个月不迷路?聊聊高仙那篇Lifelong SLAM论文里的‘地图保鲜’秘诀
  • ECDICT:为什么说这是开发者必备的免费英汉词典数据库?
  • 如何通过3个步骤快速实现公网IP地址查询:全面实践指南
  • Keil MDK安装与配置全攻略:从软件下载、破解到V5编译器设置一步到位
  • 基于MCP协议自建DORA指标仪表盘:从数据驱动到效能闭环
  • 26-cv-3811、26-cv-3111、26-cv-2955 NASCAR 纳斯卡赛车、北美赛车巨头商标维权。被告店铺200家!有在卖的店铺咨询我们有全部名单!