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

保姆级教程:在Ubuntu 22.04上为嘉楠K230大小核分别编译CoreMark(附SConstruct文件详解)

保姆级教程在Ubuntu 22.04上为嘉楠K230大小核分别编译CoreMark附SConstruct文件详解嵌入式开发领域正迎来RISC-V架构的爆发式增长嘉楠科技推出的K230芯片凭借其独特的双核设计Linux小核与RT-Smart大核成为边缘计算的新宠。本文将带您从零开始在Ubuntu 22.04系统上完成CoreMark基准测试程序的交叉编译全流程深入解析SConstruct构建脚本的每个关键参数帮助开发者掌握RISC-V开发的精髓技巧。1. 环境准备与工具链配置1.1 基础环境搭建首先确保Ubuntu 22.04系统已更新至最新状态sudo apt update sudo apt upgrade -y安装SCons构建工具及其依赖项sudo apt install scons build-essential git wget提示建议使用SSD存储设备SDK下载和编译过程会产生大量临时文件机械硬盘可能导致编译时间显著延长。1.2 工具链获取与配置嘉楠K230采用差异化工具链设计需分别准备核心类型工具链名称C库类型适用场景小核Xuantie-900-gcc-linux-5.10.4-glibcglibcLinux应用开发大核riscv64-linux-musleabimusl实时系统开发下载工具链的两种方式通过SDK自动获取git clone https://github.com/kendryte/k230_sdk.git cd k230_sdk source tools/get_download_url.sh make prepare_sourcecode手动下载备用方案# 小核工具链 wget https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1659325511536/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0-20220715.tar.gz # 大核工具链 wget https://download.rt-thread.org/rt-smart/riscv64/riscv64-unknown-linux-musl-rv64imafdcv-lp64d-20230222.tar.bz22. CoreMark源码移植与改造2.1 获取基准代码从EEMBC官方仓库克隆最新CoreMarkgit clone https://github.com/eembc/coremark.git cd coremark2.2 关键文件移植复制并修改移植层文件cp simple/core_portme.* .需要修改的核心参数core_portme.h中的CLOCKS_PER_SEC需匹配K230计时器频率core_portme.c需实现以下关键函数void start_time(void) { /* 启动计时器 */ } void stop_time(void) { /* 停止计时器 */ } CORE_TICKS get_time() { /* 获取时钟计数 */ }3. SConstruct构建脚本深度解析3.1 小核Linux构建配置创建SConstruct.linux文件import os # 工具链路径配置 toolchain_path /opt/k230/toolchain/glibc/bin env Environment(ENV{PATH: f{os.environ[PATH]}:{toolchain_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)参数详解-marchrv64imafdcv启用向量指令扩展-mabilp64d双精度浮点ABI规范-mcmodelmedany4GB地址范围代码模型3.2 大核RT-Smart构建配置创建SConstruct.rt文件env Environment(tools[default, gcc]) # 特殊链接脚本配置 link_script /path/to/k230_sdk/rt-smart/linker_scripts/riscv64/link.lds env.Append(LINKFLAGS[ -T, link_script, -Wl,--whole-archive, -lrtthread, -Wl,--no-whole-archive, -static ]) # 库路径设置 env[LIBPATH] [ #/sdk/rt-thread/lib, #/sdk/lib/risc-v/rv64 ] env.Program(targetcoremark_rt.elf, sourceGlob(*.c))注意RT-Smart需要静态链接RT-Thread内核库--whole-archive确保所有符号被包含4. 编译执行与性能分析4.1 分核编译命令# 小核编译 scons -f SConstruct.linux # 大核编译 scons -f SConstruct.rt4.2 文件部署方式通过USB虚拟磁盘传输cp *.elf /media/$USER/CanMV/串口终端执行示例# 小核执行 chmod x coremark_linux.elf ./coremark_linux.elf # 大核执行 msh /sdcard/app ./coremark_rt.elf4.3 典型性能数据在800MHz小核和1.6GHz大核上的实测结果指标小核(glibc)大核(musl)CoreMark分数34334522CoreMark/MHz4.292.83编译优化级别O3O2性能差异主要来自musl库的轻量级特性牺牲部分性能RT-Smart实时系统的调度开销大核默认运行在低功耗模式
http://www.gsyq.cn/news/1398899.html

相关文章:

  • 2026采购指南:饮用水PFAS去除设备厂家汇总推荐 - 栗子测评
  • 2026年靠谱的大连企业空气能供暖/空气能/大连空气能取暖销售设备供应商 - 品牌宣传支持者
  • 嵌入式工程师避坑指南:OV5640摄像头寄存器配置,这5个关键点新手最容易出错
  • 别再手动调滑块了!用ScriptableObject为Unity角色表情BlendShape打造一个可视化编辑管理器
  • 别再只用Animator了!用Unity序列帧动画制作角色,为你的2D跑酷游戏减负
  • 独立开发者选用Taotoken Token Plan套餐实现成本精细化管理
  • DOM 实战案例:无限滚动、懒加载与富文本安全
  • 2026工业大风扇厂家推荐:工业吊扇生产厂家+大吊扇厂家推荐名录 - 栗子测评
  • 告别双系统安装焦虑:保姆级图解ThinkPad Win10+Ubuntu分区与引导修复全流程
  • 终极指南:如何在香橙派AIPRO上部署DeepSeek-R1-Distill-Qwen-7B量化模型
  • 2026蒸发冷省电空调厂家推荐:车间通风降温公司+车间降温设备厂家推荐精选 - 栗子测评
  • CANN/ops-nn HardShrink算子
  • 三步搞定iPhone抢购难题:Apple Store预约助手实战指南
  • 别再只调PID了!深入浅出聊聊IMU姿态解算中的‘互补滤波’思想
  • 城市规划师必备:如何用ArcGIS插件高效评估区域风环境(迎风面密度保姆级教程)
  • 2026年附近的装修公司/绵阳全包装修公司/绵阳老房改造装修公司本地热门榜 - 品牌宣传支持者
  • ResourcesSaverExt:如何一键批量下载网页资源并保持原始目录结构
  • 如何用LSPosed构建模块化Android Hook框架:从理解到实战
  • 从TRPO到PPO:OpenAI如何用‘Clipping’技巧让强化学习训练更稳定?
  • 从Demo跑通到项目实战:海康工业相机(HIK)在Visual Studio中的完整开发流程拆解
  • 别再只做目标检测了!试试用YOLOv8和CLIP给你的检测结果打上语义标签
  • 锌铝合金产品定制哪家好?2026锌合金零配件压铸/铝合金零配件压铸厂家推荐 - 栗子测评
  • InsForge API网关完整指南:如何配置请求转发与智能速率限制
  • ArabianGPT-0.3B-QA vs 传统问答模型:为什么3亿参数模型能实现更高效率?
  • 为什么83%的制造企业AI Agent项目卡在POC阶段?一线交付总监吐露3个未公开的失败根因
  • 一文读懂GGUF格式:Agent-STAR-RL-7B-i1量化模型的存储与加载原理
  • CANN算子注册表访问器库
  • 认知无线电入门:不懂复杂公式?用能量检测法快速理解频谱感知核心
  • ICode竞赛Python一级通关秘籍:用变量控制飞船和角色,保姆级代码逐题解析
  • 从Velodyne到图像:手把手教你用Python解析KITTI点云与图像数据(附代码)