编译 CanMV 固件

前言

上一章节中已经搭建好了基于 CanMV 的 C 开发环境,这么一来便可以进行基于 C 语言和 FreeRTOS 的应用开发或者编译基于 MicroPython 语法的应用开发方式所需的 CanMV 固件,本 章就将带领读者体验一下 CanMV 固件的编译流程。 本章分为如下几个小节: 5.1 CanMV 固件编译说明 5.2 获取 CanMV 源码 5.3 编译 CanMV 源码

CanMV 固件编译说明

CanMV 固件可由 CanMV 项目编译得到,如果读者对 CanMV 固件有裁剪或自定义功能的需 求,那么可根据本章介绍的内容,亲自编译 CanMV 固件。 但对于大部分读者,编译 CanMV 固件并不是必须的,因为在 A 盘→软件资料→软件 →CanMV 固件中提供了编译好的固件,读者可以直接使用。 因此,需不需要读者自行编译 CanMV 固件,完全由读者的实际情况决定,若以提供的固件 不能满足读者的使用需求,那遍需要自行编译 CanMV 固件。当然,自行编译 CanMV 固件,也 能对 CanMV 项目有更多的了解。

获取 CanMV 源码

CanMV 项目的开源地址为:https://github.com/kendryte/canmv.git,因此可以使用 Git 工具获 取 CanMV,在新安装的 Git 工具使用前需要先配置用户名和用户邮箱地址: # Linux git config --global user.name "Your user name" git config --global user.email "Your user email" 使用 Git 工具获取 CanMV 项目源码仓库: # Linux git clone https://github.com/kendryte/canmv.git WORKSPACE/canmv/ cd WORKSPACE/canmv/ git submodule update --init --recursive 获取到 CanMV 项目源码仓库后,查看仓库的 Tag: # Linux git tag -l 在列出的所有 Tag 中,找到最新的 Tag,然后切换到该 Tag,以 v1.0.5 为例: # Linux git checkout v1.0.5 至此,已经成功获取到最新发布的 CanMV 源码了,若读者后续有修改 CanMV 源码并提交 修改的需求,可以在此基础上创建一个分支: # Linux git switch -c dev 为方便读者使用,在 A 盘→软件资料→软件→CanMV 项目仓库压缩包中提供了 CanMV 项 目仓库的仅克隆无修改的压缩包(可能不是最新版本)。 关于 Git 工具软件的使用介绍不是本教程文档的重点,请读者在使用中遇到问题时,善用搜 索引擎。

编译 CanMV 源码

关于 CanMV 源码的编译,建议读者先详细阅读 CanMV 仓库下的 build.md 文档。 编译 CanMV 源码前,需要先安装一下 Python 依赖库: # Linux cd $WORKSPACE/canmv/ pip install -r requirements.txt

随后,读者请根据使用的板子,进入对应的工程目录下,对工程进行配置: # Linux cd projects/canmv_atk_dnk210/ python project.py \ --toolchain $TOOLS/kendryte-toolchain/bin \ --toolchain-prefix riscv64-unknown-elf- \ config

以上的配置,主要是配置编译工程所使用的工具链,如果读者有对 CanMV 固件功能裁剪或 自定的的需求,可以执行一下命令,然后对工程进行更加详细的配置: # Linux python3 project.py menuconfig 工程配置完成后,便可对工程进行编译: # Linux python project.py build 编译完成后,将在工程的 build 目录下生成 canmv.bin 文件,即 CanMV 固件。

相关推荐
AC赳赳老秦13 分钟前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
无名猿33 分钟前
C++ 查找算法:std::find 与容器成员 find 的性能差距
c++·性能优化·stl·标准库
程序猿编码1 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
朝朝辞暮i2 小时前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法
SHARK_pssm3 小时前
【C++——类和对象(下)】
开发语言·c++·经验分享·笔记
汉克老师4 小时前
GESP2026年9月认证C++二级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
沫璃染墨4 小时前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
可乐ea6 小时前
GitHub Security Lab 开源 Fuzzing Taskflow:让 LLM 智能体自己跑完 C/C++ 模糊测试
jvm·c++·github·模糊测试·mcp·代码agent·智能体自动化
朝朝辞暮i6 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法
无忧.芙桃7 小时前
C++语言原理与实践(十):vector类的底层实现
开发语言·c++·算法